Библиотека knigago >> Компьютеры: Операционные системы >> Windows >> Работа с COM и LPT в Win32.


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1396, книга: Остров
автор: Михаил Рейдерман

"Остров" Михаила Рейдермана - это настоящий алмаз среди приключенческой литературы. Как и автор, я родом из СССР, и эта книга насквозь пропитана духом той эпохи, духом свободы и самиздата. Главный герой, Саня, отправляется в путешествие по стране, чтобы развезти запрещенную литературу. По пути он сталкивается с множеством опасностей и приключений. Но именно эти испытания закаляют его и превращают в истинного воина. Рейдерман мастерски передал атмосферу дорожных приключений,...

СЛУЧАЙНАЯ КНИГА

Ворон и ветвь. Дана Арнаутова
- Ворон и ветвь

Жанр: Боевое фэнтези

Год издания: 2023

Серия: Год некроманта

Олег Титов - Работа с COM и LPT в Win32.

Работа с COM и LPT в Win32.
Книга - Работа с COM и LPT в Win32..  Олег Титов  - прочитать полностью в библиотеке КнигаГо
Название:
Работа с COM и LPT в Win32.
Олег Титов

Жанр:

Самиздат, сетевая литература, Литература ХX века (эпоха Социальных революций), Windows, Системное программирование, Windows API

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Работа с COM и LPT в Win32."

Аннотация к этой книге отсутствует.


Читаем онлайн "Работа с COM и LPT в Win32.". Главная страница.

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

Мне часто задают вопросы о работе с СОМ портами из программ, написаных для Windows 95/98/NT. Причем чаще всего спрашивают разработчики всевозможных управляющих устройств. Эти устройства либо были разработаны давно, еще в эпоху MS-DOS, либо разрабатываются сейчас. Но объединяет их одно – устройство должно подключаться к компьютеру, в большинстве случаев через RS-232 (COM), реже, через Centronics (LPT).

В литературе, чаще всего, управление последовательным и параллельным портами описывается на уровне регистров этих портов, причем примеры программ приводятся на языке Assembler. Это не удивительно. Последовательный порт довольно медленное устройство, к тому же специфическое. Поэтому в программах работающих с портами используются прерывания. Параллельный порт быстрее, но тоже медленный и не менее специфичный. Взять хотя бы возможность этого порта работать в двух направлениях, да еще и с использованием ПДП (DMA).

Написать программу, управляющую устройством через COM порт, для MS-DOS не так сложно. Это частенько делали не программисты, а сами разработчики устройства. Сложнее было сделать красивый и удобный интерфейс пользователя. Этим обычно занимались профессиональные программисты. С платформой Win32 дело обстоит сложнее. Но только на первый взгляд. Конечно напрямую работать с регистрами портов нельзя, Windows это не позволяет, зато можно не обращать внимания на тонкости различных реализаций (i8055, 16450, 16550A) и не возиться с обработкой прерываний.

Описание программирования будет состоять из подробного описания функций, специфических для работы с портами, краткого описания функций работы с файлами (с портами в Win32 работают как с файлами), краткого описания функций многопотоковой обработки и, естественно, примеров программ.

Сразу хочу оговориться, что Windows требует точного соблюдения аппаратного протока обмена с внешними устройствами. Другими словами, у Вас не получится управлять, например, светодиодом подключенным к одному из выводов параллельного порта. Просто потому, что система будет требовать отработки и сигналов STROBE и ACK. Если Вас это не устраивает, то выход один – писать собственный драйвер вооружившись DDK. Это, конечно, очень интересная тема, но в данной статье я не буду ее касаться.

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

HANDLE CreateFile(

 LPCTSTR lpFileName,

 DWORD dwDesiredAccess,

 DWORD dwShareMode,

 LPSECURITY_ATTRIBUTES lpSecurityAttributes,

 DWORD dwCreationDistribution,

 DWORD dwFlagsAndAttributes,

 HANDLE hTemplateFile

);

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

lpFileName

Указатель на строку с именем открываемого или создаваемого файла. Формат этой строки может быть очень хитрым. В частности можно указывать сетевые имена для доступа к файлам на других компьютерах. Можно открыват логические разделы или физические диски и работать в обход файловой системы. Однако для наших задач это не нужно. Последовательные порты имеют имена "COM1", "COM2", "COM3", "COM4" и так далее. Точно так же они назывались в MS-DOS, так что ничего нового тут нет. Параллельные порты называются "LPT1", "LPT2" и так далее. Учтите, что если у Вас к порту СОМ1 подключена мышь, Windows не даст открыть этот порт. Аналогично не удастся открыть LPT1 если подключен принтер. А вот с модемом дела обстоят немного по другому. Если какая-либо программа использует модем, например вы дозвонились до своего провайдера Internet, то Вашей программе не удастся открыть порт к которому подключен модем. Во всех остальных случаях порт будет открыт и Вы сможете работать с модемом сами, из своей программы.

dwDesiredAccess

Задает тип доступа к файлу. Возможно использование следующих значений:

0 Опрос атрибутов устройства без получения доступа к нему. GENERIC_READ Файл будет считываться. GENERIC_WRITE Файл будет записываться. GENERIC_READ|GENERIC_WRITE Файл будет и считываться и записываться. dwShareMode

Задает параметры совместного доступа к файлу. Коммуникационные порты нельзя делать разделяемыми, поэтому данный параметр должен быть равен 0.

lpSecurityAttributes

Задает атрибуты защиты файла. --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.