Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Mobtime Cell Phone Manager v5.3.1
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Компьютеры -> Разное -> Другая «жизнь» LPT порта (часть 1)


Другая «жизнь» LPT порта (часть 1)

Предисловие


Не ожидал, что моя первая статья вызовет такой интерес среди программистов и электронщиков, т.к. я получил массу писем с вопросами и продолжаю их получать до сих пор, хотя прошло уже почти три года с момента написания статьи. Кроме того в первой статье был допущен ряд неточностей. Это все и побудило меня на написание более подробной статьи на эту тему, в которой я постараюсь ответить на большинство вопросов уважаемых читателей и исправить те неточности, которые были допущены в первой статье. Пусть не обижаются на меня читатели первой статьи, но мы снова рассмотрим подробно каждый контактик и битик нашего LPT порта. В первой части статьи будет рассмотрена теория, во второй и последующих (если они будут) мы будем рассматривать электронные устройства, которые можно «подцепить» к этому порту.

  • В тексте вы встретитесь с общепринятой аббревиатурой записывания чисел
  • Например, - двойка в нижнем индексе указывает, что число 5 представлено в двоичном исчислении
  • – десятка в нижнем индексе, говорит о том, что число 124 десятичное
Это так… на всякий случай

Как показала практика, все программы, правильно написанные и дополненные соответствующими библиотеками (vbio32.dll, inpout32.dll, dlportio.dll и т.д.) работают на большинстве компьютеров с операционными системами семейства Windows. Я проверял работу всех своих программ (Visual Basic5.0, 6.0) на Win95, 98, Me, 2000, XP HE, XP Prof и даже в DOS6.22 (QBasic) – все работает прекрасно. В DOS-е вообще никаких библиотек не надо, там все и так работает. Сразу оговорюсь, что vbio32.dll и inpout32.dll НЕ БУДУТ РАБОТАТЬ ПОД Win2000, но совершенно спокойно будут работать под Win95, 98, Me.
Кстати, взять любую из этих библиотек вы можете здесь. Мне захотелось попробовать dlportio.dll и в данный момент я работаю с этой библиотекой. Ну и последнее, перед написанием программ необходимо правильно объявить библиотеку, которую вы используете.

  • Для inpout32.dll
    Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
    Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
  • Для dlportio.dll
    Private Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
    Private Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)

Чем отличается Private от Public я писать не буду.

Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3). В данной статье мы будем рассматривать только LPT1. Адресное пространство данного порта занимает диапазон &H378-&H37F.

  • Адрес &H378 называется базовым и служит для записи (чтения, но об этом попозже) данных в порт, на линии D0-D7.

  • Адрес &H379 (базовый+1) предназначен для чтения битов состояния с устройства, подключенного к LPT-порту (принтер, сканер и т.д)

  • Адрес &H37A (базовый+2) служит для записи битов управления устройства, подключенного к LPT-порту (принтер, сканер и т.д.).

Контакты 18-25 – «земля» (общий, GND, GROUND и т.д.)

Рассмотрим программирование каждого из адресов

  • Базовый адрес &H378 (LPT1) позволяет записывать данные в порт на линии D0-D7 в диапазоне от 0 до 255
  • Записываем в порт число 69

    Код следующий. Для тех, кто использует
    inpout32.dll dlportio.dll DOS
    Out &H378, 69 DlPortWritePortUchar &H378, 69 OUT &H378, 69

  • Адрес &H379 служит для чтения битов состояния
  • Читаем состояние порта по адресу &H379

