Работа с COM и LPT в Win32.
Шрифт:
Номер версии структуры.
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
Определяет текущий размер, в байтах, внутренней очереди передачи драйвера. Нулевое значение свидетельствует о недоступности данного параметра.
dwCurrentRxQueue
Определяет текущий размер, в байтах, внутренней очереди приема драйвера. Нулевое значение свидетельствует о недоступности данного параметра.
dwProvSpec1
Устройство-зависимые данные. Программа должна игнорировать содержимое данного поля, за исключением случаев, когда Вы точно знаете формат этих данных. Занесите в данное поле значение COMMPROP_INITIALIZED, если поле wPacketLength уже содержит правильное значение.
dwProvSpec2
Устройство-зависимые данные. Программа должна игнорировать содержимое данного поля, за исключением случаев, когда Вы точно знаете формат этих данных.
wcProvChar
Устройство-зависимые данные. Программа должна игнорировать содержимое данного поля, за исключением случаев, когда Вы точно знаете формат этих данных.
Информация хранящаяся в структуре COMMPROP требуется редко, так как чаще всего точно известно с каким типом портов будет работать программа.
Остановлюсь чуть подробнее на описании некоторых полей. Поле wPacketLength играет несколько иную роль, чем поле DCBlength структуры DCB, хотя из его описания это не следует. Секрет прост. Поле wcProvChar, расположеное в конце структуры, может содержать, а может и не содержать, данных. Вы не в состоянии это узнать не запросив информацию. В свою очередь, перед запросом информации Вы должны выделить (и обнулить) память под структуру COMMPROP. Поэтому последовательность шагов для получения всей информации следующая:
• Выделить память под структуру COMMPROP.
• Запросить информацию у системы вызвав функцию GetCommProperties.
• Если поле wPacketLength содержит значение большее sizeof(COMMPROP), то имеется дополнительная информация. Для ее получения измените размер ранее выделенного блока памяти, новый размер должен быть равен значению занесенному системой в поле wPacketLength. Установите в поле wProvSpec1 значение COMMPROP_INITIALIZED, это будет означать, что выделен достаточный блок памяти для получения дополнительной информации. Повторно вызовите функцию GetCommProperties.