[fpc-pascal] Using built-in serial instead of synaser and the like for Linux console app?
Carsten Bager
carsten at beas.dk
Mon Aug 31 11:12:40 CEST 2020
On 31 Aug 2020 at 9:38, Bo Berglund via fpc-pascal wrote:
> On Fri, 21 Aug 2020 21:03:31 +0200, Bo Berglund via fpc-pascal
> <fpc-pascal at lists.freepascal.org> wrote:
>
> >Instead I need to add a thread for reading data so I can have an event
> >driven reception of data. It would read available data and fire off a
> >NotifyEvent to handle the incoming data in the main application.
>
> I have now started to implement a simple "fpserialport" class using
> the built-in serial unit and I am trying to add a reading thread so I
> can get an OnRxData event which is needed by many of the non-GUI
> applications I want to port to Fpc/Lazarus.
>
I have been using the FPC serial unit for some years, and have never experienced any issues.
Usually I read data this way (if it is text).
I have been using this on both Windows and Linux (Raspberry Pi) for some years.
This is a small bit of a specific program that reads answers on an RS485 bus.
Carsten
Var
vSioCnt:integer=0;
vRetrySioRead:LongInt=0;
vSioBuf:shortstring;
vRs485Sio:LongInt=0;
repeat
vSioCnt:=serial.SerRead(vRs485Sio,vSioBuf[1],255);
if vSioCnt>0 then {Has data been read}
begin
setlength(vSioBuf,vSioCnt);
vSioStringS:=vSioStringS+vSioBuf; {Move data into ansi string}
vRetrySioRead:=6; {Try in 6/100 if more data is coming}
end else if vRetrySioRead<>0 then sleep(10); {Wait for 1/100 sec.}
if vRetrySioRead<>0 then
dec(vRetrySioRead);
until (vSioCnt<=0) and (vRetrySioRead=0); {There was no more data}
> Bo Berglund
> Developer in Sweden
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20200831/ff0c6faf/attachment.htm>
More information about the fpc-pascal
mailing list