Робота з lpt-портом в win nt
LPT-порт має 12 вихідних і 5 вхідних ліній. Таке досить велика кількість ліній робить можливим підключення до порту нескладної апаратури, можливо навіть не має свого мікроконтролера. Тому цей порт, незважаючи на зникнення принтерів з LPT-інтерфейсом, активно використовується для підключення простих програматорів мікросхем пам'яті, JTAG-інтерфейсів для перепрошивки (заміни програмного забезпечення) супутникових ресивера, DVD-плеєрів та іншої електронної техніки. Популярний LPT-порт і у моддеров, оскільки дозволяє підключити до комп'ютера LCD-дисплеї без виготовлення складних плат-інтерфейсів.
Обмеження доступу до портів вводу-виводу для звичайних прикладних програм (які працюють в режимі користувача) дозволяє зробити операційну систему більш стабільною. Хоча з іншого боку ніхто не заважає програмісту написати драйвер, який звертається до портів.
Цікаво, що для процесора Intel x86 можна написати драйвер, який використовує один з двох принципово різних підходів. Перший варіант - драйвер сам звертається до портів, а прикладна програма тільки вказує драйверу, що робити. Цей варіант в загальному випадку є стандартним і кращим.
Для вирішення проблеми існують чотири популярних варіанти драйверів, що дозволяють прикладній програмі звертатися до портів введення-виведення: драйвер DLPortIO. драйвер UserPort. драйвер GiveIO.sis. драйвер Port95nt.
Всі чотири варіанти практично рівноцінні.
драйвер DLPortIO
Власне драйвер складається з двох складових:
• DLPortIO.dll - Win32 DLL, що забезпечує апаратні функції введення / виводу і
• DLPortIO.sys - драйвер для WinNT, що працює в режимі ядра ОС (не потрібно для Win95 / 98)
В установчому пакеті драйвера, крім цих двох компонентів, є ще файл Install.exe, що переміщає два вищеназваних в папку драйверів Windows і реєструє їх в системі.
Більше писати про цей драйвер і нічого. Налаштування не потрібно. Завантажили, встановили, користуємося. Не забуваємо заглянути в кінець статті і почитати про додаткові заходи забезпечення працездатності LPT-порту.
Установка елементарна - запускаємо файл Install.exe, встановлюємо. По закінченню установки заглядаємо в папку C: \ Windows \ System32 \ drivers і перевіряємо наявність двох файлів драйвера (DLPortIO.sys і DLPortIO.dll). Якщо бачимо, що ці файли так і не скопіювали, беремо їх з інсталяційного пакета і копіюємо вручну. Не переживайте, з комп'ютером нічого поганого не трапиться. Перевантажуємо комп'ютер і працюємо з LPT-портом.
Якщо раптом, в результаті маніпуляцій з обладнанням, ви отримаєте від драйвера повідомлення такого плану: "dlportio.sys device driver not loaded. Port I / O will have no effect", не варто панікувати. Виправляється ця проблема так:
• Запускаємо regedit.
• Заходимо в реєстрі в гілку HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \.
• У папці dlportio змінюємо значення параметра Start на 1.
• Перезавантажуємо комп'ютер.
драйвер UserPort
В архіві драйвера є три файли:
• UserPort.sys - драйвер для WinNT, що працює в режимі ядра ОС,
• UserPort.exe - програма для настройки драйвера і
• UserPort.pdf - файл опису.
Установка UserPort:
• 1. Розпакуйте архів в окрему папку.
• 2. Скопіюйте файл UserPort.sys в C: \ Windows \ System32 \ drivers
Налаштування UserPort:
• Увімкніть UserPort.exe.
• Перед нами з'явиться панель з 2-ма віконцями.

Ліве віконце ставиться до роботи програми в ДОС вікні, праве на повному екрані. За замовчуванням в них прописані номери портів LPT - все їх можна видалити за допомогою кнопки "Remove". В обидва вікна потрібно вписати потрібні номери портів, які планується використовувати.
Додаємо так:
0x378-0x378
0x37A-0x37A

Заходимо в Панель Управління. Система. вибираємо закладку Устаткування. Диспетчер пристроїв. заходимо в Порти (COM і LPT) і дивимося властивості LPT порту, по якому ви хочете встановити з'єднання. У Свойствах відкриваємо закладку Ресурси і дивимося значення параметра Діапазон введення / виведення (I / O). (Зазвичай в Windows XP воно дорівнює 378 - 37F)
Потім натиснути кнопку "Update", при цьому драйвер буде зареєстрований в системі, потім "Exit". Зрозуміло, кнопку "Stop", поки ми користуємося драйвером, натискати не потрібно.
Для перевірки, чи з'явився доступ до портів, можна запустити програму "lpt-test.exe".
Відсутня порт LPT2
Відсутня порт LPT3

