Перейти к контенту
						
						Тема: Проверка работоспособности LPT порта  (Прочитано 17658 раз)
					
0 Пользователей и 1 Гость просматривают эту тему.
подскажите каким образом можно проверить работоспособность LPT порта, дело в том что перестал видеть ресиверы через JTAG пробовал разные шнурки, и разные ресиверы на разных процах
« Последнее редактирование: 12 Февраля 2009, 11:03:37 от Demkaalex_KZ »
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
Качни прогу TCom. С помощью ее меняй уровни и замеряй прибором.
дело в том что перестал видеть ресиверы через JTAG
Так COM порт или LPT?
								Записан
							
извиняюсь LPT, хоть материнку выбрасвый расстроился я
программку скачал, спасибо, а как ей пользоваться?
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
программку скачал, спасибо, а как ей пользоваться?
Эта прога для com порта. Щелкаешь мышкой по выводам на рисунке и замеряешь прибором, меняются уровни или нет.
Для LPT порта даже не знаю. Хотя есть исходники проги для линукс    http://linuxforum.ru/index.php?showtopic=28492&hl= может пригодится, я собирал, работает.
У меня тоже один раз была проблема с LPT портом, думал ппц мамке, на следующий день включаю комп а LPT работает    Хотя до этого комп перезагружал. Х.з что было, в комповском железе мало разбираюсь
								Записан
							
Эта прога для com порта. …
Для LPT порта даже не знаю…
аналогичная для LPT… сам не пользовал…
« Последнее редактирование: 12 Февраля 2009, 18:47:03 от _Aleks_ »
								Записан
							
аналогичная для LPT… сам не пользовал…
При запуске пишет
Ошибка при создании объекта Lpt, код = 2
Вообще то режим совместимости помогает   
_Aleks_, спасибо за прогу, пригодится.
								Записан
							
Зачем выкидывать мамку, можно поискать платку на PCI LPT расшеритель, должна быть в природе, сам на PCI-Ex ищу!
								Записан
							
Всего знать не возможно, мозг заражён этим вирусом!
								Spot_xr7
							
Она не просто должна быть, она есть, сам такую пользую дома, но только PCI-to-LPT+COM port…
								Записан
							
но если попытаться ее купить, то проще мамку новую взять  
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
Demkaalex_KZ, ну что, порт проверил?
								Записан
							
проверка показала что он работоспособен. сегодня стопил в бане кабель джитаг, завтра буду паять новый
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
Модераторы: Ruz_and, Master-VRI, al-drw, Мастак
- 
Виктор.В
 - Сообщения: 22
 - Зарегистрирован: Чт мар 31, 2011 09:58
 
драйвер LPT
помогите прога пишет вежливый отказ на запуск в виде: Ошибка при создание объекта LPT, драйвер ERROR, код=2. а поменять драйвер не получаеться! windows7
- 
Master-VRI
 - Site Admin
 - Сообщения: 929
 - Зарегистрирован: Пн ноя 10, 2008 00:00
 
Re: драйвер LPT
Сообщение Master-VRI » Вс апр 03, 2011 14:12
не видит ЛПТ порта, посмотрите настройки в БИОСе
- 
Радист
 - Сообщения: 33
 - Зарегистрирован: Вт окт 11, 2011 12:38
 
Re: драйвер LPT
Сообщение Радист » Вт окт 11, 2011 13:00
запустил в режиме совместимости win98, следующие версии не дают прямого доступа к LPT, правда еще не знаю, как работать будет, там еще какая-то ошибка вылазит))
- 
Радист
 - Сообщения: 33
 - Зарегистрирован: Вт окт 11, 2011 12:38
 
Re: драйвер LPT
Сообщение Радист » Пн ноя 07, 2011 19:40
не работает, пришлось второй винт мутить, ставить XP
| Рекомендуем | |
| 
 | 
|
Вернуться в «VRI-cnc»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей
- 18 Апр 2007
 
Epson LQ-1050+  ошибка порта LPT
Загнулся домашний принтер. Печать на всю ширину и не набранный файл а вместо букв что-то непонятное. При подключении к ноутбуку выдает сообщение «Ошибка порта LPT». Принтер старый но удобный не нужно следить за картриджами, схемы прямо простыни печатал. Полагаю сначала проверить питание — если кто имеет прошу поделиться сервис-мануалом ну и советом, принтеров раньше ремонтировать не приходилось.
- 18 Апр 2007
 
