Работа с коммуникационными портами

13418
знаков
1
таблица
1
изображение

2. Работа с коммуникационными портами

 

2.1 Описание COM-портов

Коммуникационные порты компьютеров (LPT и COM) широко используются для управления различными периферийными устройствами, такими как принтеры, сканеры, плоттеры, а так же для связи с промышленными объектами в системах автоматизации управления. Через последовательный порт так же осуществляется связь с удаленными объектами через модем, включая и выход в глобальную сеть Internet.

В то же время в учебно-методической литературе схемотехника и методика применения портов компьютера освещена достаточно слабо. В частности не освещены новые режимы работы параллельных портов, такие как EPP и ECP, используемые в современных компьютерах.

В данную работу включено описание принципов организации параллельных и последовательных портов и их схемотехники. Она позволяет изучить программные методы обмена информацией через указанные порты на низком уровне, что важно не только для решения конкретных задач, например, связи с принтером, но и для освещения основных принципов программного управления объектами.

Архитектура ПК.

Сначала определимся, что же такое работа на высоком и на низком уровне. Под работой на высоком уровне понимают обращение к порту через ОС и под её контролем.

Дело в том, что в Windows обращение к любому устройству аналогично обращению к одноимённому файлу. То есть, если мы хотим считать данные из порта, например, COM1, то мы должны открыть файл с именем “COM1”. Для этого используются WinAPI функции OpenFile("COM1",,,,,), ReadFile, WriteFile, CreateFile и т.д. Их описание есть в «помощи» любого языка и в соответствующей литературе, в т.ч. и в [1], по этому мы не будем на них подробно останавливаться. Эти функции являются функциями ОС, а не языка, по этому одинаковы во всех языках программирования. Отличается лишь форма их записи.

Под работой на низком уровне понимают непосредственное обращение к регистрам контроллера порта из адресного пространства. АП - это абстрактное понятие, выражающее отправную точку, относительно которой происходит адресация всех устройств компьютера.

Работа на высоком уровне позволяет легко реализовывать протоколы и функции, заложенные разработчиками ОС, но затрудняет реализацию собственных. Работа на низком уровне напротив, открывает широкие возможности для творчества, но реализация более-менее сложного протокола может потребовать знания ассемблера, много времени и, скорее всего, будет нагружать процессор лишними функциями. Кроме того, доступ к некоторым регистрам (а след. и ножкам) порта невозможно (без специальных знаний) получить из адресного пространства и наоборот, некоторые комбинации выводов невозможно «зажечь» с помощью API. Таким образом, работа на высоком и на низком уровне, это не взаимоисключающие понятия, а всего лишь разный подход к управлению портом.

 

2.2 Структура стандартного порта

 

Структура%20порта3

Рис.1 Структура стандартного порта.


Этот макет наиболее наглядно представляет структуру стандартного порта ввода/вывода, к которым относятся COM и LPT.

Как видно, порт содержит базовый регистр – это первый этап на пути к нужной ножке из АП. Базовый регистр содержит в себе несколько подрегистров (ПР) (называемых ещё «смещением адреса»). В зависимости от их типа, связь их с БР может быть двусторонней (запись и чтение) или односторонней (запись или чтение).

Каждому ПР соответствует какое то количество ножек порта. Т.е. разные ножки порта принадлежат разным подрегистрам и для того, чтобы выставить на них какое-то состояние или считать его с какой-нибудь ножки, надо сначала обратится к соотв. ей ПР.

Некоторые ПР вообще не имеют непосредственного отношения к выводам порта, т.к. являются регистрами состояния. Их используют для настройки порта. Например, некоторое количество ножек порта могут работать на передачу/приём. Для того, чтобы установить режим их работы (передача, приём или передача и приём) в соотв. ПР порта записывают определённый код. Ориентируясь на него, контроллер порта устанавливает соотв. режим работы этих ножек.

Каждой ножке в ПР соответствует весовой коэффициент в двоичном коде. Т.е. для того, чтобы выставить “1” на каком то выводе порта, нужно записать в соответствующий ей подрегистр её весовой коэффициент. Напротив, при считывании состояния входной линии порта, порт вернёт не состояние “0” или “1”, а “0” или “N”, где N – весовой коэффициент данной ножки. Возвращение портом “0” означает, что на входе “0”. Возвращение же “N” означает, что на входе “1”.

Указанные действия в языке Паскаль 7.0 выполняет процедура port[]. Формат её записи следующий: port[b+n]:=m; Где:

b – адрес БР порта.

n – номер подрегистра.

m – весовой коэффициент вывода.

Попробуем с её помощью установить “1” на выводе RTS(7) COM порта.

Для этого обратимся к таблице 1:

 

Таблица 1. Назначение контактов COM порта (разъём DB-9S.)

