[Lazarus] Serial communication??
Mark Morgan Lloyd
markMLl.lazarus at telemetry.co.uk
Wed Sep 29 13:26:40 CEST 2010
Bo Berglund wrote:
> It looks like the serial.pp unit implements a blocking system even though
> it is not clearly written as such. But the synaser unit is definitely
> blocking.
But the serial does allow you access to the handle, so it's trivial to
use select() (actually fpSelect()) to implement the timeout.
> 1) Is serial communication with events not possible in FPC on Linux?
I'd comment at this point that some Windows programmers are excessively
oriented towards events and messages (in my opinion) since that's about
all that was available pre-NT.
> 2) How can one use blocking reads when there is no way to know exactly when
> data will arrive? Everything else will stop when waiting for data, right?
I agree with what other people have said about threads etc. but on
occasion they're needless complexity. For example if all you're doing is
handling a simple state machine polling (which looks at the OS buffer
rather than the hardware itself) is frequently adequate.
> 3) How can one enumerate the existing com ports on Linux? In Windows I know
> how to do this and thus I can get a list of valid ports for the user to
> select from. Is there some way also in Linux using FPC?
As other people have said, this is messy. I find myself looking for
ttyS, ttyU and ttyI, making an arbitrary decision as to how many of each
could reasonably be installed, and then tentatively opening each to see
whether I've got access. It gets worse if you want to lock them (i.e.
one program at a time gets access).
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the Lazarus
mailing list