Работа с COM и LPT в Win32. | страница 13
Рассмотренные структуры и функции позволяют программировать порт на достаточно низком уровне. Их, в большинстве случаев, более чем достаточно даже для тонкой настройки порта. Однако бывают и исключения. Например, под именем 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 бпс. |