type
_DCB = packed record
DCBlength: DWORD;
BaudRate: DWORD;
Flags: Longint;
wReserved: Word;
XonLim: Word;
XoffLim: Word;
ByteSize: Byte;
Parity: Byte;
StopBits: Byte;
XonChar: CHAR;
XoffChar: CHAR;
ErrorChar: CHAR;
EofChar: CHAR;
EvtChar: CHAR;
wReserved1: Word;
end;
{$EXTERNALSYM _DCB}
TDCB = _DCB;
DCB = _DCB;
Com-порт. DCB
Продскажите как можно в Delphi выставить значение RTS_CONTROL_TOGGLE. На С это делается dcb.fRtsControl = RTS_CONTROL_TOGGLE, но в delphi в структуре dcb нет параметра fRtsControl.
Что за функция, что за структура dcb? Телепаты все в отпуске.
Цитата: makbeth
Что за функция, что за структура dcb? Телепаты все в отпуске.
Для настройки Com порта в C существует структура DCB c параметрами(скорость, четность, стоп-бит), для Delphi(Windows.pas) есть такая же:
Код:
Но набор параметров в не меньше. В частности нет параметра управления сигналом RTS(В С - fRtsControl).
Это мой первый опыт в Delphi(обстоятельства заставили), так что разбираюсь по ходу.
в Windows.pas до описания типа _DCB есть набор констант:
Код:
const
{ DTR Control Flow Values. }
DTR_CONTROL_DISABLE = 0;
{$EXTERNALSYM DTR_CONTROL_DISABLE}
DTR_CONTROL_ENABLE = 1;
{$EXTERNALSYM DTR_CONTROL_ENABLE}
DTR_CONTROL_HANDSHAKE = 2;
{$EXTERNALSYM DTR_CONTROL_HANDSHAKE}
{ RTS Control Flow Values}
RTS_CONTROL_DISABLE = 0;
{$EXTERNALSYM RTS_CONTROL_DISABLE}
RTS_CONTROL_ENABLE = 1;
{$EXTERNALSYM RTS_CONTROL_ENABLE}
RTS_CONTROL_HANDSHAKE = 2;
{$EXTERNALSYM RTS_CONTROL_HANDSHAKE}
RTS_CONTROL_TOGGLE = 3;
{$EXTERNALSYM RTS_CONTROL_TOGGLE}
{ DTR Control Flow Values. }
DTR_CONTROL_DISABLE = 0;
{$EXTERNALSYM DTR_CONTROL_DISABLE}
DTR_CONTROL_ENABLE = 1;
{$EXTERNALSYM DTR_CONTROL_ENABLE}
DTR_CONTROL_HANDSHAKE = 2;
{$EXTERNALSYM DTR_CONTROL_HANDSHAKE}
{ RTS Control Flow Values}
RTS_CONTROL_DISABLE = 0;
{$EXTERNALSYM RTS_CONTROL_DISABLE}
RTS_CONTROL_ENABLE = 1;
{$EXTERNALSYM RTS_CONTROL_ENABLE}
RTS_CONTROL_HANDSHAKE = 2;
{$EXTERNALSYM RTS_CONTROL_HANDSHAKE}
RTS_CONTROL_TOGGLE = 3;
{$EXTERNALSYM RTS_CONTROL_TOGGLE}
если не трудно объясните, что за директива $EXTERNALSYM. Может это как-нибудь можно использовать.
Код:
_dcb.Flags := _dcb.Flags or ((RTS_CONTROL_HANDSHAKE) shl 11);