Установить флаг DTR и RTS в активное состояние для определённого COM-порта

Советы » Порты » Установить флаг DTR и RTS в активное состояние для определённого COM-порта

После открытия 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

;

P.S. Надо заметить, что все выходы com-порта являются инверсными. А это значит, что активным сосотоянием порта является 0, а неактивным 1.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com