Прогони на неподключенном к компьютеру принтере тестовую страницу.
Если все ОК то LPT кабель проверь сперва.
- 18 Апр 2007
 
Несколько схем и какой-то мануал нашел уже сам. Кабель менял, не помогло, запустить тестовую не догадался — спасибо, проверю вечером.
- 19 Апр 2007
 
| 
 2 / 2 / 0 Регистрация: 29.01.2011 Сообщений: 69  | 
|
| 
 1  | 
|
| 
 04.02.2013, 21:04. Показов 4474. Ответов 8 
 Вечер добрый! Отдали старую материнку с LPT портом на борту. LPT порт в диспетчере присутствует и «типо» работает нормально. Организовываю Jtag интерфейс, запускаю OpenOcd 0.6.1: Причем на другом ПК все отлично работает! Паленый порт или косо настроен драйвер? 0  | 
| 
 21297 / 12107 / 653 Регистрация: 11.04.2010 Сообщений: 53,466  | 
|
| 
 04.02.2013, 21:42  | 
 2  | 
| 
 а в биосе посмотрите… там несколько параметров — режим, прерывание, канал… 0  | 
| 
 2 / 2 / 0 Регистрация: 29.01.2011 Сообщений: 69  | 
|
| 
 04.02.2013, 22:08 [ТС]  | 
 3  | 
| 
 			Уже был… 0  | 
| 
 21297 / 12107 / 653 Регистрация: 11.04.2010 Сообщений: 53,466  | 
|
| 
 04.02.2013, 22:13  | 
 4  | 
| 
 			хм, паленый… в принципе выжечь его очень легко, как и com Добавлено через 33 секунды 0  | 
| 
 2 / 2 / 0 Регистрация: 29.01.2011 Сообщений: 69  | 
|
| 
 04.02.2013, 22:24 [ТС]  | 
 5  | 
| 
 			Все перенастраивал, ошибок нету. Быть может вы могли бы предложить альтернативу? Преобразователь интерфейса USB -LPT? (слышал что многие разрабатывались лишь для подключения принтеров, но мне нужен полностью идентичный интегрированному порт) 0  | 
| 
 21297 / 12107 / 653 Регистрация: 11.04.2010 Сообщений: 53,466  | 
|
| 
 04.02.2013, 22:42  | 
 6  | 
| 
 			полностью идентичный… он довольно редкий зверь, и совсем не дешевый 0  | 
| 
 10229 / 6607 / 498 Регистрация: 28.12.2010 Сообщений: 21,159 Записей в блоге: 1  | 
|
| 
 05.02.2013, 10:45  | 
 7  | 
| 
 …а дрова к этим прошивальщикам 64-битные? Ponyprog пробовали? Драйвер под него DLPortIO 64-бит тоже должен быть: 0  | 
| 
 6 / 6 / 0 Регистрация: 29.06.2018 Сообщений: 1,536  | 
|
| 
 09.12.2018, 18:53  | 
 8  | 
| 
 			А под Windows 7…Windows 10 x32/x64 есть? 0  | 
| 
 189 / 151 / 16 Регистрация: 10.10.2014 Сообщений: 631  | 
|
| 
 10.12.2018, 11:55  | 
 9  | 
| 
 
 полностью идентичный… он довольно редкий зверь, и совсем не дешевый а как насчёт PCI->LPT или PCIe->LPT? Они не особо дорогие на Али. PCIe->LPT+2хCOM купил за 12$. Нужно было принтер подключить для ЛУТ-а и COM порты ещё для последовательного прошивания тинек. Сейчас они должны быть дешевле. Добавлено через 3 минуты 0  | 
| 
 IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604  | 
