Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Титов О.Работа с коммуникационными портами (COM и LPT) в программах для Win32.doc
Скачиваний:
279
Добавлен:
22.08.2013
Размер:
282.62 Кб
Скачать

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

Функция CreateFile

Как я уже говорил, с последовательными и параллельными портами в Win32 работают как с файлами. Следовательно, начинать надо с открытия порта как файла. Использовать привычные функции openиfopenпри этом нельзя, необходимо воспользоваться функциейCreateFile. Эта функция предоставляется Win32 API. Ее прототип выглядит так:

HANDLE CreateFile(

LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDistribution,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile

);

Функция имеет много параметров, большинство из которых нам не нужны. Приведу краткое описание параметров:

Соседние файлы в предмете Проектирование электроприборов
  • #
    22.08.20133.39 Mб24Сворень Р. - Шаг за шагом. Усилители и радиоузлы (1965).djvu
  • #
    22.08.201312.78 Mб19Скляр Б.Цифровая связь.Теоретические основы и практическое применение.2003.djvu
  • #
    22.08.20135.15 Mб35Соклоф С. Аналоговые интегральные схемы; 1988.djvu
  • #
    22.08.2013975.61 Кб19Соколов С.Н. - Задачи для радиолюбителей (1970).djvu
  • #
    22.08.201312.6 Mб17Соколовский М.И. и др. - Управляемые энергетические установки на твердом ракетном топливе (2003).djvu
  • #
  • #
    23.08.20133.13 Mб35Фернер В.Пневмоавтоматические приборы низкого давления.1964.djvu
  • #
    23.08.20135.39 Mб49Хаммел Р.Л.Последовательная передача данных.1996.djvu
  • #
    22.08.20133.78 Mб14Хаушильд В., Мош В. (Hauschild W., Mosch W.) - Статистика для электротехников в приложении к технике высоких напряжений (Эн.djv
  • #
    23.08.20133.32 Mб26Холуянов Ф.И.Трансформаторы однофазного и трёхфазного тока.1934.djvu
  • #
    23.08.20136.79 Mб20Хоровиц П.Искусство схемотехники.т1.1986.djvu