Работа с COM и LPT в Win32.
Шрифт:
Функции HeapAlloc и HeapFree занимаются выделением и освобождением памяти из куч, которых в программе может быть несколько. Вместо этих функций можно использовать malloc (calloc) и free. Однако использование функций предоставляемых Win32 API позволяет сократить размер программы, что может быть не маловажно, если работа с портами ведется из DLL (например Вы пишете своеобразный псевдодрайвер для своего устройства). Есть и другие аргументы в пользу этой точки зрения, которую я Вам, впрочем, не навязываю.
Рассмотренные структуры и функции позволяют программировать порт на достаточно низком уровне. Их, в большинстве случаев, более чем достаточно даже для тонкой настройки порта. Однако бывают и исключения. Например, под именем COM1 может скрываться вовсе не привычный порт RS-232, а какая-нибудь экзотика. Или порт может не позволять задавать скорость более 9600.
Исчерпывающая
Поля этой структуры описывают все возможности драйвера. Вы не можете выйти за пределы этих возможностей. Вот какое значение имеют поля:
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 | Количество стоповых бит. |