Якщо регістри Dx або Ux несправні, то виводиться повідомлення "немає 0" або "ні 1" і вказується номер контакту на LPT-роз'ємі (сигнали на цьому контакті можна подивитися осциллографом). На вході регістру статусу Sx може бути як "0" так і "1", але зазвичай, коли до порту LPT нічого не підключено, на всіх входах регістру статусу є "1". Поява ж на вході регістру статусу "0" може бути ознакою того, що вхід пробитий, якщо раніше там завжди була "1".
На деяких машинах, якщо регістр даних або регістр управління несправні, то доступ до LPT-порту взагалі не з'являється. Мабуть, BIOS при включенні комп'ютера тестує порт LPT і, якщо він несправний, то відключає його.
Якщо виникають проблеми, можливо, роботі заважають якісь драйвера, періодично посилаючи імпульси в порт LPT (це можна побачити осциллографом). Наприклад, можна в налаштуваннях принтера відключитися від порту LPT:
вимкнути LPT1: Порт принтера
включити FILE: Друкувати в файл
Після того, як всі проблеми усунені і тест пройдено, повинен з'явитися доступ до портів і можна запускати програму, яка використовує LPT-порт. В іншому випадку пристрій, підключений до порту на такій машині працювати не буде.
драйвер GiveIO.sys
Однак, якщо ви абсолютно впевнені в тому, що необхідні порти введення-виведення ніхто крім вас не використовує (наприклад, у вас немає принтера, підключеного до LPT), ви можете спокійно користуватися драйвером GiveIO.sys.
• 1. Скачайте архів, розпакуйте і скопіюйте файл GiveIO.sys в каталог C: \ Windows \ System32 \ Drivers (мається на увазі, що ваша Windows встановлена в каталог C: \ Windows).
• 2. Запустіть файл install.reg. На екрані з'явиться наступне повідомлення:

• 4. Перевантажуємо комп'ютер і перевіряємо роботу програм, що користуються драйвером.
Драйвером GiveIO.sys народ активно користується, і, з часом, з'явилися й інші варіанти його установки.
Наприклад - драйвер GiveIO.sys при наявності файлу з "інформацією про обладнання" GiveIO.inf можна встановити через аплет "Установка устаткування".

Драйвер GiveIO.sys ми покажемо операційній системі, щоб вона повірила в існування обладнання "GiveIO".
Завантажити комплект файлів для такого варіанту установки драйвера GiveIO.sys (giveio_sys_v2.rar - 78kb). Архів містить файли GiveIO.sys і GiveIO.inf, а так само докладну інструкцію по установці з ілюстраціями.
Крім варіантів "ручний" установки драйвера, написано кілька варіантів інсталятора, що виконує установку в автоматичному режимі.
Завантажити комплект файлів для автоматичної установки драйвера GiveIO.sys (giveio_sys_install.rar - 28kb). Архів містить файли GiveIO.sys і instdrv.exe, а так же файл remove-giveio.cmd, за допомогою якого драйвер GiveIO.sys можна видалити з системи.
драйвер Port95nt
Термін "драйвер Port95nt" тут буде не зовсім коректний. По суті, це той же драйвер DLPortIO з пакета DriverLINX від Scientific Software Tools, Inc. тільки в повному варіанті, з парою утиліт управління портом, з описом і безліччю прикладів для програмістів. Рядовому користувачеві ніякої користі від додаткових компонентів немає, а компоненти драйвера DLPortIO.sys і DLPortIO.dll абсолютно такі ж, як і в скороченій версії.
Згадав про Port95nt, як про драйвер, з двох причин. Перша - для повноти переліку зустрічаються в інтернеті згадок про драйвери LPT-порту.
додаткові заходи
Крім установки одного з вищеназваних драйверів, для нормальної роботи порту LPT під ОС WinXP необхідно зробити правку реєстру за допомогою REG-файлу xp_stop_polling.reg (xp_stop_polling.rar - 0,48kb)
Під WinXP іноді нестабільно працюють пристрої, що використовують LPT-порт. Причиною таких збоїв може бути робота підсистеми Plug-and-Play (PnP) в Windows, періодично опитувати LPT з метою виявлення підключених пристроїв. Таке опитування проводиться при завантаженні системи, але воно може відбуватися і при роботі. На жаль, драйвер DLportIO.sys і інші варіанти драйверів не блокують доступ до LPT від інших програм при роботі з портом клієнта даного драйвера і підсистема PnP впевнена, що порт чи не зайнятий, звертається до нього і порушує роботу зовнішніх пристроїв. Для усунення проблеми і служить REG-файл xp_stop_polling.reg. Цей файл прописує в реєстрі Windows ключ, який забороняє таке опитування (poll) під час роботи системи.
Конфігурації через BIOS Setup підлягають наступні параметри:
• Використана лінія запиту переривання, для LPT1 зазвичай використовується IRQ7, для LPT2 - IRQ5. У багатьох "настільних" застосуваннях переривання від принтера не використовуються, і цей дефіцитний ресурс PC можна заощадити. Однак при використанні швидкісних режимів ЕСР (Fast Centronics) робота по перериваннях може помітно підвищити продуктивність і знизити завантаження процесора.
У той же час, режим ЕСР можна використовувати з пристроями, які вимагають жорстких таймингов (программаторами і JTAG-інтерфейсами).
На завершення трохи про термінологію: