The synaser code fails when reading from an IgotU GPS, which uses
a virtual serial port.

Reading short messages works OK, but reading 4096 bytes fails,
returning only a few hundred bytes - even with long time-outs.

The problem is that the routine CanEvent() returns with the wrong event code.
It should return EV_RXCHAR, but it returns 0, even if there are characters
in the windows internal buffer.

Line 1747 in synaser.pas evaluates to false:

      Result := (ex and Event) = Event;

This leads the program to believe there was a time-out, while in reality
there are more data in the buffer.

A fix that seems to work is to change line 1791 to:

    Result := CanEvent(EV_RXCHAR, Timeout) or (WaitingData>0); 


Has anybody any experience with this problem?



Jan Kåre Vatne

------------------------------------------------------------------------------

_______________________________________________
synalist-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synalist-public

Reply via email to