с СОМ портами из программ,
Работа с коммуникационными портами (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 работают как с файлами), краткого описания функций многопотоковой обработки и, естественно, примеров программ.