[fpc-pascal] Question on low-level functions for ttySxx
Rainer Hantsch
office at hantsch.co.at
Wed Mar 26 14:07:35 CET 2008
Hello,
I am currently modernizing my "serial communications unit", which actually is
a OOP wrapper around IOCtrl and termio.
It currently supports the following functions:
----------------------------------------------
function Open(portdev: string): boolean; // Open serial port
procedure Close; // Close serial port
function SetComm(baud: integer; parity: char; dbits, sbits: byte): \
boolean; // Configure data format
procedure SetFlow(Flow: string); // Set Flow Control {RTS/XON/BOTH}
function SetBaud(bd: longint): boolean; // Set Baudrate {50/75/../115200}
function SetParity(c: char):boolean; // Set Parity {N,E,O}
function SetDBits(n: byte):boolean; // Set Data-Bits {5/6/7/8}
function SetSBits(n: byte):boolean; // Set Stop-Bits {1/2}
procedure SetDTR(b: boolean); // Rise/Lower DTR
procedure SetRTS(b: boolean); // Rise/Lower RTS
procedure SetTXecho(b: boolean); // Echo sent chars locally
procedure SetRXecho(b: boolean); // Echo received char to remote
procedure DumpFlags; // Dump Flags to screen (for debugging)
procedure send(OutString:string); // Put <string> into Transmit Queue
function recv: string; // Read from Receive Queue
procedure DrainOutput; // Wait until all chars have been sent
procedure FlushInBuf; // Empty Input Buffer
procedure FlushOutBuf; // Empty Output Buffer
procedure FlushBothBuf; // Empty Both Buffers
Most of this functionality will be familiar to one or the other of you,
because I took them over from the OPUS FOSSIL driver X00.SYS.
What I am actually missing are functions for monitoring data flow. Means, that
I want to be able to verify that data are really sent or received.
Currently I can only set handshaking, queue something in the sending buffer,
and then hope that the data will really go out. But I cannot differentiate
between buffer is filled and emptying slowly, or buffer is filled and nothing
goes out.
Is there a possibility to test how many bytes are in the
sending/receibing buffer? This would allow me to read from time to time
and find out this way if dataflow is active.
Thanks for any help.
Rainer
More information about the fpc-pascal
mailing list