Работа с 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

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


Рекомендуем почитать
Программное обеспечение и его разработка

Автор книги — американский специалист по программированию, один из руководителей фирмы IBM, в своей книге делает попытку изложить общие проблемы создания программного обеспечения, его сопровождения и использования. Особенно подробно рассматриваются все фазы разработки программ разных типов. Изложение ясное, удачно иллюстрировано примерами.Для программистов разной квалификации и пользователей ЭВМ.fb2: ВНИМАНИЕ. В тексте присутствуют таблицы. Рекомендуется читать файл с помощью программы, поддерживающей их отображение.


Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Программирование приложений для мобильных устройств под управлением Android. Часть 1

Книга посвящена разработке программ для мобильных устройств под управлением операционной системы Android. Рассматривается создание приложений с использованием системных компонентов и служб Android. Приведены базовые данные о структуре приложений, об основных классах и их методах, сопровождаемые примерами кода. Часть 1 содержит шесть глав, описывающих основные принципы создания приложений, пользовательский интерфейс, полномочия приложений, а так же базовые классы: Activity, Intent, Fragment. Книга предназначена для программистов, владеющих языком программирования Java и желающих освоить написание приложений, работающих под ОС Android.


Java 7

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


FreeBSD - полезные советы

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


Тонкости дизассемблирования

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