On 04/02/2014 10:53 PM, Roberto P. wrote:
I'd like to point out that CPortLaz is multithreaded

Does it work similar to AsyncPro ?

In fact, IMHO, it would be desirable to have a component that _internally_ uses TThread to handle blocking ports (either using just a byte-FIDO - this is what AsyncPro does - and/or allowing the user to implement a protocol within the Thread's "Execute" ), and when some information from the port is received (at least one byte or when the protocol handler issues a "ready"), does an Event (aka queued callback) to the main thread.

The main thread call of course needs to be "scheduled" using means such as TThread.Queue or Application.QueueAsyncCall. (As at the time when AsyncPro was released, Delphi did not provide either, AsyncPro uses Windows Messages by directly accessing the Windows API, which happily is not necessary with Lazarus).

Unfortunately Thread -> Mainthread signaling is only easily provided in Lazarus in the GUI based Widget Types. (NoGUI still needs an appropriate enhancement.) But of course the user (or even a ComPort Unit) could provide a usable Main Loop implementation.

-Michael

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to