Меню Закрыть

Как проверить lpt порт на работоспособность

Содержание

Программный тестер LPT порта — Мерилин

Автор: Systemer
Опубликовано 26.03.2014
Создано при помощи КотоРед.

Дернул меня черт однажды заняться изваянием собственного программатора ПЗУ. Поскольку это не самая используемая вещь в моей лаборатории, решил его делать на LPT порт.

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

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

Почему Мэрилин? – Да она всем нравится.

Можно было написать программу, которая напрямую обращается к порту но, зачем изобретать велосипед. Быстро нашелся свободно распространяемый драйвер LPT порта – inpout32.dll пройдя по ссылке, вы найдете всю описуху, поэтому на этом не будем зацикливаться.

Пробный образец был выполнен за час, в Excel на VBA, и вполне себе работал. Но мне хотелось сразу всё доделать до конца, чтобы «забыть» этот вопрос, и я пересел за Delphi… Три дня как с куста ;(

Не простая, а очень простая. Реестр не требуется. Распаковываем архив, получаем три файла:

  • Inpout32.dll – драйвер LPT порта. Он может находится, как в папке с программой так и в системной, для WinXP это system32.
  • Исполняемый файл – собственно сама программа.
  • И файл хелпа.

Инсталляция закончена. Можно ещё для удобства создать shortcut/ярлык для Programmator.exe и поместить его, например на рабочий стол.

Работа с программой

После запуска программы вы получите вот такое вот окно:

Программа после запуска «обнуляет» порты, что равносильно нажатию кнопки «Сброс». Пойдем снизу вверх:

Строка состояния

В стоке состояния отображается слева, состояние самой программы, а справа состояние драйвера LPT порта. Здесь могут быть различные сообщения, поэтому не забывайте обращать на нее внимание.

Кнопка «Сброс»

Она загружает в порты «Data» и «Control» ноль, тем самым их полностью деактивируя

Кнопка «Читать порты»

Как понятно из названия – считывает, заполняет индикатор и поля ввода полученной информацией. Тут надо заметить, что это касается портов только «Data» и «Control», порт «Status» является доступным только для чтения и работает в автономном режиме постоянного опроса с периодичностью примерно 41 msec, что составляет примерно 24 раза в секунду. И вряд ли стоит увеличивать это значение ввиду с инерционностью человеческого зрения, и ввиду технических задержек LCD дисплеев.

Кнопка «?»

Собственно хелп, он и в Африке хелп.

Кнопка «Закрыть»

Осуществляет выход из программы. Программа после выхода не обнуляет предустановленные данные на LPT, это сделано намеренно, чтоб в случае надобности Ваши установки остались после остановки программы.

Если же такого не нужно, ничто не мешает перед выходом нажать кнопку "Сброс".

Ручная установка портов

Нижнее окно ввода всегда не активно это связано с тем, что « Status » порт предназначен, как сказано было выше, только для чтения. Но в случае появления сигналов от внешнего устройства, они незамедлительно будут показаны, вне зависимости от пользователя, в виде десятичной цифры от 0 до 31.

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

Индикатор

Индикатор всегда показывает состояние линий портов, т.е. лог.0 (черный цвет) или лог.1 (другой цвет), по аналогии со светодиодами.

Щелчок мышью на индикаторе включает его или выключает, соответственно изменяются состояния линий порта и окон ввода к ним. В такой активности не принимает участие « Status » порт по выше перечисленным причинам.

Если возникают вопросы их можно задать через мой сайт, в программе, кликнув мышкой на Мерилин. Архив с программой по ссылке ниже.

Бесплатная техническая библиотека:
▪ Все статьи А-Я
▪ Энциклопедия радиоэлектроники и электротехники
▪ Новости науки и техники
▪ Журналы, книги, сборники
▪ Архив статей и поиск
▪ Схемы, сервис-мануалы
▪ Электронные справочники
▪ Инструкции по эксплуатации
▪ Голосования
▪ Ваши истории из жизни
▪ На досуге
▪ Случайные статьи
▪ Отзывы о сайте

Справочник:
▪ Большая энциклопедия для детей и взрослых
▪ Биографии великих ученых
▪ Важнейшие научные открытия
▪ Детская научная лаборатория
▪ Должностные инструкции
▪ Домашняя мастерская
▪ Жизнь замечательных физиков
▪ Заводские технологии на дому
▪ Загадки, ребусы, вопросы с подвохом
▪ Инструменты и механизмы для сельского хозяйства
▪ Искусство аудио
▪ Искусство видео
▪ История техники, технологии, предметов вокруг нас
▪ И тут появился изобретатель (ТРИЗ)
▪ Конспекты лекций, шпаргалки
▪ Крылатые слова, фразеологизмы
▪ Личный транспорт: наземный, водный, воздушный
▪ Любителям путешествовать — советы туристу
▪ Моделирование
▪ Нормативная документация по охране труда
▪ Опыты по физике
▪ Опыты по химии
▪ Основы безопасной жизнедеятельности (ОБЖД)
▪ Основы первой медицинской помощи (ОПМП)
▪ Охрана труда
▪ Радиоэлектроника и электротехника
▪ Строителю, домашнему мастеру
▪ Типовые инструкции по охране труда (ТОИ)
▪ Чудеса природы
▪ Шпионские штучки
▪ Электрик в доме
▪ Эффектные фокусы и их разгадки

Читайте также:  Isbn что это такое

Техническая документация:
▪ Схемы и сервис-мануалы
▪ Книги, журналы, сборники
▪ Справочники
▪ Параметры радиодеталей
▪ Прошивки
▪ Инструкции по эксплуатации
▪ Энциклопедия радиоэлектроники и электротехники

Бесплатный архив статей
(150000 статей в Архиве)

Алфавитный указатель статей в книгах и журналах

Бонусы:
▪ Ваши истории
▪ Загадки для взрослых и детей
▪ Знаете ли Вы, что.
▪ Зрительные иллюзии
▪ Веселые задачки
▪ Каталог Вивасан
▪ Палиндромы
▪ Сборка кубика Рубика
▪ Форумы
▪ Карта сайта

Дизайн и поддержка:
Александр Кузнецов

Техническое обеспечение:
Михаил Булах

Программирование:
Данил Мончукин

Маркетинг:
Татьяна Анастасьева

При использовании материалов сайта обязательна ссылка на http://www.diagram.com.ua


сделано в Украине

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

Радиолюбители конструируют устройства, работающие совместно с компьютером и подключаемые к нему по интерфейсам COM, LPT, реже — PCI, ISA, USB и др. Примеров множество [1-5]. Это программаторы, эмуляторы, аналого-цифровые и цифро-аналоговые преобразователи и другое. Хотя за счет широких возможностей компьютера такие устройства значительно проще работающих автономно, но все же они после изготовления нуждаются в проверке и налаживании.

Тестировать подключаемое к компьютеру устройство с помощью его рабочей программы далеко не лучший вариант. Обычно в ней не предусмотрены функции вывода на экран значений сигналов на входных линиях интерфейса и их ручное изменение на выходных. В редких случаях к прибору (например, [4]) прилагают специальную тестовую программу, служащую для проверки прохождения сигналов по его цепям. Но для проверки других аппаратных средств такая программа, как правило, не годится.

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

Для налаживания устройств, подключаемых к порту СОМ компьютера, можно использовать программу ТСОМ, дающую возможность управлять отдельно каждым выходным сигналом порта и наблюдать за уровнями всех входных. Описание этой программы в [6] навело автора на мысль создать подобную для параллельного порта.

Так появилась программа LPTtest, способная контролировать все сигналы порта LPT. Программа протестирована под Windows 98 и Windows ХР, противопоказаний к работе в прочих версиях Windows нет.

Программа получает доступ к регистрам порта через программный драйвер LPTwdmlO [7]. При работе под Windows 9х/Ме потребуется установить этот драйвер вручную: запустить Мастер установки оборудования из Панели управления, выбрать в появившемся списке Другие устройства и указать папку, в которой находятся файлы Iptwdmio.sys и Iptwdmio.inf. По завершении установки необходимо перезагрузить компьютер.

А теперь — цитата из [7]: "При работе на ОС Windows 2000/ХР также возможна установка вручную аналогичным способом. Но в отличие от Windows 98/Ме при установке перезагрузка точно не потребуется, драйвер стартует сразу. Кроме того, у ручной инсталляции есть одно преимущество: если клиентская программа была запущена от имени пользователя, не обладающего правами администратора, она все равно сможет работать с портами через драйвер".

И еще одна цитата: "Автоматическая установка выполняется при создании объекта для работы с драйвером в программе пользователя в том случае, если программа работает на платформе семейства NT, т. е. Windows NT4/2000/XP и драйвер не были ранее установлены вручную. При этом со стороны пользователя не требуется каких-либо дополнительных действий. Но если программа стартует от имени пользователя, не обладающего административными полномочиями, автоматическая установка не произойдет и программа не сможет управлять портами".

Перед запуском программы LPTtest не забудьте скопировать файл Iptwdmio.sys в ту же папку, где находится файл LPTtest.exe. В ней же должны находиться файлы LPTpins.jpg (расположение гнезд розетки DB-25F) и LPThelp.mhtml (справка по интерфейсу LPT).

Окно программы LPTtest показано на рис. 1. В нем отображено состояние пяти входных, четырех выходных линий порта и восьми линий его шины данных. Надписями Low (низкий) или High (высокий) справа от каждой кнопки, изменяющей состояние выходной линии, и справа от каждого названия входной линии показан текущий логический уровень сигнала на соответствующем контакте разъема.

При запуске программа LPTtest устанавливает на всех выходах низкий уровень. Выведенное в строке состояния текущее значение кода в регистре данных порта (DR) в десятичной и шестнадцатиричной системах счисления программа обновляет с частотой 100 Гц.

Если подвести к любой кнопке или к названию входной линии указатель мыши, всплывает подсказка с номером этого контакта в стандартном для LPT-порта разъеме DB-25F.

Читайте также:  Hp proliant ilo 2 management controller driver

Чтобы увидеть изображение разъема, аналогичное показанному на рис. 2, достаточно выбрать в меню Помощь пункт Цоколевка разъема. Пункт Интерфейс LPT. того же меню выведет на экран содержимое файла помощи. Меню Выбрать порт предлагает в данной версии программы два варианта: LPT1 (базовый адрес 378h) и LPT2 (базовый адрес 278h).

Номер выбранного порта будет записан в файл Config.txt и прочитан из него при следующем запуске программы. Если такой файл не существует, программа создаст его в своей папке, выбрав по умолчанию порт LPT1.

Зависимые кнопки Выходы и Входы изменяют состояние пятого разряда регистра управления портом (CR), переводя этим шину данных в режим вывода (установлен по умолчанию) или ввода. Шина способна работать на ввод в большинстве современных компьютеров, адаптеры параллельного интерфейса устаревших моделей такой возможности не дают.

Когда шина данных настроена на ввод, ее линии соединены через предусмотренные в контроллере порта резисторы с источником напряжения +5 В. Поэтому логический уровень на линиях, к которым не подключены внешние цепи, воспринимается как высокий.

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

  1. Балахтарь А. Программатор с питанием от LPT-порта для КР1878ВЕ1. — Радио, 2004, № 1, с. 29, 30.
  2. Голубков А. Программатор МК ATMEL серии AT89. — Радио, 2003, № 9, с. 24, 25.
  3. Михеев В. Карта параллельного порта для ПК. — Радио, 2002, № 3, с. 19, 20.
  4. Рюмик С. "Параллельный" программатор для AT89. — Радио, 2004, № 2, с. 28- 31.
  5. Хабаров А. Двухканальная осциллографическая приставка к ПК. — Радио, 2003, № 4, с. 23-25.
  6. Долгий А. Как проверить PonyProg. — Радио, 2003, № 5, с. 25, 26.
  7. Проект LPTwdmlO. — progrex.narod.ru/lptwdmio.html.

Смотрите другие статьи раздела Микроконтроллеры.

Читайте и пишите полезные комментарии к этой статье.

Рекомендуем скачать в нашей Бесплатной технической библиотеке:

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

Комментарии к статье:

Тракторист
Почему на сервере журнала радио на который ссылаются авторы нет той информации о которой идет речь в статье "ПрограммаLPTtect. "?

Лет 10-15 назад параллельный порт был довольно востребованным интерфейсом для связи между устройствами. Сегодня производители различных устройств отдают предпочтение последовательным интерфейсам. Тем не менее, и сегодня LPT порт всё ещё можно встретить. А некоторые разработчики ещё пишут под него программы (или поддерживают написанные во времена расцвета параллельных интерфейсов). Но в компьютерах сейчас LPT порт – достаточно большая редкость. Существуют, конечно, платы расширения для компьютера, которые реализуют интерфейс LPT. Они в основном представляют собой платы на шине PCI. К сожалению, далеко не весь софт, который был написан для интегрированных в материнскую плату LPT портов, будет работать с LPT-PCI-платами.

Предлагается решение этой проблемы: программный класс, написанный под .NET, и динамическую библиотеку, которая работает с LPT. Данная реализация проверена на 32- и 64-разрядных Windows XP, Windows 7, 8 и 10 как со встроенными LPT портами, так и реализованными в виде плат расширения на шине PCI или PCI-Express. Скачать драйвер для LPT порта можно по ссылке внизу после статьи.

1 Установка драйвера для работы с LPT портом

В приложенном архиве находятся две папки – для 32-разрядной и для 64-разрядной версий Windows. В одной из папок лежит файл InstallDriver.exe. Сначала запустите этот файл, он установит динамические библиотеки в систему. После этого компьютер следует перезагрузить.

Чтобы использовать предлагаемый драйвер, файлы inpout32.dll и inpoutx64.dll должны располагаться в одной директории с исполняемым файлом вашей программы.

2 Программный класс использования библиотек работы с LPT портом

Мной был написан класс для .NET, который использует динамические библиотеки inpout32.dll и inpoutx64.dll и позволяет считывать из параллельного порта и записывать в его регистры данные.

Упомянутые библиотеки написаны не мной. Я предлагаю удобный класс-оболочку, упрощающий работу с данными библиотеками. Кроме того, автор библиотек в файле readme.txt сообщает, что его драйвер не поддерживает PCI устройства. Мне удалось его запустить для работы как с интегрированным параллельным портом, так и LPT портом, реализованном в виде платы расширения на шине PCI-Express. Причём порт отлично работает и на современной Windows10 x64, и на более старых системах.

Вот код класса LPT на языке VB.NET:

Код класса LPT на языке VB.NET (разворачивается)

Код класса LPT на языке C#:

Код класса LPT на языке C# (разворачивается)

3 Применение класса .NET для работы с LPT портом

Если мы посмотрим на список экспортируемых функций библиотеки inpout32.dll с помощью замечательного инструмента DLL Export Viewer от NirSoft, то увидим следующую картину:

Список экспортируемых функций библиотеки inpout32.dll

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

Читайте также:  Bootstrap вертикальное выпадающее меню

При инстанцировании класс сам определит, библиотеку какой разрядности ему использовать – inpout32.dll или inpoutx64.dll. Поэтому от пользователя не требуется никаких действий по инициализации или определения разрядности используемой dll. Вы можете сразу записывать или читать из LPT порта. Одно «Но»: если драйвер не установлен, обращение к любому из методов динамической библиотеки вызовет исключение, поэтому рекомендую использовать блоки Try…Catch для перехвата и обработки исключений.

Несколько примеров использования класса LPT.

Для определения, используется ли 64-разрядная версия драйвера (inpoutx64.dll при True) или 32-разрядная (inpout32.dll при False) (на самом деле, это знать не обязательно, класс использует именно ту библиотеку, которая нужна, но вдруг вам для чего-то понадобится это узнать из своей программы):

Для записи числа "123" в регистр контроля LPT порта вызовите из своего класса:

Для чтения одного байта из регистра данных LPT порта и чтения регистра статуса:

Здесь currentPortадрес LPT порта. Причём, если у вас интегрированный LPT порт, то его адрес будет, скорее всего, 378h. А если у вас LPT порт на плате расширения, то адрес будет другой, например, D100h или C100h.

Чтобы узнать адрес LPT порта, зайдите в диспетчер устройств Windows, найдите раздел Порты COM и LPT, выберите используемый параллельный порт, и в окне свойств (щёлкнув по нему правой кнопкой мыши) посмотрите, какие ресурсы использует выбранный порт (необходимо брать первое значение из диапазона).

Ресурсы, используемые LPT портом, в диспетчере устройств Windows

Например, в данном случае необходимо использовать номер порта C100.

Скачать вложения:

    Скачать драйвер для LPT порта (3746 Скачиваний)

Поделиться

Похожие материалы (по тегу)

Последнее от aave

Другие материалы в этой категории:

8 комментарии

Вы не подскажете,что дальше делать? Я скачал visual C , скопировал ваш код для С# и вставил. но при отладке выдает ошибки. Например такое: Ошибка 1 Элемент "ProjectData" не существует в текущем контексте. C:UsersРоманAppDataLocalTemporary ProjectsConsoleApplication1Program.cs 71 17 ConsoleApplication1
Я ни бум-бум. Но мне нужно изменить аддресацию для Pci-LPT платы St-lab i400 Parallel Port. Там значения нестандартные прописались D090-D097. Что делать? Хотелось бы иметь возможность активировать этот код

Роман, а что значит скачал "Visual C"? Дело в том, что нужна подходящая среда разработки (IDE), например, Visual Studio или Visual Studio Code. Какую вы используете? Конкретно по ошибке "Элемент "ProjectData" не существует в текущем контексте" я вам не подскажу. Скорее всего дело в настройках проекта, это уж смотрите сами. Попросите кого-то более опытного помочь настроить IDE. Код рабочий, 100%. Мне по работе приходится иметь дело со старым оборудованием, и я успешно использую его. Только я использую VB.NET, а код на C# получил путём декомпиляции готовой сборки. Попробуйте использовать код на VB.NET. Он к тому же проще для понимания новичкам.

Привет! Я понял, что я не то что-то делаю. Я попробую то что вы советуете — среду vb.net. Мне только главное знать,поможет ли это мне запустить старый лпт сканер 98 года: canoscan fb320p. Так как сканер отказывает работать с нестандартными адресами порта. Пока что единственный способ каким мне удалось решить эту проблему, это установка vmware player — добавление виртуального lpt, которому автоматом присваиваются правильные адреса и сканер тут же реагирует и начинает работать. Только есть в этом одна проблема: очень медленно! Минут 20-30 занимает сканирование 300 точек. Хотелось бы как-то решить эту проблему без vmware, но вот думаю, поможет ли этот код, так как я в описании функций не вижу там инструкций для смены аддресации.

Мне кажется, что для решения вашей задачи со сканером это решение не подходит, и запустить старый сканер не получится. Потому что придётся самому переписывать софт для сканирования. Ваша задача должна решаться как-то на уровне драйвера порта или той программы, которая используется для сканирования. Может быть, есть обновлённые драйверы для сканера с возможностью указывать адрес порта. А может проще найти старый комп, где на материнке присутствует LPT. Кстати, Asus до сих пор выпускает материнские платы с LPT под более-менее современные процессоры, например, модель H81M-C.

Спасибо тебе, добрый человек. Установка этого драйвера и замена inpout32.dll в директории исполняемой программы, помогли запустить софт, который ранее работал только на Win XP из под Win 10×64

Василий, рад, что помог!

В программировании я не разбираюсь. Есть такая проблема: для прошивки контроллеров AVR раньше использовал программатор AVReal. Он быстро и качественно работает. Покупая новый компьютер я специально искал материнку с LPT портом. Однако в Win10-64бит старые драйвера ввода-вывода не работают и они должны иметь цифровую подпись. Соответственно получаю сообщение об ошибке при использовании программатора. У меня вопрос: можно ли с Вашим драйвером LPT порта решить эту проблему? Какие шаги по установке и использованию я должен выполнить? Если не сложно, скиньте ответ на мою почту

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.