Сигнал. Контакт разъёма DB-9S. Направление. Подрегистр. Вес.
TxD 3 Передача. Х Х
RxD 2 Приём. Х Х
DTR 4 Передача. 4 1
DSR 6 Приём. 6 32
RTS 7 Передача. 4 2
CTS 8 Приём. 6 16
DCD 1 Приём. 6 8
RI 9 Приём. 6 64
GND 5 Земля. X X

Как следует из таблицы, выводу RTS соответствует 7 контакт стандартного девятиконтактного COM порта. Он относится к 4 подрегистру и имеет в нём вес равный 2.

Адрес базового регистра, это адрес порта. Для COM1 он равен $3F8 (для COM2 - $2F8, для LPT1 - $378, LPT2 - $278).

Теперь разберёмся, как читать состояние входов.

Как уже говорилось выше, порт возвращает “0”, если на входе “0”, и “N”, если на данном входе “1”. Причём в некоторых случаях (особенно, при работе с LPT) “N” может быть равно сумме кодов ножек, если “1” присутствует не на одном входе.

Осуществляется приём следующим образом: e:=port[b+n] and m;

Где: e – переменная типа byte, в которую сохраняют принятое значение.

b – адрес БР порта.

n – номер подрегистра.

m – весовой коэффициент входа (см. таблицу 1).

Для проверки этой записи соединим перемычкой выход RTS(7) и вход CTS(8) и запустим приведённый ниже код: (пример 1)

var

aa,e:word;

port,base,data:word;

{.........}

aa:=0;

base:=$3F8;

begin

port:=base+4;

data:=2;

outport(port,aa,data);

sleep(10);

port:=base+6;

e:=inport(port) and 16;

port:=base+4;

data:=0;

outport(port,aa,data);

end;

Управлять конкретными выводами порта из под Дельфи можно и с помощью API. Это хоть и сложнее, зато такая программа будет работать на любом Windows, в т.ч. на NT, 2000, XP (приведённые выше пример работоспособен лишь в 95/98/МЕ).


Список использованной литературы

 

1) Работа с коммуникационными портами (COM и LPT) в программах для Win32. http://bcb.net.ru/article/hard/index003.html

2) Коммуникационные порты персонального компьютера. http://electronics.org.ua/techinfo/lpt/lpt.htm

3) Основы программирования LPT для DOS и Win9x. http://radiopirat.h11.ru/prog/prog004.htm

4) Примеры работы с АЦП. http://dikoy44.narod.ru/photoalbum.html

5) Вакуленко А. Программа LPTtest. – Радио, 2004, №8, с. 23,24.

6) Патрик Гёлль. Как превратить ПК в измерительный комплекс. ДМКпресс, 2002г.

7) Фаронов В.В. TurboPascal 7.0 практика программирования, учебное пособие, М., изд. Нолидж, 2003 г.

8) Павловская Т.А. Паскаль. Программирование на языке высокого уровня, учебник, П, 2003 г.


Информация о работе «Коммуникационные порты»
Раздел: Информатика, программирование
Количество знаков с пробелами: 13418
Количество таблиц: 1
Количество изображений: 1

Похожие работы

Скачать
52048
2
7

... 14h, однако на высоких скоростях это неэффективно. Говоря о СОМ-порте PC, по умолчанию будем подразумевать совместимость регистровой модели с i8250 и реализацию асинхронного интерфейса RS-232C. Использование СОМ-портов СОМ-порты чаще всего применяют для подключения манипуляторов (мышь, трекбол). В этом случае порт используется в режиме последовательного ввода; питание производится от интерфейса ...

Скачать
42429
0
0

... , как всегда, из соображений совместимости с предыдущими версиями. Вкратце его суть в том, что бы обеспечивать максимальную скорость соединения с хостом. Подключенное к высокоскоростному (USB 2.0) порту старое медленное (USB 1.1) устройство съедало бы значительную часть времени, а следовательно и полезной пропускной способности шины, ведя обмен с хостом на низкой скорости (почему так происходит мы ...

Скачать
509004
6
0

... ? 8. Какими программами можно воспользоваться для устранения проблем и ошибок, обнаруженных программой Sandra? Раздел 3. Автономная и комплексная проверка функционирования и диагностика СВТ, АПС и АПК Некоторые из достаточно интеллектуальных средств вычислительной техники, такие как принтеры, плоттеры, могут иметь режимы автономного тестировании. Так, автономный тест принтера запускается без ...

Скачать
168434
13
20

... льготы для предприятий, покупающих российские товары, и запретить закупки иностранных товаров для государственных  нужд.   2.5 Специфические инструменты стимулирования открытых инноваций в отрасли информационно-коммуникационных технологий в России   Термин «специфические инструменты» обозначает инструменты, которые разработаны для определенной отрасли, в частности для отрасли ИКТ. К ...

0 комментариев


Наверх