Работа с COM и LPT в Win32. - [7]

Шрифт
Интервал

Рассмотренные структуры и функции позволяют программировать порт на достаточно низком уровне. Их, в большинстве случаев, более чем достаточно даже для тонкой настройки порта. Однако бывают и исключения. Например, под именем COM1 может скрываться вовсе не привычный порт RS-232, а какая-нибудь экзотика. Или порт может не позволять задавать скорость более 9600.

Исчерпывающая информация о возможностях коммуникационного устройства и драйвера содержится в структуре COMMPROP:

>typedef struct _COMMPROP {

> WORD  wPacketLength;       // packet size, in bytes

> WORD  wPacketVersion;      // packet version

> DWORD dwServiceMask;       // services implemented

> DWORD dwReserved1;         // reserved

> DWORD dwMaxTxQueue;        // max Tx bufsize, in bytes

> DWORD dwMaxRxQueue;        // max Rx bufsize, in bytes

> DWORD dwMaxBaud;           // max baud rate, in bps

> DWORD dwProvSubType;       // specific provider type

> DWORD dwProvCapabilities;  // capabilities supported

> DWORD dwSettableParams;    // changable parameters

> DWORD dwSettableBaud;      // allowable baud rates

> WORD  wSettableData;       // allowable byte sizes

> WORD  wSettableStopParity; // stop bits/parity allowed

> DWORD dwCurrentTxQueue;    // Tx buffer size, in bytes

> DWORD dwCurrentRxQueue;    // Rx buffer size, in bytes

> DWORD dwProvSpec1;         // provider-specific data

> DWORD dwProvSpec2;         // provider-specific data

> WCHAR wcProvChar[1];       // provider-specific data

>} COMMPROP;

Поля этой структуры описывают все возможности драйвера. Вы не можете выйти за пределы этих возможностей. Вот какое значение имеют поля:

wPacketLength

Задает размер, в байтах, структуры COMMPROP.

wPacketVersion

Номер версии структуры.

dwServiceMask

Битовая маска. Для коммуникационных устройств всегда SP_SERIALCOMM, включая модемы.

dwReserved1

Зарезервировано и не используется.

dwMaxTxQueue

Максимальный размер, в байтах, внутреннего буфера передачи драйвера. Нулевое значение свидетельствует об отсутствии ограничения.

dwMaxRxQueue

Максимальный размер, в байтах, внутреннего буфера приема драйвера. Нулевое значение свидетельствует об отсутствии ограничения.

dwMaxBaud

Максимально допустимая скорость обмена, в битах в секунду (бпс). Возможны следующие значения данного поля:

BAUD_075 75 бпс.
BAUD_110 110 бпс.
BAUD_134_5 134.5 бпс.
BAUD_150 150 бпс.
BAUD_300 300 бпс.
BAUD_600 600 бпс.
BAUD_1200 1200 бпс.
BAUD_1800 1800 бпс.
BAUD_2400 2400 бпс.
BAUD_4800 4800 бпс
BAUD_7200 7200 бпс.
BAUD_9600 9600 бпс.
BAUD_14400 14400 бпс.
BAUD_19200 19200 бпс.
BAUD_38400 38400 бпс.
BAUD_56K 56K бпс.
BAUD_57600 57600 бпс.
BAUD_115200 115200 бпс.
BAUD_128K 128K бпс.
BAUD_USER Допускается программирование скорости обмена

dwProvSubType

Тип коммуникационного порта. Возможны следующие значения данного поля:

PST_FAX Факс
PST_LAT LAT протокол
PST_MODEM Модем
PST_NETWORK_BRIDGE Сетевой мост
PST_PARALLELPORT Параллельный порт
PST_RS232 Последовательный порт RS-232
PST_RS422 Порт RS-422
PST_RS423 Порт RS-423
PST_RS449 Порт RS-449
PST_SCANNER Сканнер
PST_TCPIP_TELNET Протокол TCP/IP TelnetR
PST_UNSPECIFIED Неизвестное устройство
PST_X25 Устройство стандарта X.25

dwProvCapabilities

Битовая маска. Определяет возможности предоставляемые устройством. Возможны следующие значения:

PCF_16BITMODE Поддерживается специальный 16-битный режим
PCF_DTRDSR Поддерживаются сигналы DTR/DSR.
PCF_INTTIMEOUTS Поддерживается межсимвольный тайм-аут.
PCF_PARITY_CHECK Поддерживается контроль четности.
PCF_RLSD Поддерживается определение наличия сигнала в приемной линии.
PCF_RTSCTS Поддерживаются сигналы RTS/CTS.
PCF_SETXCHAR Поддерживаются задаваемые символы XON/XOFF.
PCF_SPECIALCHARS Поддерживаются спецсимволы.
PCF_TOTALTIMEOUTS Поддерживаются общие тайм-ауты (ожидаемое время).
PCF_XONXOFF Поддерживается программное (XON/XOFF) управление потоком.

dwSettableParams

Битовая маска. Определяет допустимые для изменения параметры. Возможны следующие значения:

SP_BAUD Скорость обмена.
SP_DATABITS Бит в символе.
SP_HANDSHAKING Рукопожатие (управление потоком).
SP_PARITY Четность.
SP_PARITY_CHECK Контроль четности.
SP_RLSD Детектирование наличия сигнала в приемной линии.
SP_STOPBITS Количество стоповых бит.

dwSettableBaud

Битовая маска. Определяет допустимый набор скоростей обмена. Допустимые для данного поля значения указаны в описании поля dwMaxBaud.

wSettableData

Битовая маска. Определяет допустимые длины символов, в битах. Возможны следующие значения:

DATABITS_5 5 бит
DATABITS_6 6 бит
DATABITS_7 7 бит
DATABITS_8 8 бит
DATABITS_16 16 бит
DATABITS_16Х Специальный широкий канал через аппаратную последовательную линию.

wSettableStopParity

Битовая маска. Определяет допустимое количество стоповых бит и режимы четности. Возможны следующие значения:

STOPBITS_10 Один стоповый бит
STOPBITS_15 Полтора стоповыx бита
STOPBITS_20 Два стоповых бита
PARITY_NONE Без четности
PARITY_ODD Дополнение до нечетности
PARITY_EVEN Дополнение до четности
PARITY_MARK Бит четности всегда "1"
PARITY_SPACE Бит четности всегда "0"

dwCurrentTxQueue

Определяет текущий размер, в байтах, внутренней очереди передачи драйвера. Нулевое значение свидетельствует о недоступности данного параметра.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.