[fpc-devel] serial under linux, SerOpen blocks
Armin Diehl
ad at ardiehl.de
Thu Aug 18 11:34:00 CEST 2011
Hi Peter,
that is the same as in the standard serial.pp:
Result := fpopen(DeviceName, O_RDWR or O_NOCTTY);
and this fpopen will block as long as minicom is not started on that
device.
On 08/18/2011 11:10 AM, peter green wrote:
> Armin Diehl wrote:
>> I need some hint regarding opening a serial (ttyUSB) port using the
>> unit serial. Minicom works fine under my user id. When i call
>> SerOpen('/dev/ttyUSB0'), fpopen blocks forever. When i first start
>> minicom on that port, SerOpen and all other functions of serial.pp
>> works fine.
> I don't use serial.pp but here is how I open a serial port for basic
> communication (no flow control, modem control or stuff like that)
> under linux. I remember this taking some experimentation to get right.
>
> procedure tlserial.open;
> var
> fd : longint;
> config : termios;
> baudrateos : longint;
> begin
> fd := fpopen(device,O_RDWR or O_NOCTTY);
>
> if isatty(fd)=0 then begin
> writeln('not a tty');
> halt(1);
> end;
>
> fillchar(config,sizeof(config),#0);
> config.c_cflag := CLOCAL or CREAD;
> cfmakeraw(config);
> case baudrate of
> 50: baudrateos := B50;
> 75: baudrateos := B75;
> 110: baudrateos := B110;
> 134: baudrateos := B134;
> 150: baudrateos := B150;
> 200: baudrateos := B200;
> 300: baudrateos := B300;
> 600: baudrateos := B600;
> 1200: baudrateos := B1200;
> 1800: baudrateos := B1800;
> 2400: baudrateos := B2400;
> 4800: baudrateos := B4800;
> 9600: baudrateos := B9600;
> 19200: baudrateos := B19200;
> 38400: baudrateos := B38400;
> 57600: baudrateos := B57600;
> 115200: baudrateos := B115200;
> 230400: baudrateos := B230400; else raise
> exception.create('unrecognised baudrate');
> end;
> cfsetispeed(config,baudrateos);
> cfsetospeed(config,baudrateos);
> config.c_cc[VMIN] := 1;
> config.c_cc[VTIME] := 0;
> if tcsetattr(fd,TCSAFLUSH,config) <0 then begin
> writeln('could not set termios attributes');
> halt(3);
> end;
> dup(fd);
> closehandles := true;
> end;
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
More information about the fpc-devel
mailing list