При чтении адреса &H379 необходимо помнить, что первые три бита – не используются и всегда имеют значение лог. «1», а 7-й бит – инверсный. В результате если все контакты 15, 13, 12, 10, 11 посадить на «землю», то при чтении информации вы получите на первых трех битах (которые не используются) 1+2+4 и на 7-м бите (контакт 11-инверсный, значит, при замыкании на землю будет лог. «1») +128 итого 135. Об этом не надо забывать. Во второй части статьи мы остановимся на этом более подробно.

    Код следующий. Для тех, кто использует
    inpout32.dll dlportio.dll DOS
    Dim A as Integer
    A = Inp(&H379)
    Dim A as Integer
    DlPortReadPortUchar(&H379)
    DEFINT A-Z
    A=INP(&H379)

  • Адрес &H37A служит для записи битов управления
  • Записываем сигнал -STROBE (бит управления 0)

    Код следующий. Для тех, кто использует
    inpout32.dll dlportio.dll DOS
    Out &H37A, 10 DlPortWritePortUchar &H37A, 10 OUT &H37A, 10

    Почему 10? Давайте посмотрим в табличку

    Сигналы STROBE, AUTO, SELECT IN – инверсные, значит, чтобы на выходе контактов разъема 1, 14, 17 получить логическую «1» надо подать на эти биты логический «0», т.е. подали одно – получили противоположное. Сигнал INIT прямой (не инверсный), поэтому логическая «1» на контакте 16 появится тогда, когда мы подадим на этот бит логическую «1», т.е. что подали, то и получили.
    Попытаемся получить на контактах 1,17 – низкий уровень сигнала «0», а на контактах 14 и 16 высокий уровень сигнала «1», т.е. на выходе контактов 1,14,16,17 будет присутствовать 0 1 1 0

    На нулевой бит (-STROBE) подаем «1» (на контакте 1 будет «0»), на первый бит (-AUTO) подаем «0» (на контакте 14 будет «1»), на второй бит (INIT) подаем «1» (на контакте 1 будет «1») и, наконец, на третий бит (-SELECT IN) подаем «1» (на контакте 17 будет «0»), т.е. мы записали по адресу &H37A число 10112,-это 1310. Значит, чтобы на выходе получить 6 надо подать 13.

    Для удобства привожу таблицу со всеми возможными комбинациями чисел от 0 до 15

Ну и, наконец, последнее в этой части статьи. Если ваш компьютер поддерживает стандарт EPP, то четвертым битом по адресу &H37A вы сможете разрешить прерывание (для LPT1 это IRQ7) от принтера, только не спрашивайте меня что это такое, я все равно ничего не знаю про прерывания. А вот пятым битом , например, подав число , вы устанавливаете шину D0-D7 в режим ПРИЕМА данных. При этом все разряды (контакты 2-9) принимают значение логической «1». Чтобы подать на нужный контакт логический «0» надо замкнуть его через сопротивление 240 – 360 Ом на «землю». Таким образом, через LPT порт компьютера мы получаем в стандартном виде устройство с 12-ю выходными сигналами и 5-ю входными, а при переводе порта в режим EPP мы получаем 4 выходных сигнала и 13 входных сигналов.


Конец первой части.
Во второй части статьи мы будем подключать к порту различные электронные штучки

Автор: Александр Новожилов
Источник: www.infocity.kiev.ua

Ссылки по теме
Сборка ПК дома - это не плохо, это - полезно
Грамотный апгрейд, или скрытые резервы вашего компьютера
Покупаем персональный компьютер. Что выбрать?...
Как выбрать правильный компьютер?
 
Компьютерная документация от А до Я - Главная

 
Популярные книги

Windows XP для всех

Подробнее

Ремонт и обслуживание компьютера дома

Подробнее

Дизайн помещений и интерьеров в 3ds max 7 (+CD)

Подробнее

 

 
Новости ИТ
20.11.2008  USB 3.0 полностью готов к старту
20.11.2008  QIP Infium 9019, Nightly build 5
20.11.2008  «Энвижн Груп» начинает оказывать услуги сертификационного аудита информационных систем на соответствие международному стандарту защиты информации в индустрии платежных карт PCI DSS
20.11.2008  Moonlight, Linux-версия Silverlight, приблизилась к статусу бета
20.11.2008  Вышла альфа-версия Adobe Flash Player 10 для 64-битных Linux-систем
20.11.2008  NASA переходит на Open Source-систему мониторинга проблем
20.11.2008  VIA сотрудничает с проектом Open Source-драйвера OpenChrome
19.11.2008  Домен .UA откроют для всех?
19.11.2008  Лучшие консольные игры 2008 года
19.11.2008  Производители ноутбуков минимизировали запасы комплектующих
19.11.2008  E-Disk Altima E3F4FL
18.11.2008  Asus выпустила новую модель ноутбука Eee PC
18.11.2008  ASUS P565
18.11.2008  Лучшие моменты в жизни Microsoft
18.11.2008  Samsung Eternity
18.11.2008  Компания A-DATA Technology официально обнародовала окончательный перечень подготовленных ею к релизу трёхканальных наборов памяти DDR3
17.11.2008  Safari 3.2
17.11.2008  Программист из Виржинии взломал защиту Windows 7
17.11.2008  В офисном пакете StarOffice появилась поддержка Mac OS X
17.11.2008  Сегодня начинается акция OLPC G1G1 в Европе и России
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100