Відкриття порту:, Система, Delphi, статті

Var
FHandle: Thandle;
FHandle := CreateFile(
PChar(ComString),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0);


У разі нормального відкриття порту FHandle – дескриптор порту, при невдачі містить значення INVALID_HANDLE_VALUE.

Закриття порту:


Закриття порту виконується викликом CloseHandle (FHandle).

Налаштування параметрів передачі (швидкість, кількість біт, стоп біти)

Структура даних про настройки порту (device control block) DCB містить інформацію про налаштування порту. Поля структури:

DWORD DCBlength; // sizeof(DCB) DWORD BaudRate / / Швидкість передачі (baud rate). Є стандартний набір / / Швидкостей: всі константи швидкостей виглядають як CBR_ <число>. / / Приклад CBR_9600, CBR_115200.
Flags DWORD fBinary: / / режим перевірки символу Eof – включення даного режиму Windows / / Не підтримує (принаймні зараз). Маска $ 01 DWORD fParity: / / Контроль парності Маска $ 02 – включення контролю парності DWORD fOutxCtsFlow: / / Маска $ 04 – Включення контролю сигналу CTS при виведенні байтів. DWORD fOutxDsrFlow: / / Маска $ 08 – Включення контролю сигналу DSR при виведенні байтів. DWORD fDtrControl: / / Маска $ 30 – Тип контролю сигналу DTR: значення DTR_CONTROL_DISABLE деактивація сигналу. DTR_CONTROL_ENABLE конкретне значення сигналу можна задавати через виклик EscapeCommFunction. DTR_CONTROL_HANDSHAKE Автоматичне управління сигналом. DWORD fDsrSensitivity: / / Маска $ 40 – Включення контролю сигналу DSR.
DWORD fTXContinueOnXoff:1; // XOFF continues Tx DWORD fOutX: / / Маска $ 100. Включення режиму роботи по XON XOFF при передачі DWORD fInX: / / Маска $ 200 – / / – при прийомі DWORD fErrorChar: / / Маска $ 400. Дозвіл заміщення при помилковому прийомі / / (Розбіжність парності) прийнятого байта на член структури ErrorChar. DWORD fNull: / / Маска $ 800 enable null stripping – пропускати при прийомі символи NULL DWORD fRtsControl: / / Маска $ 3000. Тип контролю:
RTS_CONTROL_DISABLE
RTS_CONTROL_ENABLE RTS_CONTROL_HANDSHAKE Аналогічно сигналу DTR RTS_CONTROL_TOGGLE – Високий рівень поки, є дані для передачі.
DWORD fAbortOnError / / Маска $ 4000. Припинення операцій / / Читання – записи при виникненні помилок DWORD fDummy2: 17; / / Не використовуються

Інші дані структури

WORD wReserved; / / Не використовується WORD XonLim; / / мінімальне число байт в приймальному буфері до відправки символу XON WORD XoffLim; / / максимальне число байт в приймальному буфері до відправки символу XOFF BYTE ByteSize; / / кількість біт в байті від 4 до 8 BYTE Parity; / / 0-4 = no, odd, even, mark, space біт паритету, BYTE StopBits; / / 0,1,2 = 1, 1.5, 2 – стоп біти,  / / 1,5 використовуються тільки при 5 бітах в посилці для мелкосхеми 8250.
ONESTOPBIT 1 stop bit
ONE5STOPBITS 1.5 stop bits
TWOSTOPBITS 2 stop bits
char XonChar; / / Tx and Rx XON символ char XoffChar; / / Tx and Rx XOFF символ char ErrorChar; / / Символ, яким замінюється помилково прийнятий байт
char EofChar; // end of input character
char EvtChar; // received event character WORD wReserved1; / / Не використовується

Delphi має оболонку для DCB – TDCB.

Отримати поточну конфігурацію порту можна функцією
GetCommState(Fhandle:Handle; fDCB:TDCB).

Встановити відповідно SetCommDCB.

Після установки параметрів порту. Читати і писати можна через ReadFile і
WriteFile.

Висновок


У даній замітці приведена лише невелика частина відомостей про роботу з послідовним портом. Якщо хоч комусь це цікаво і потрібно напишіть мені на mgoblin@mail.ru, я спробую надихнутися на подальший працю.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*