10.12.2018, 11:55 | 
| 
 Помогаю со студенческими работами здесь LPT port LPT  C++  Builder (первый… LPT и txt Работа с LPT Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 9  | 
						Тема: Проверка работоспособности LPT порта  (Прочитано 17683 раз)
					
0 Пользователей и 1 Гость просматривают эту тему.
подскажите каким образом можно проверить работоспособность LPT порта, дело в том что перестал видеть ресиверы через JTAG пробовал разные шнурки, и разные ресиверы на разных процах
« Последнее редактирование: 12 Февраля 2009, 11:03:37 от Demkaalex_KZ »
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
Качни прогу TCom. С помощью ее меняй уровни и замеряй прибором.
дело в том что перестал видеть ресиверы через JTAG
Так COM порт или LPT?
								Записан
							
извиняюсь LPT, хоть материнку выбрасвый расстроился я
программку скачал, спасибо, а как ей пользоваться?
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
программку скачал, спасибо, а как ей пользоваться?
Эта прога для com порта. Щелкаешь мышкой по выводам на рисунке и замеряешь прибором, меняются уровни или нет.
Для LPT порта даже не знаю. Хотя есть исходники проги для линукс  
У меня тоже один раз была проблема с LPT портом, думал ппц мамке, на следующий день включаю комп а LPT работает  
								Записан
							
Эта прога для com порта. …
Для LPT порта даже не знаю…
аналогичная для LPT… сам не пользовал…
« Последнее редактирование: 12 Февраля 2009, 18:47:03 от _Aleks_ »
								Записан
							
аналогичная для LPT… сам не пользовал…
При запуске пишет
Ошибка при создании объекта Lpt, код = 2
Вообще то режим совместимости помогает  
_Aleks_, спасибо за прогу, пригодится.
								Записан
							
Зачем выкидывать мамку, можно поискать платку на PCI LPT расшеритель, должна быть в природе, сам на PCI-Ex ищу!
								Записан
							
Всего знать не возможно, мозг заражён этим вирусом!
								Spot_xr7
							
Она не просто должна быть, она есть, сам такую пользую дома, но только PCI-to-LPT+COM port…
								Записан
							
но если попытаться ее купить, то проще мамку новую взять  
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
Demkaalex_KZ, ну что, порт проверил?
								Записан
							
проверка показала что он работоспособен. сегодня стопил в бане кабель джитаг, завтра буду паять новый
								Записан
							
90E(C)+90(Ку)+13E+36E Dream 500S, Golden Interstar 7700, GM WIZARD HD Class, в довесок ко всему локомотив ВЛ-80 с 10 груженными полувагонами
Содержание
- Как добавить отсутствующие COM-порты в диспетчере устройств [Новости MiniTool]
 - Резюме :
 - COM-порты отсутствуют в диспетчере устройств
 - COM-порты, не отображаемые в диспетчере устройств: все случаи
 - Как добавить COM-порт в диспетчер устройств
 - Драйвер для работы с LPT портом (интегрированным или в виде платы PCI)
 - 1 Установка драйвера для работы с LPT портом
 - 2 Программный класс использования библиотек работы с LPT портом
 - 3 Применение класса .NET для работы с LPT портом
 - Скачать вложения:
 - Поделиться
 - Похожие материалы (по тегу)
 - Другие материалы в этой категории:
 - 8 комментарии
 
How Add Com Ports Missing Device Manager
Резюме :
COM-порты — общие компоненты диспетчера устройств. Пользователи Windows могут легко их увидеть, открыв диспетчер устройств. Однако могут возникнуть проблемы, из-за которых COM-порты будут потеряны из диспетчера устройств. Если вы столкнулись с этой проблемой, прочтите методы, упомянутые ниже, чтобы попытаться решить проблему самостоятельно.
COM означает порт связи, и на самом деле это оригинальное название интерфейса последовательного порта. COM может использоваться для ссылки как на физические, так и на эмулируемые порты, которые создаются через адаптеры Bluetooth или USB-последовательный порт. Ну а COM-порты отсутствуют в диспетчере устройств проблема случается время от времени.
Как получить доступ к портам диспетчера устройств Windows 10?
- Щелкните правой кнопкой мыши на Этот ПК значок на рабочем столе.
 - выберите Управлять из контекстного меню.
 - Выбрать Диспетчер устройств в Системных инструментах. (Вы также можете нажать Start + X, чтобы выбрать Диспетчер устройств .)
 - выберите Посмотреть из строки меню.
 - выберите Показать скрытые устройства из подменю.
 - Найдите Порты (COM и LPT) из списка на правой панели.
 - Разверните его, чтобы найти Коммуникационный порт (COM) .
 
Программное обеспечение MiniTool может помочь вам восстановить данные с жесткого диска, USB-накопителя и другого внешнего хранилища. Если вы обнаружите, что порты USB не отображаются в диспетчере устройств Windows 10, прочтите это, чтобы узнать, как исправить проблему нераспознанного USB.
 
Предлагаются различные решения, позволяющие исправить ошибку нераспознанной флешки и восстановить данные с недоступной флешки.
Однако многие люди говорят, что не могут найти порты в диспетчере устройств и им отчаянно нужно решение этой проблемы.
COM-порты, не отображаемые в диспетчере устройств: все случаи
Первый: Com-порт отсутствует / опция портов недоступна в диспетчере устройств.
Мой com-порт отсутствует. И опция портов недоступна в диспетчере устройств. Я могу отлично подключиться и использовать свой телефон / модем с компьютером. Я провел несколько обсуждений на эту же тему здесь, на сайте answers.microsoft.com, но безрезультатно. Как мне включить его, или вы можете предоставить ссылку, по которой я могу загрузить этот драйвер com для Windows 10? Благодарю. — опубликовано, выступая на форуме Microsoft
Два: в диспетчере устройств не отображаются порты (даже скрытые) Win 7 Pro 64 бит.
Я не могу заставить работать внешний модем (даже если он отображается в окне устройств и принтеров. Я также не могу заставить работать конвертер USB-последовательного порта. Было бы полезно, если бы у меня была информация из окна диспетчера устройств, но ничего не отображается, хотя я включил отображение скрытых устройств. Есть идеи? Спасибо. — спросил Пол Саке на форуме Microsoft.
Три: COM-ПОРТ исчез в диспетчере устройств.
Когда я открыл диспетчер устройств в то время, я обнаружил, что параметр COM-порта портативных устройств исчез из диспетчера устройств. Что мне нужно сделать, чтобы решить эту проблему? — сказал SAY014 на форуме HP.
Итак, как решить проблему и найти COM-порты Windows 10? Продолжайте читать!
Как добавить COM-порт в диспетчер устройств
Некоторые пользователи жаловались, что их COM-порты Widows 10 исчезли из диспетчера устройств после того, как они обновили свои платформы Windows. Какой бы ни была причина, пользователи в первую очередь заботятся о том, как восстановить недостающие COM-порты. Об этом я и расскажу в этом разделе.
Метод 1. Показать скрытые устройства.
Как я уже упоминал в начале этой статьи, пользователи не могут видеть COM-порты напрямую. Вместо этого им нужно открыть Диспетчер устройств -> выбрать Посмотреть вкладка -> выбрать Показать скрытые устройства . После этого они увидят Порты (COM и LPT) вариант, и им нужно только расширить его до COM-портов плавников.
Способ 2: добавить COM-порты вручную.
- Откройте Диспетчер устройств на своем компьютере с Windows 10.
 - Нажми на Действие вариант из строки меню.
 - выберите Добавить устаревшее оборудование из подменю, чтобы открыть окно «Добавить оборудование».
 - Нажми на следующий кнопку, чтобы двигаться дальше.
 - Проверьте Установите оборудование, которое я выбираю вручную из списка (Дополнительно) и нажмите следующий .
 - Выбрать Порты (COM и LPT) из данного списка и нажмите следующий кнопка.
 - выберите Стандартные типы портов вариант или производитель портов; затем щелкните следующий .
 - Нажми на Конец кнопку для завершения.
 
Способ 3: обновите драйверы материнской платы.
Если драйверы материнской платы слишком устарели, это также приведет к отсутствию COM-портов в диспетчере устройств. Поэтому вам рекомендуется обновить драйверы материнской платы вручную и посмотреть, работает ли это.
Источник
Драйвер для работы с LPT портом (интегрированным или в виде платы PCI)
Лет 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, то увидим следующую картину:

Это список функций, которые мы можем использовать. Фактически все они используются в классе LPT, но реализация скрыта, и из публичных методов пользователю доступны только два метода и одно свойство (они рассматриваются чуть далее).
При инстанцировании класс сам определит, библиотеку какой разрядности ему использовать – 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, выберите используемый параллельный порт, и в окне свойств (щёлкнув по нему правой кнопкой мыши) посмотрите, какие ресурсы использует выбранный порт (необходимо брать первое значение из диапазона).

Например, в данном случае необходимо использовать номер порта C100.
Скачать вложения:
Поделиться
Похожие материалы (по тегу)
Другие материалы в этой категории:
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 порта решить эту проблему? Какие шаги по установке и использованию я должен выполнить? Если не сложно, скиньте ответ на мою почту
Источник
Модераторы: Ruz_and, Master-VRI, al-drw, Мастак
- 
Виктор.В
 - Сообщения: 22
 - Зарегистрирован: Чт мар 31, 2011 09:58
 
драйвер LPT
помогите прога пишет вежливый отказ на запуск в виде: Ошибка при создание объекта LPT, драйвер ERROR, код=2. а поменять драйвер не получаеться! windows7
- 
Master-VRI
 - Site Admin
 - Сообщения: 929
 - Зарегистрирован: Пн ноя 10, 2008 00:00
 
Re: драйвер LPT
Сообщение Master-VRI » Вс апр 03, 2011 14:12
не видит ЛПТ порта, посмотрите настройки в БИОСе
- 
Радист
 - Сообщения: 33
 - Зарегистрирован: Вт окт 11, 2011 12:38
 
Re: драйвер LPT
Сообщение Радист » Вт окт 11, 2011 13:00
запустил в режиме совместимости win98, следующие версии не дают прямого доступа к LPT, правда еще не знаю, как работать будет, там еще какая-то ошибка вылазит))
- 
Радист
 - Сообщения: 33
 - Зарегистрирован: Вт окт 11, 2011 12:38
 
