Ошибка при создании объекта lpt драйвер error код 2

Перейти к контенту

Тема: Проверка работоспособности 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
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 портом на борту.
CPU — AMD Athlon 64 X2
ОС — Microsoft Windows XP x64

LPT порт в диспетчере присутствует и «типо» работает нормально.
Пытаемся приконектить Атмегу через LPT:
UniProf — Что-то не ладное с LPT портом
SinaProg — Ошибка открытия порта

Организовываю Jtag интерфейс, запускаю OpenOcd 0.6.1:
Error: missing privileges for direct i/o in procedure ‘init’

Причем на другом ПК все отлично работает!

Паленый порт или косо настроен драйвер?

0

Эксперт HardwareЭксперт Windows

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

Уже был…
Адрес — 378
Режим — ECP (если не ошибаюсь)
DMA — 3
Прерывание — 7

0

Эксперт HardwareЭксперт Windows

21297 / 12107 / 653

Регистрация: 11.04.2010

Сообщений: 53,466

04.02.2013, 22:13

4

хм, паленый… в принципе выжечь его очень легко, как и com
приблуда ваша точно на хр работает нормально? В свойствах lpt все пучком?

Добавлено через 33 секунды
порт в мамке или подключается выкидышем?

0

2 / 2 / 0

Регистрация: 29.01.2011

Сообщений: 69

04.02.2013, 22:24

 [ТС]

5

Все перенастраивал, ошибок нету.
Как жаль….

Быть может вы могли бы предложить альтернативу? Преобразователь интерфейса USB -LPT? (слышал что многие разрабатывались лишь для подключения принтеров, но мне нужен полностью идентичный интегрированному порт)

0

Эксперт HardwareЭксперт Windows

21297 / 12107 / 653

Регистрация: 11.04.2010

Сообщений: 53,466

04.02.2013, 22:42

6

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

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 есть?
А если с WCH CH382L ?
А с Willem EEPOM в Win7 x64 и CH382L ?

0

189 / 151 / 16

Регистрация: 10.10.2014

Сообщений: 631

10.12.2018, 11:55

9

Цитата
Сообщение от qvad
Посмотреть сообщение

полностью идентичный… он довольно редкий зверь, и совсем не дешевый

а как насчёт PCI->LPT или PCIe->LPT? Они не особо дорогие на Али. PCIe->LPT+2хCOM купил за 12$. Нужно было принтер подключить для ЛУТ-а и COM порты ещё для последовательного прошивания тинек. Сейчас они должны быть дешевле.

Добавлено через 3 минуты
https://ru.aliexpress.com/item… 13694.html

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.12.2018, 11:55

Помогаю со студенческими работами здесь

LPT port
Имеется LPT порт, имеется программа для управления LPT порта, какую функцию или процедуру нужно…

LPT C++ Builder
Привет умне люди
Что мне вписать в програму и куда,чтобы она при её запуске сбрасывала

(первый…

LPT и txt
Здравствуйте, необходимо распечатать txt файл с именем, допустим "123.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 порта даже не знаю. Хотя есть исходники проги для линукс :) 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 груженными полувагонами


Содержание

  1. Как добавить отсутствующие COM-порты в диспетчере устройств [Новости MiniTool]
  2. Резюме :
  3. COM-порты отсутствуют в диспетчере устройств
  4. COM-порты, не отображаемые в диспетчере устройств: все случаи
  5. Как добавить COM-порт в диспетчер устройств
  6. Драйвер для работы с LPT портом (интегрированным или в виде платы PCI)
  7. 1 Установка драйвера для работы с LPT портом
  8. 2 Программный класс использования библиотек работы с LPT портом
  9. 3 Применение класса .NET для работы с LPT портом
  10. Скачать вложения:
  11. Поделиться
  12. Похожие материалы (по тегу)
  13. Другие материалы в этой категории:
  14. 8 комментарии

How Add Com Ports Missing Device Manager

Резюме :

COM-порты — общие компоненты диспетчера устройств. Пользователи Windows могут легко их увидеть, открыв диспетчер устройств. Однако могут возникнуть проблемы, из-за которых COM-порты будут потеряны из диспетчера устройств. Если вы столкнулись с этой проблемой, прочтите методы, упомянутые ниже, чтобы попытаться решить проблему самостоятельно.

COM означает порт связи, и на самом деле это оригинальное название интерфейса последовательного порта. COM может использоваться для ссылки как на физические, так и на эмулируемые порты, которые создаются через адаптеры Bluetooth или USB-последовательный порт. Ну а COM-порты отсутствуют в диспетчере устройств проблема случается время от времени.

Как получить доступ к портам диспетчера устройств Windows 10?

  1. Щелкните правой кнопкой мыши на Этот ПК значок на рабочем столе.
  2. выберите Управлять из контекстного меню.
  3. Выбрать Диспетчер устройств в Системных инструментах. (Вы также можете нажать Start + X, чтобы выбрать Диспетчер устройств .)
  4. выберите Посмотреть из строки меню.
  5. выберите Показать скрытые устройства из подменю.
  6. Найдите Порты (COM и LPT) из списка на правой панели.
  7. Разверните его, чтобы найти Коммуникационный порт (COM) .

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

Исправить нераспознанный 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-порты вручную.

  1. Откройте Диспетчер устройств на своем компьютере с Windows 10.
  2. Нажми на Действие вариант из строки меню.
  3. выберите Добавить устаревшее оборудование из подменю, чтобы открыть окно «Добавить оборудование».
  4. Нажми на следующий кнопку, чтобы двигаться дальше.
  5. Проверьте Установите оборудование, которое я выбираю вручную из списка (Дополнительно) и нажмите следующий .
  6. Выбрать Порты (COM и LPT) из данного списка и нажмите следующий кнопка.
  7. выберите Стандартные типы портов вариант или производитель портов; затем щелкните следующий .
  8. Нажми на Конец кнопку для завершения.

Способ 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, то увидим следующую картину:

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

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

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

Например, в данном случае необходимо использовать номер порта 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
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, то увидим следующую картину:

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

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

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

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

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

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

Понравилась статья? Поделить с друзьями:
  • Ошибка при создании раздела диска
  • Ошибка при создании объекта excel application
  • Ошибка при создании рабочего каталога the bat windows 10
  • Ошибка при создании объекта cadescom store
  • Ошибка при создании профиля инстаграм