[Lazarus] SdpoSerial Tx and Rx buffers?
dennis martin
visionstaff at yahoo.com
Wed Feb 16 07:17:47 CET 2011
may i suggest looking at elecomm for an ideal it's a old pascal serial library but would fit your needs
--- On Tue, 2/15/11, Bo Berglund <bo.berglund at gmail.com> wrote:
> From: Bo Berglund <bo.berglund at gmail.com>
> Subject: Re: [Lazarus] SdpoSerial Tx and Rx buffers?
> To: lazarus at lists.lazarus.freepascal.org
> Date: Tuesday, February 15, 2011, 2:53 PM
> On Tue, 15 Feb 2011 00:49:56 +0000,
> Paulo Costa <paco at fe.up.pt>
> wrote:
>
> >Synaser is blocking both for writing and reading.
> >The SdpoSerial component creates a thread to listen and
> generates an
> >event when bytes are received. So reading can be
> non-blocking.
> >The write methods are direct calls to the Synaser ones
> and they are
> >blocking.
>
> I just checked by setting up a transfer of 100.000 bytes at
> 38400
> baud. With a breakpoint at the FComm.WriteData method I
> could time
> this function using the step-over command. It returned in
> 30 s when
> the packet was 100006 bytes long, an effective baudrate of
> 33300 baud.
> So it really looks like the WriteData *is* blocking...
>
> >For that, you must break your transmission in small
> block and use the
> >completion of each transfer to signal the progress.
>
> Sadly this seems to be the case...
>
> I would have to send in chunks of 1500 bytes or so to get 2
> progress
> ticks per second. The application will probably be stone
> dead and
> nonresponsive too, which is one of the things I really like
> to
> *always* avoid.
>
> What one would need to do to fix this is to put the
> SdpoSerial into a
> thread and let the thread send data out from a buffer that
> can be
> loaded by the main application. But then we have the
> problem of
> transferring the Tx data into the thread environment in a
> threadsafe
> way...
>
> My project just grew. :-(
>
>
> Bo Berglund
>
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>
More information about the Lazarus
mailing list