После открытия com-порта через CreateFile() необходимо с помощью
GetCommState() и SetCommState() установить параметры порта (в частности убрать
автоуправление RTS и DTR). Затем для установки соответствующих сигналов
используется функция EscapeCommFunction().
Procedure ControlRTS; Var S: String; lDCB: TDCB; fHandle: THandle; Begin S:='COM1'; // open port fHandle:=CreateFile( Pchar(S), GENERIC_READ Or GENERIC_WRITE, 0, Nil, OPEN_EXISTING, 0, 0); If fHandle=INVALID_HANDLE_VALUE Then Begin // can't open.... Exit; End; // read settings If Not GetCommState( fHandle, lDCB) Then Begin // can't read Exit; End; // Fill dcb lDCB.BaudRate:=CBR_2400; lDCB.ByteSize:=8; lDCB.Parity:=NOPARITY; lDCB.StopBits:=ONESTOPBIT;
// !!! we will manage RTS ourself !!! ldcb.Flags:=(ldcb.Flags And $FFFFC0FF) Or $00000100; // set comm state SetCommState( fHandle, ldcb);
// Here we can manage // Reset RTS EscapeCommFunction( fHandle, CLRRTS); // Set RTS EscapeCommFunction( fHandle, SETRTS);
// Close port CloseHandle(fHandle); fHandle:=0; End;
|
|