COMM32.PAS
==========
Version 1.00
Comm32.pas is a simple Communications VC for Borland Delphi 2.0 which
demonstrates the Win32 Communications functions and the new Delphi
'TThread' class. It is implemented using two threads: one for reading
from, and one for writing to a Comm Port.
It probably needs to be implemented as a single thread for read/write
operations if it is needed for any synchronisation functions (such as
file-transfer algorithms).
I started to create a 'TAPI' component to use in conjunction with this
component (hence the 'OnRequestHangup' property) but as of this version
it is incomplete.
Version 1.02 - by small-pig team
1. Add Read/Write timing control
2. Add Data bits, Parity, Stop bits properties
3. Support software and hardware flow control: DTR/DSR, CTS/CTS, XON/XOFF
4. Add 'Sender' parameter in OnReceiveData
Version 2.0 - - by small-pig team
1. Support separatly DTR/DSR and RTS/CTS hardware flow control setting
2. Support separatly OutX and InX software flow control setting
3. Log file(for debug) may used by many comms at the same time
4. Add DSR sensitivity property
5. You can set the error char. replacement when parity error
6. Let XonLim/XoffLim and XonChar/XoffChar setting by yourself
7. You may change flow-control when comm is still opened
8. Change TComm32 to TComm
9. Add OnReceiveError event handler when overrun, framing error,
parity error
10. Fix some bug
Version 2.01 - - by small-pig team
1. Support some property about modem.
2. Add OnModemStateChange event hander when RLSD(CD) change state
Version 2.02 - - by small-pig team
1. Bug fix: When receive XOFF character, the system FAULT!!!!
2. Remove CommFileLog property
SPCOMM.PAS
==========
Version 2.5
1. Add OnSendDataEmpty event handler when all data in buffer
are sent(send-buffer become empty) this handler is called.
You may call send data here.
2. Change the ModemState parameters in OnModemStateChange
to ModemEvent to indicate what modem event make this call
3. Add RING signal detect. When RLSD changed state or
RING signal was detected, OnModemStateChange handler is called
4. Change XonLim and XoffLim from 100 to 500
5. Remove TWriteThread.WriteData member
6. PostHangupCall is re-design for debuging function
7. Add a boolean property SendDataEmpty, True when send buffer
is empty
USAGE
=====
To use the component once it is installed:
1) Attach an event handler to 'OnReceiveData'.
2) Call 'StartComm' to open the port.
3) Use the 'WriteCommData' method to write to the Comm port.
4) Call 'StopComm' to close the port.
PROPERTY
========
CommName : String
The name of comm port. The comm port is named 'COM1', 'COM2',...
This comm port must exist when you open it.
BaudRate : DWORD
The baud rate for this comm port. It must be a legal value for your
serial port can accept it.
You can change this value when the comm is open and
the real baud rate is changed immediately.
ParityCheck : Boolean
Specifies whether parity checking is enabled. If this member is TRUE,
parity checking is performed and errors are reported
(to OnReceiveError handler).
You can change this value when the comm is open.
Outx_CtsFlow : Boolean
Specifies whether the CTS (clear-to-send) signal is monitored
for output flow control. If this member is TRUE and CTS is turned off,
output is suspended until CTS is sent again.
CTS is a input pin. You can read its state from MSR register. It
usually connect to RTS pin in the other end.
It is often used for hardware flow control to indicate that the other
end if being waiting for data.
You can change this value when the comm is open.
CTS Input on | the other end is waiting for data
------------+----------------------------------------
Input off | the other end will NOT receive any data
Outx_DsrFlow : Boolean
Specifies whether the DSR (data-set-ready) signal is monitored for
output flow control. If this member is TRUE and DSR is turned off,
output is suspended until DSR is sent again.
DSR is a input pin. You can read its state from MSR register. It
usually connect to DTR pin in the other end.
It is often used for hardware flow control to indicate that the other
end is working(active, ready, wait for data...)
You can change this value when the comm is open.
DSR Input on | the other end is ready, and wait for your data
------------+----------------------------------------------------
Input off | the other end is not ready, we cannot send data out
DtrControl : ( DtrEnable, DtrDiable, DtrHandshake )
Specifies the DTR (data-terminal-ready) flow control. This member
can be one of the following values:
Value Meaning
------------- ------------------------------------------------------
DtrDiable Disables the DTR line when the device is
opened and leaves it disabled.
DtrEnable Enables the DTR line when the device is
opened and leaves it on.
DtrHandshake Enables DTR handshaking. When our comm port is opened
and ready for receiving data, DTR is enabled. When
our comm port is suspend, closed or has error
(and not cleared), DTR is disable.
If handshaking is enabled, it is an error for the
application to adjust the line by using the Win32
EscapeCommFunction function.
DTR is a output pin. You can set its state in MCR register.
It usually connect to DSR pin in the other end.
You can change this value when the comm is open.
DsrSensitivity : Boolean;
Specifies whether the communications driver is sensitive to the
state of the DSR signal. If this member is TRUE, the driver ignores
any bytes received, unless the DSR modem input line is high.
You can change this value when the comm is open.
TRUE | ignore any received byte
-------+------------------------------
FALSE | nothing
TxContinueOnXoff : Boolean;
Specifies whether transmission stops when the input buffer is full
and the driver has transmitted the XoffChar character. If this member
is TRUE, transmission continues after the input buffer has come within
XoffLim bytes of being full and the driver has transmitted the
XoffChar character to stop receiving bytes. If this member is FALSE,
transmission does not continue until the input buffer is within XonLim
bytes of being empty and the driver has transmitted the XonChar
character to resume reception.
You can change this value when the comm is open.
TRUE | enable or disable transmisstion has no any relation with
| input buffer
-------+-------------------------------------------------------------
FALSE | When Xoff is send(input buffer will be full),stop transmission.
| And stop continue until Xon is send(input buffer will empty).
Outx_XonXoffFlow : Boolean
Specifies whether XON/XOFF flow control is used during transmission.
If this member is TRUE, transmission stops when the XoffChar character
is received and starts again when the XonChar character is received.
You can change this value when the comm is open.
Action | Xoff received | Xon received
--------+--------------------+---------------------------
TRUE | stop transmission | resume t