Работа с коммуникационными портами (COM и LPT) в программах для Win32


         

Функция CreateFile


Как я уже говорил, с последовательными и параллельными портами в Win32 работают как с файлами. Следовательно, начинать надо с открытия порта как файла. Использовать привычные функции open и fopen при этом нельзя, необходимо воспользоваться функцией CreateFile. Эта функция предоставляется Win32 API. Ее прототип выглядит так:

   HANDLE CreateFile(

      LPCTSTR               lpFileName,

      DWORD                 dwDesiredAccess,

      DWORD                 dwShareMode,

      LPSECURITY_ATTRIBUTES lpSecurityAttributes,

      DWORD                 dwCreationDistribution,

      DWORD                 dwFlagsAndAttributes,

      HANDLE                hTemplateFile

   );

Функция имеет много параметров, большинство из которых нам не нужны. Приведу краткое описание параметров:

lpFileName

Указатель на строку с именем открываемого или создаваемого файла. Формат этой строки может быть очень хитрым. В частности можно указывать сетевые имена для доступа к файлам на других компьютерах. Можно открывать логические разделы или физические диски и работать в обход файловой системы. Однако для наших задач это не нужно. Последовательные порты имеют имена "COM1", "COM2", "COM3", "COM4" и так далее. Точно так же они назывались в MS-DOS, так что ничего нового тут нет. Параллельные порты называются "LPT1", "LPT2" и так далее. Учтите, что если у Вас к порту СОМ1 подключена мышь, Windows не даст открыть этот порт. Аналогично не удастся открыть LPT1 если подключен принтер. А вот с модемом дела обстоят немного по другому. Если какая-либо программа использует модем, например вы дозвонились до своего провайдера Internet, то Вашей программе не удастся открыть порт к которому подключен модем. Во всех остальных случаях порт будет открыт и Вы сможете работать с модемом сами, из своей программы.

dwDesiredAccess

Задает тип доступа к файлу. Возможно использование следующих значений:

  • 0                                                                          Опрос атрибутов устройства без получения доступа к нему.
  • GENERIC_READ                                             Файл будет считываться.
  • GENERIC_WRITE                                           Файл будет записываться.
  • GENERIC_READ|GENERIC_WRITE            Файл будет и считываться и записываться.

dwShareMode



Содержание  Назад  Вперед