Brad Campbell schrieb:
Holger Bruns wrote:
Hi,
one more question regarding the unit serial. I use the following
function to get one single byte form a serial port, which has been
open before with seropen:
function getdata(inhandle: tserialhandle; var recdata: char): longint;
begin
fillchar(inbuffer, sizeof(inbuffer), #0);
getdata := serread(inhandle, inbuffer[0], 1);
recdata := inbuffer[0]
end;
I repeat this function as long as I need to read data from a serial
port, byte by byte. One interesting error occurs at the 52478th byte:
serread returns 0 instead of 1. How can I get it work properly?
The answer to that probably depends on a bit more information that you
have provided in your question.
Thank you for your answer. I played with different baud rates. The
sender delivers a stream of bytes. The faster a transmission rate is,
the less amount of data can be received. This leds me to two
conclusions: At first, there must be a queue for incoming data despite I
ruled out a queue with an inbuffer with the length 1. Secondly, a
timeout error appeared, the sender gave up. For now, I try to solve this
problem with slower baud rates. Since iopl is still not available to fpc
in its 64-bit-version, I should move to c for future port programming.
For that matter it could be interesting to know two more things: How can
I call external executable code like "setserial /dev/ttySx none" and
secondly, how can I use c functions like pascal functions?
Are you sure you have data waiting for you?
Yes.
Holger
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal