Работа с коммуникационными портами (COM и LPT) в программах для Win32

       

с СОМ портами из программ,


Работа с коммуникационными портами (COM и LPT) в программах для Win32.
                                                                                                  Автор:    Титов Олег
Функция CreateFile  1
Функция CloseHandle  2
Структура DCB   3
Функция BuildCommDCB   6
Функция GetCommState  7
Функция SetCommState  7
Структура COMMTIMEOUTS  7
Функция BuildCommDCBAndTimeouts  9
Функция GetCommTimeouts  9
Функция SetCommTimeouts  9
Структура COMMPROP  10


Структура COMMCONFIG   14
Функция GetCommConfig  14
Функция CommConfigDialog  15
Функция SetCommConfig  16
Функции GetDefaultCommConfig и SetDegaultCommConfig  16
Функция SetupComm   16
Функцити ReadFile и WriteFile  17
Функция PurgeComm   18
Функция FlushFileBuffers  18
Функция TransmitCommChar 19
Функции SetCommBreak и ClearCommBreak  19
Функция EscapeCommFunction  19
Функция ClearCommError 19
Структура COMMSTAT   20
Функция SetCommMask  21
Функция GetCommMask  21
Функция WaitCommEvent 22
Структура OVERLAPPED   22
Мне часто задают вопросы о работе с СОМ портами из программ, написанных для Windows 95/98/NT. Причем чаще всего спрашивают разработчики всевозможных управляющих устройств. Эти устройства либо были разработаны давно, еще в эпоху MS-DOS, либо разрабатываются сейчас. Но объединяет их одно - устройство должно подключаться к компьютеру, в большинстве случаев через RS-232 (COM), реже, через Centronics (LPT).
В литературе, чаще всего, управление последовательным и параллельным портами описывается на уровне регистров этих портов, причем примеры программ приводятся на языке Assembler. Это не удивительно. Последовательный порт довольно медленное устройство, к тому же специфическое. Поэтому в программах работающих с портами используются прерывания. Параллельный порт быстрее, но тоже медленный и не менее специфичный. Взять хотя бы возможность этого порта работать в двух направлениях, да еще и с использованием ПДП (DMA).
Написать программу, управляющую устройством через COM порт, для MS-DOS не так сложно. Это частенько делали не программисты, а сами разработчики устройства. Сложнее было сделать красивый и удобный интерфейс пользователя. Этим обычно занимались профессиональные программисты. С платформой Win32 дело обстоит сложнее. Но только на первый взгляд. Конечно, напрямую работать с регистрами портов нельзя, Windows это не позволяет, зато можно не обращать внимания на тонкости различных реализаций (i8055, 16450, 16550A) и не возиться с обработкой прерываний.
Описание программирования будет состоять из подробного описания функций, специфических для работы с портами, краткого описания функций работы с файлами (с портами в Win32 работают как с файлами), краткого описания функций многопотоковой обработки и, естественно, примеров программ.

Содержание раздела