Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Установить флаг DTR и RTS в активное состояние для определённого COM-порта

Автор: Slava V

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

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay