Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Flow control в BCD   Найти похожие ветки 

 
anton1209   (2006-07-18 11:47) [0]

в настройках ком порта есть параметр flow control у меня он выставлен Xon / Xoff, как указать это в структуре BCD?

procedure PortInit;
var
  nb :DWORD;
  ov :TOVERLAPPED;
begin

 KolByte:=0;

 CommHandle := CreateFile("COM1",
                          GENERIC_WRITE,
                          0,
                          nil,
                          OPEN_EXISTING,
                          FILE_ATTRIBUTE_NORMAL,
                          0);

 if CommHandle = INVALID_HANDLE_VALUE then
   begin
       ShowMessage("Error opening port ");
       Exit;
   end;

  GetCommState(CommHandle,DCB);
  DCB.BaudRate:=CBR_9600;
  DCB.Parity:=ODDPARITY;
  DCB.ByteSize:=7;
  DCB.StopBits:=OneStopBit;
 
  SetCommState(CommHandle, DCB);

  WriteFile(CommHandle, "#DCL#@@@@@@", 11, nb, @Ovr);

  CloseHandle(CommHandle);

 end;


 
tesseract ©   (2006-07-18 13:59) [1]

Переписать DCB из msdn. Delphi структура от неё отличается.

выглядит так :

typedef struct _DCB { // dcb  
   DWORD DCBlength;           // sizeof(DCB)
   DWORD BaudRate;            // current baud rate
   DWORD fBinary: 1;          // binary mode, no EOF check
   DWORD fParity: 1;          // enable parity checking
   DWORD fOutxCtsFlow:1;      // CTS output flow control
   DWORD fOutxDsrFlow:1;      // DSR output flow control
   DWORD fDtrControl:2;       // DTR flow control type
   DWORD fDsrSensitivity:1;   // DSR sensitivity

   DWORD fTXContinueOnXoff:1; // XOFF continues Tx
   DWORD fOutX: 1;            // XON/XOFF out flow control
   DWORD fInX: 1;             // XON/XOFF in flow control
   DWORD fErrorChar: 1;       // enable error replacement
   DWORD fNull: 1;            // enable null stripping
   DWORD fRtsControl:2;       // RTS flow control
   DWORD fAbortOnError:1;     // abort reads/writes on error
   DWORD fDummy2:17;          // reserved
   WORD wReserved;            // not currently used

   WORD XonLim;               // transmit XON threshold
   WORD XoffLim;              // transmit XOFF threshold
   BYTE ByteSize;             // number of bits/byte, 4-8
   BYTE Parity;               // 0-4=no,odd,even,mark,space
   BYTE StopBits;             // 0,1,2 = 1, 1.5, 2
   char XonChar;              // Tx and Rx XON character
   char XoffChar;             // Tx and Rx XOFF character
   char ErrorChar;            // error replacement character

   char EofChar;              // end of input character
   char EvtChar;              // received event character
   WORD wReserved1;           // reserved; do not use
} DCB;


 
anton1209   (2006-07-18 14:33) [2]

если честно не понял


 
tesseract ©   (2006-07-18 14:37) [3]

в описании DCB в Delphi  нет возможности контроля потока. Его надо подправить.


 
medved_68 ©   (2006-07-18 18:16) [4]


> в описании DCB в Delphi  нет возможности контроля потока.
>  Его надо подправить

Там есть такая штука как DCB.Flags. Практически повторяет [1].

> anton1209

Хлопаешь нужную маску и привет. 8:)))


 
tesseract ©   (2006-07-18 21:36) [5]

> Там есть такая штука как DCB.Flags. Практически повторяет
> [1].

ИМХО проще структурку переписать. Инфы больше.


 
Ketmar ©   (2006-07-18 21:55) [6]

>tesseract ©   (18.07.06 21:36) [5]
ну и как в D7, например, сделать битовые поля?


 
medved_68 ©   (2006-07-19 09:17) [7]


> 2tesseract


> ИМХО проще структурку переписать. Инфы больше.

А зачем корячиться если все необходимое сделано???? И по DCB.Flags в нете инфы полно.

> 2Ketmar


> ну и как в D7, например, сделать битовые поля?

Извратиться всегда можно. Другое дело когда я создал аналог Сишного DCB в виде рекорда и попробовал указатель на него передать в АРИ функцию работы с портом компилятор у меня начал ругаться и на несоответствие типов и еще на черт знает что. Хотя все было по инфе и размер DCB бил в копеечку и указатель смотрел куда надо. Так и остался в непонятках 8:((( Единственное что опосля пришло на ум что борландовский ТDCB класс обертка может здесь какие то навороты????


 
Ketmar ©   (2006-07-19 11:41) [8]

>medved_68 ©   (19.07.06 09:17) [7]
"навороты" в проверке типов языка. две одинаковых по размерам (и даже по полям) записи, объявленые под разными именами одинаковыми не считаются.


 
medved_68 ©   (2006-07-19 12:16) [9]


> Ketmar

Дело в том что практически в большинстве АРИ работающих с портом передаются указатели на DCB (оговариваются что DCB должен быть создан (выделена память под него) и в поле размера должен стоять размер DCB ). Так вот я выполнял все эти условия но компилятор ругался и на несоответствие типов и еще не помню на что.

> объявленые под разными именами одинаковыми не считаются.

Но ведь в АРИ функции передаются указатели на область памяти причем тут имена??? Поясни если не трудно.


 
Ketmar ©   (2006-07-19 16:58) [10]

>medved_68 ©   (19.07.06 12:16) [9]
указатели тоже имеют типы.



Страницы: 1 вся ветка

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.055 c
2-1163435060
Jimmy
2006-11-13 19:24
2006.12.03
Экономия ресурсов


5-1144420112
Yuri Btr
2006-04-07 18:28
2006.12.03
Перекрытие методов класса-предка


2-1163602048
Монгол
2006-11-15 17:47
2006.12.03
Отловить нажатие кнопок на клавиатуре


15-1163493469
Stexen
2006-11-14 11:37
2006.12.03
Skype


6-1152600171
dwar
2006-07-11 10:42
2006.12.03
IndI ,IdHttp Connection reset by peer