Re: драйвер LPT
Сообщение Радист » Пн ноя 07, 2011 19:40
не работает, пришлось второй винт мутить, ставить XP
| Рекомендуем | |
| 
 
  | 
 | 
Вернуться в «VRI-cnc»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость
Лет 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 (разворачивается)
Imports System.Runtime.InteropServices
''' <summary>
''' Работа с LPT портом. При создании определяет наличие драйвера и выбирает подходящую библиотеку.
''' </summary>
Public NotInheritable Class LPT
#Region "CONST"
    Public Const DLL32 As String = "c:tempinpout32.dll"
    Public Const DLL64 As String = "c:tempinpoutx64.dll"
    Public Const DLL32DRV As String = "c:tempinpoutx32drv.dll"
    ''' <summary>
    ''' Регистры параллельного порта.
    ''' </summary>
    Public Enum Register As Integer
        ''' <summary>
        ''' Регистр данных SPP/EPP.
        ''' </summary>
        DATA = 0
        ''' <summary>
        ''' Регистр состояния SPP/EPP.
        ''' </summary>
        STATUS = DATA + 1
        ''' <summary>
        ''' Регистр управления SPP/EPP.
        ''' </summary>
        CONTROL = DATA + 2
        ''' <summary>
        ''' Регистр адреса EPP. Чтение или запись в него генерирует свзяанный цикл чтения или записи адреса EPP.
        ''' </summary>
        EPP_ADDRESS = DATA + 3
        ''' <summary>
        ''' Регистр данных EPP. Чтение (запись) генерирует связанный цикл чтения (записи) данных EPP.
        ''' </summary>
        EPP_DATA = DATA + 4
        ''' <summary>
        ''' Регистр активации режима EPP.
        ''' </summary>
        ''' <remarks>
        ''' Если только смешанный "ECP+EPP" или "Extended" - скорее всего потребуется еще выполнить запись в порт ECR байта 0x80 
        ''' (ECR - это регистр ECP-режима, ECR=BASE_ADDR+0x402, BASE_ADDR - базовый адрес LPT-порта
        ''' </remarks>
        ECR = DATA + &H402 
    End Enum
