Робота з апаратурою під windows (com порт)

Win API стандартизує використання цього обладнання. Для отримання доступу до апаратури використовується наступна послідовність кроків:

  1. Отримати Handler пристрою викликом CreateFile з ім'ям пристрою. Детальніше про це читайте Windows SDK Help.
  2. Для управління пристроєм викликати функції API для даного пристрою, або посилати IOCTL (input - otput control) останнім через DeviceIOCtl (детально див Windows SDK Help).
  3. Закрити пристрій CloseHandle (Handler);

Відкриття порту:

  • Параметр 1: Ім'я порту - 'COM1', ітд
  • Параметр 2: режим відкриття GENERIC_READ - читання, GENERIC_WRITE - запис
  • Параметр 3: режим поділу ресуртса. Примітка: 0 - неподільні (саме так описано відкриття послідовного порту в WIN SDK, інші режими не перевіряв).
  • Параметр 4: Режим безпеки. Має сенс в Windows NT, Windows 9x ігнорує його.
  • Параметр 5: Спосіб відкриття. Для порту - OPEN_EXISTING - відкрити, коли пристрій реально існує.
  • Параметр 6: режим накладення операцій - FILE_FLAG_OVERLAPPED - дозвіл таких операцій. При цьому операції читання - записи, що вимагають значного часу, виконуються фоново по відношенню до основного потоку програми.
  • Параметр 7: шаблон файлу, для послідовного порту - завжди 0.






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







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

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

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

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

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

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

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

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

висновок







Схожі статті