#End Region '/CONST
#Region "DllImport"
    <DllImport(DLL32, CharSet:=CharSet.Auto, EntryPoint:="IsInpOutDriverOpen")>
    Private Shared Function IsInpOutDriverOpen() As Byte
    End Function
    <DllImport(DLL64, CharSet:=CharSet.Auto, EntryPoint:="IsInpOutDriverOpen")>
    Private Shared Function IsInpOutDriverOpen_x64() As UInt64
    End Function
    <DllImport(DLL32, CharSet:=CharSet.Auto, EntryPoint:="Inp32")>
    Private Shared Function Inp32(PortAddress As UInt32) As Byte
    End Function
    <DllImport(DLL32, CharSet:=CharSet.Auto, EntryPoint:="Out32")>
    Private Shared Sub Out32(portAddress As UInt32, data As UInt32)
    End Sub
    <DllImport(DLL64, CharSet:=CharSet.Auto, EntryPoint:="Inp32")>
    Private Shared Function Inp64(PortAddress As UInt64) As Byte
    End Function
    <DllImport(DLL64, CharSet:=CharSet.Auto, EntryPoint:="Out32")>
    Private Shared Sub Out64(PortAddress As UInt64, Data As UInt64)
    End Sub
#End Region '/DllImport
#Region "CTOR"
    ''' <summary>
    ''' Проверяет возможность использования x86 или x64 драйвера. В случае невозможности выбрасывает исключение "драйвер не установлен".
    ''' </summary>
    Shared Sub New()
        Dim x86 As Boolean = CheckIsDriverX86()
        Dim x64 As Boolean = CheckIsDriverX64()
        If x64 Then
            _IsX64DriverUsed = True
        ElseIf x86 Then
            _IsX64DriverUsed = False
        Else
            Throw New SystemException("Драйвер для LPT порта не установлен.")
        End If
    End Sub
    ''' <summary>
    ''' Инициализация порта - выставление XXXX0100'b в регистре контроля.
    ''' </summary>
    Private Shared Sub InitLpt(port As ULong)
        Write(port, Register.ECR, &H80)
        Write(port, Register.CONTROL, &H4)
    End Sub
#End Region '/CTOR
#Region "PROPS"
    ''' <summary>
    ''' Используется ли 64-разрядная версия драйвера.
    ''' Если драйвер не установлен, возвращается NULL.
    ''' </summary>
    Public Shared ReadOnly Property IsX64DriverUsed As Boolean?
        Get
            Return _IsX64DriverUsed
        End Get
    End Property
    Private Shared ReadOnly _IsX64DriverUsed As Boolean? = Nothing
#End Region '/PROPS
#Region "METHODS"
    ''' <summary>
    ''' Определяет, является ли драйвер 32-разрядным.
    ''' </summary>
    Private Shared Function CheckIsDriverX86() As Boolean
        Try
            Dim res As Byte = IsInpOutDriverOpen()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    ''' <summary>
    ''' Определяет, является ли драйвер 64-разрядным.
    ''' </summary>
    Private Shared Function CheckIsDriverX64() As Boolean
        Try
            Dim nResult As ULong = IsInpOutDriverOpen_x64()
            Return (nResult <> 0)
        Catch ex As Exception
            Return False
        End Try
    End Function
#End Region '/METHODS
#Region "Read / Write LPT Port"
    ''' <summary>
    ''' Читает из заданного регистра LPT порта 1 байт данных.
    ''' </summary>
    ''' <param name="port">Номер порта.</param>
    ''' <param name="reg">Регистр порта.</param>
    Public Shared Function Read(port As ULong, Optional reg As Register = Register.DATA) As Byte
        Dim data As Byte = 0
        If IsX64DriverUsed Then
            data = Inp64(CULng(port + reg))
        Else
            data = Inp32(CUInt(port + reg))
        End If
        Return data
    End Function
    ''' <summary>
    ''' Записывает в заданный регистр LPT порта число.
    ''' </summary>
    ''' <param name="port">Адрес порта.</param>
    ''' <param name="reg">Регистр порта.</param>
    ''' <param name="data">Число для записи. В 32-разрядных системах аргумент должен быть не более, чем максимальное значение для типа UInt32.</param>
    Public Shared Sub Write(port As ULong, reg As Register, data As ULong)
        If IsX64DriverUsed Then
            Out64(port + CULng(reg), data)
        Else
            If (data <= UInteger.MaxValue) Then
                Out32(CUInt(port + reg), CUInt(data))
            Else
                Throw New ArgumentException("В 32-разрядных системах аргумент должен быть 32-разрядным (тип UInt32).", "data")
            End If
        End If
    End Sub
#End Region '/Read / Write LPT Port
    ''' <summary>
    ''' Тестирует наличие LPT порта по заданному адресу.
    ''' </summary>
    ''' <param name="lptAddress">Адрес параллельного порта.</param>
    Public Shared Function CheckPortPresent(lptAddress As ULong) As Boolean
        Dim portPresent As Boolean = False
        Try
            InitLpt(lptAddress)
            Dim data As ULong = Read(lptAddress, Register.DATA) 'сохраняем текущее значение регистра данных
            'Проверим: что записали, то и прочитали?
            Write(lptAddress, Register.DATA, &H0)
            portPresent = portPresent And (&H0 = Read(lptAddress, Register.DATA))
            Write(lptAddress, Register.DATA, &H55)
            portPresent = portPresent And (&H55 = Read(lptAddress, Register.DATA))
            Write(lptAddress, Register.DATA, &HAA)
            portPresent = portPresent And (&HAA = Read(lptAddress, Register.DATA))
            Write(lptAddress, Register.DATA, data) 'восстанавливаем прежнее значение регистра данных
            'Проверим наличие регистров управления и данных, если порт не обнаружен (в случае однонаправленного порта)
            If (Not portPresent) Then
                data = Read(lptAddress, Register.CONTROL)
                portPresent = ((data <> 0) AndAlso (data <> &HFF)) 'Не пустое значение? => Порт присутствует.
                If (Not portPresent) Then
                    data = Read(lptAddress, Register.STATUS)
                    portPresent = ((data <> 0) AndAlso (data <> &HFF))
                End If
            End If
        Catch ex As Exception
            Return False
        End Try
        Return portPresent
    End Function
End Class '/LPT
Код класса LPT на языке C#:
Код класса LPT на языке C# (разворачивается)
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace LPTIO
{
  /// Класс для работы LPT портом. При создании определяет наличие драйвера и его разрядность.
public sealed class LPT
  {
    private const string DLL32 = "inpout32.dll";
    private const string DLL64 = "inpoutx64.dll";
    private static bool _IsX64DriverUsed;
    /// Используется ли 64-разрядная версия драйвера.
    public static bool IsX64DriverUsed
    {
      get
      {
        return LPT._IsX64DriverUsed;
      }
    }
    static LPT()
    {
      if (LPT.getIsDriverX86())
      {
        LPT._IsX64DriverUsed = false;
      }
      else
      {
        if (!LPT.getIsDriverX64())
          throw new SystemException("Драйвер для LPT порта не установлен.");
        LPT._IsX64DriverUsed = true;
      }
    }
    [DebuggerNonUserCode]
    public LPT()
    {
    }
    [DllImport("inpout32.dll", CharSet = CharSet.Auto)]
    private static extern byte IsInpOutDriverOpen();
    [DllImport("inpoutx64.dll", EntryPoint = "IsInpOutDriverOpen", CharSet = CharSet.Auto)]
    private static extern ulong IsInpOutDriverOpen_x64();
    [DllImport("inpout32.dll", CharSet = CharSet.Auto)]
    private static extern byte Inp32(uint PortAddress);
    [DllImport("inpout32.dll", CharSet = CharSet.Auto)]
    private static extern void Out32(uint portAddress, uint data);
    [DllImport("inpoutx64.dll", EntryPoint = "Inp32", CharSet = CharSet.Auto)]
    private static extern byte Inp64(ulong PortAddress);
    [DllImport("inpoutx64.dll", EntryPoint = "Out32", CharSet = CharSet.Auto)]
    private static extern void Out64(ulong PortAddress, ulong Data);
    /// Определяет, является ли драйвер для 32-разрядной версии Windows.
    private static bool getIsDriverX86()
    {
      bool flag;
      try
      {
        LPT.IsInpOutDriverOpen();
        flag = true;
      }
      catch (Exception ex)
      {
        ProjectData.SetProjectError(ex);
        flag = false;
        ProjectData.ClearProjectError();
      }
      return flag;
    }
    /// Определяет, является ли драйвер для 64-разрядной версии Windows.
    private static bool getIsDriverX64()
    {
      bool flag;
      try
      {
        flag = Decimal.Compare(new Decimal(LPT.IsInpOutDriverOpen_x64()), Decimal.Zero) != 0;
      }
      catch (Exception ex)
      {
        ProjectData.SetProjectError(ex);
        flag = false;
        ProjectData.ClearProjectError();
      }
      return flag;
    }
    /// <summary>Читает из LPT порта 1 байт данных.</summary>
    /// <param name="port">Номер порта.</param>
    /// <param name="reg">Регистр порта.</param>
    public static byte Read(ulong port, LPT.Register reg = LPT.Register.DATA)
    {
      return !LPT.IsX64DriverUsed ? LPT.Inp32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg)))) : LPT.Inp64(Convert.ToUInt64(Decimal.Add(new Decimal(port), new Decimal((int) reg))));
    }
    /// <summary>Записывает в LPT порт число.</summary>
    /// <param name="port">Адрес порта.</param>
    /// <param name="reg">Регистр порта.</param>
    /// <param name="data">Число для записи. В 32-разрядных системах аргумент должен быть не более, чем максимальное значение для типа UInt32.</param>
    public static void Write(ulong port, LPT.Register reg, ulong data)
    {
      if (LPT.IsX64DriverUsed)
      {
        LPT.Out64(checked (port + (ulong) (uint) reg), data);
      }
      else
      {
        if (data > (ulong) uint.MaxValue)
          throw new ArgumentException("В 32-разрядных системах аргумент должен быть 32-разрядным (тип UInt32).", "data");
        LPT.Out32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg))), checked ((uint) data));
      }
    }
    /// <summary>Регистры порта LPT.</summary>
    public enum Register
    {
      DATA,
      STATUS,
      CONTROL,
    }
  }
}
3Применение класса .NET для работы с LPT портом
Если мы посмотрим на список экспортируемых функций библиотеки inpout32.dll с помощью замечательного инструмента DLL Export Viewer от NirSoft, то увидим следующую картину:
Это список функций, которые мы можем использовать. Фактически все они используются в классе LPT, но реализация скрыта, и из публичных методов пользователю доступны только два метода и одно свойство (они рассматриваются чуть далее).
При инстанцировании класс сам определит, библиотеку какой разрядности ему использовать – inpout32.dll или inpoutx64.dll. Поэтому от пользователя не требуется никаких действий по инициализации или определения разрядности используемой dll. Вы можете сразу записывать или читать из LPT порта. Одно «Но»: если драйвер не установлен, обращение к любому из методов динамической библиотеки вызовет исключение, поэтому рекомендую использовать блоки Try…Catch для перехвата и обработки исключений.
Несколько примеров использования класса LPT.
Для определения, используется ли 64-разрядная версия драйвера (inpoutx64.dll при True) или 32-разрядная (inpout32.dll при False) (на самом деле, это знать не обязательно, класс использует именно ту библиотеку, которая нужна, но вдруг вам для чего-то понадобится это узнать из своей программы):
bool is64bitDriver = LPT.IsX64DriverUsed;
Для записи числа «123» в регистр контроля LPT порта вызовите из своего класса:
LPT.Write(currentPort, LPT.Register.CONTROL, 123);
Для чтения одного байта из регистра данных LPT порта и чтения регистра статуса:
byte b = LPT.Read(currentPort, LPT.Register.DATA); byte s = LPT.Read(currentPort, LPT.Register.STATUS);
Здесь currentPort – адрес LPT порта. Причём, если у вас интегрированный LPT порт, то его адрес будет, скорее всего, 378h. А если у вас LPT порт на плате расширения, то адрес будет другой, например, D100h или C100h.
Чтобы узнать адрес LPT порта, зайдите в диспетчер устройств Windows, найдите раздел Порты COM и LPT, выберите используемый параллельный порт, и в окне свойств (щёлкнув по нему правой кнопкой мыши) посмотрите, какие ресурсы использует выбранный порт (необходимо брать первое значение из диапазона).
Например, в данном случае необходимо использовать номер порта C100.









