Настроить usb порт как lpt

Настроить usb порт как lpt

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

«У меня в компьютере (ноутбуке) нет LPT порта. Купил себе переходник USB-LPT. Установил. Ваши примеры не работают. Почему?»

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

Также, сейчас в продаже можно свободно приобрести вот такие устройства, называемые LPT-USB переходниками.

Инстркуция гласит что этот прибор полностью совместим с различными принтерами, сканерами и т.д. Подключаем переходник к USB порту, устанавливаем драйвера. Смотрим диспетчер устройств. Скорее всего в ветке «Порты LPT/COM» ни чего не появилось (хотя бывают исключения). Скорее всего повится либо новая ветка со странным устройством с именем, например, LPT1USB либо в разделе USB устройств появится странная запись о «USB устройстве поддержки LPT принтеров». Пробуем запустить какой-нибудь пример из статей выше. И ни тут то было — ни чего не работает. Пробуем адрес порта LPT1 — ни чего не работает. Пробуем адресс порта LPT2. К сожалению, такая модернизация адреса в запросах тоже ни к чему не приводит — светодиоды как не загорались так и не загораются.

Чтобы разобраться в чем тут дело давайте вернемся на время к обычному «родному железному» LPT порту — LPT1, который из материнской платы «торчит». Зайдем в диспетчер устройств, заглянем в свойства нашего порта. Там мы увидим вот такую картину. Отлично видно, что система прописала базовый адрес ввода-вывода 0x378 и запрос на прерывание номер 7. Все правильно.

Теперь погрузимся на уровень программирования. В примерах статей выше мы минуя систему защиты ввода-вывода легальными и нелегальными способами напрямую общались с реально существующим регистром ввода-вывода, которому присвоен адрес 0x378. Тут все понятно. Незабудем также о том, что Windows рекомендует работать с LPT портом используя вызовы API функций — OpenFile(), WriteFile(), ReadFile(). Приложения, которые используют LPT порт для обмена информацией по парралельному интерфейсу с внешними устройствами (принтер, например) так и делает. У него нет задачи установить на каком-либо бите регистра Data лигическую еденицу. Ему (приложению) нужно просто отправить пакет данных, а кто там будет какие линиии при этом «дергать» и считывать его не сильно интересует. Эти операции проводит системный драйвер LPT порта. Он подгружается в память при загрузке ОС. Когда мы вызываем функцию OpenFile(«LPT1», . ) мы по сути дела обращаемся к драйверу порта, который имеет символическое имя LPT1. Драйвер делает кучу всякой работы — запрещает доступ к порту другим процессам, настраивает параметры протокола передачи данных, собственно реализует эту передачу, но в конечном итоге все это сводится к прямому управлению отдельными битами LPT порта на уровне ядра ОС.

А теперь попробуем поработать с нашим переходником USB-LPT. Начнем как не покажется странным, с API вызовов. Запускаем OpenFile(«LPT1USB», . ) (смотря как этот переходник диспетчере устройств назовется, если вообще назовется). Что при этом происходит? Дело в том, что теперь мы будем работать не с драйвером LPT порта ОС а с драйвером этого переходника! Вот в чем фокус то! Он принимает пакет данных от нашего пользовательского приложения и в нужном формате через систмный драйвер USB отсылает этот пакет на USB контроллер, «ноги» которого торчат из внешней LPT розетки на проводе (ну это так, «грубое объяснение»). Видете, здесь нет ни какого намека на обращение к регистрам по адресам 0x378(0x278), т.к. их просто нет!

Поэтому, когда Вы патаетесь запускать примеры данного раздела и обращаться напрямую по адресам 0x378 (если этот «псевдо порт» назвался LPT1USB или что-то в этом духе), 0x278 (LPT2_. ) и т.д. ни чего не происходит. Их просто нет! А вот программа котороая работает через API вызовы ни чего не заметит — вся низкоуровневая работа делается драйвером, а каким драйвером и куда пойдут пакеты данных (в реальный порт ввода-вывода или в USB хост-контроллер) — приложению неважно! Попробуйте открыть свойства «псевдопорта» в диспетчере устройств. Нет вкладки с ресурсами? Есть, но там каие-то неадекватные значения или вкладка деактивировнна? В том то и дело.

ИТОГО: С вероятностью 99% купленный Вами переходник USB-LPT не сможет обеспечить Вам работу на низком уровне с пинами этого порта.

Читайте также:  Как настроить таймлайн davinci

Почему 99%? Потомоу что есть самодельниые USB-LPT переходники, которые определяются Windows как полноценный порт LPT1 и ему присваивается вполне обыденный адрес 0x378. Обращения на прямую к пинам порта проходят успешно! Однако это очень нестандартная конструкция (в первую очередь драйвер, который занимается перехватом обращений по базовому адресау порта LPT1). Все это не очень надежно (обновление ОС — и конструкция теряет работоспосбность) и для использования рекомендовано быть может только с натяжкой.

И что тагда делать?

Как ни покажется странным — решение ЕСТЬ. Вы всегда сможете добавить настоящий LPT порт в свой настольный компьютер или ноутбук. Во-первых, забудте сразу о переходниках с интерфейсом USB. Для решения этой задачи необходимо приробрести PCI-LPT переходник для настольного PC (необходимо наличие свободного PCI слота) или PCMCIA-LPT переходник для ноутбука (см. фото ниже).

В случае использования этих устройств ни каких проблем нет. Определяются они как настоящие «родные» LPT порты. Соответствующая запись будет добавлена в диспетчер устройств во вклдаку «LPT/COM порты». Прямое обращение к пинам порта будет работать.

Источник

Как имитировать параллельный принтер (LPT) с помощью USB-принтера?

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

Как заставить компьютер думать, что USB-принтер подключен к порту lpt?

далее, это для офиса. У меня будут права администратора при реализации обхода, но я снимаю решение, которое работает, пока «обычный» пользователь регистрируется после всего настройка.

8 ответов

вы можете обмануть Windows, используя USB-принтер в качестве фиктивного» сетевого » принтера, подключенного к LPT1.

поделиться USB принтера

используйте имя общего ресурса, которое легко запомнить, например «принтер».

подключите общий принтер как LPT1

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

решение в моем случае.

  1. установите USB-принтер с его драйверами (чтобы узнать, к какому порту USB подключен)
  2. изменить порт драйвера в файл (и освободить порт USB)
  3. установить драйвер Generic / Text Only и изменить порт к такому же логически порту USB как увидено на пункте 1
  4. общий доступ к принтеру Generic /Text Only для того, чтобы сделать его видимым легко в VBA
  5. установите адаптер Microsoft Loopback на фиксированный неиспользуемый IP-адрес (в противном случае принтер не будет виден при отключении кабеля)
  6. назначьте LPTx: порт, как описано выше в командной строке (это для каждого по, которому нужен старый LPT)

с несколькими строками кода Вы сможете отправьте коды ASCII на принтер, как это было раньше.

теперь вы можете легко печатать на VBA (проверено на 64-битном принтере Windows 7 и zm400 Zebra)

принимает стандартный вывод на принтер, созданный приложением DOS, и перенаправляет его на принтер Windows по умолчанию. Преобразует кодовую страницу, удаляет пустые страницы, поддерживает символы чертежей. Работает на всех платформах Windows.

используйте программу печати DOS, чтобы управлять доступными портами на нужные устройства. Вы можете скачать его по этой ссылке https://www.dropbox.com/s/gdx05sckmbqnast/dosprint.exe?dl=0 (dos Print)

сначала запустите dosprint и dosprintui от имени администратора, после чего дважды щелкните значок dosprintui в трее, вы можете получить список доступных портов на карте, а затем дважды щелкните на lpt1 или на кнопку SET и выберите нужный принтер на карте и нажмите на ОК. BINGO теперь вы можете печатать на порту LPT1, и ваш USB-принтер напечатает это для вас.

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

16-битная программа DOS, с которой нам нужно работать, находится на 32-битном сервере Windows 2003, который скоро будет удален. До тех пор общий ресурс программы сопоставляется на двух 32-разрядных клиентских компьютерах из основного домена с групповой политикой. Ярлык для .cmd файл, который запускает программу кладется вручную на клиентах, также на основном домене. Программа хорошо работает на Windows 8.1. Немного компромисса, чтобы быть уверенным, но машины будут обновлены до 64-разрядной Windows 8.1, когда программа DOS, которая работает из вторичного домена, удаляется.

печать из программы представляет самую большую проблему. Две разные параллельные принтеры используются с этой программой, но программа печатает только на один порт и нет возможности изменить это поведение. Нужно напечатать проверить лазерный принтер? Он должен быть подключен к порту LPT1. Нужно напечатать сброс данных к принтеру матрицы многоточия? Он также должен быть подключен к порту LPT1. Два человека работают с этой программой ежедневно, поэтому мы будем использовать их компьютеры, по одному для каждого принтера. Давайте установим первый принтер:

Читайте также:  Ford focus не работает один цилиндр

Если компьютер имеет физический DB-25 (параллельный) порт, вы можете отключить его в BIOS. Windows 8.1 не будет поддерживать его, и он нам не нужен.

A Кабели-To-Go модель 16899 USB к db25 параллельный адаптер принтера используется для подключения принтера к компьютеру. Адаптер устанавливается автоматически и не распознается как параллельное устройство или порт LPT.

теперь откройте устройства и принтеры. Нажмите кнопку Добавить принтер и выберите нужный принтер отсутствует в списке. В следующем диалоговом окне выберите Добавить локальный принтер или сетевой принтер с ручными настройками и в следующем диалоговом окне используйте существующий порт. Выберите порт виртуального принтера для USB, USB001 или USB002, из списка, а не параметры порта LPT.

первый принтер многорежимный принтер матрицы многоточия Panasonic KX-P1191. Принтер не отображается в диалоговом окне с запросом драйвера и обновление списка, нажав кнопку Центр обновления Windows не помогает. Проверка сайта поддержки Panasonic указывает на то, что принтер полностью не поддерживается на данный момент, но специалист технической поддержки Panasonic помог разобраться в следе, который привел к драйвер Epson FX Series 1 (80) входит в состав Windows 8.1. Отлично работает.

теперь принтер установлен. Но он находится на порту USB001 и программа будет печатать только на порт LPT1. Решение относительно простое и может быть интегрировано прямо в пакетный файл, который используется для запуска программы. Давайте сделаем старую школу и подшутим над нашим принтером: мы поделимся им и напечатаем на LPT1 таким образом.

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

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

теперь измените пакетный файл и используйте хорошо документированную команду net use для реализации решения печати:

где компьютер-имя компьютера, а принтер-имя общего ресурса принтера. Процедура работала одинаково хорошо на втором компьютере для принтера HP LaserJet 1100 с помощью драйвера» HP LaserJet 1100 (MS)», поставляемого с Windows 8.1.

— NOTES —

Системная Ошибка 5:

убедитесь, что пользователь указан на вкладке Безопасность. «Каждый» может быть удаленный. Требуются ли пользователю права администратора домена? Наверное нет, если все выполняется из одного домена.

Системная Ошибка 66:

Проверьте синтаксис. Возможно, вы неправильно написали имя компьютера, принтер, или, может быть, пропустили двоеточие? Только одно двоеточие необходимо, в в документации Microsoft. Будет добавление ненужного двоеточия в порт lpt1[:] причиной неудачи?

Источник

Как имитировать параллельный (LPT) принтер с USB-принтером?

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

Как заставить мой компьютер думать, что мой USB-принтер подключен к порту lpt?

Далее это для офиса. У меня будут права администратора при реализации обходного решения, но я стараюсь найти решение, которое работает, когда «обычный» пользователь регистрируется после того, как все настроено.

Вы можете обмануть Windows, используя USB-принтер в качестве фиктивного «сетевого» принтера, подключенного к LPT1.

Поделитесь USB принтером

Используйте легко запоминающееся имя ресурса, например «Принтер».

Подключите общий принтер как LPT1

Использование адаптера USB-параллельный не имеет никакого смысла. Здесь мы говорим об использовании очень старого устаревшего программного обеспечения на оборудовании с подключением только через USB. В моем случае это принтер этикеток ZEBRA.

Решение в моем случае было.

  1. Установите USB-принтер с его драйверами (просто чтобы узнать, к какому USB-порту подключен)
  2. Измените порт драйвера на ФАЙЛ (и освободите порт USB)
  3. Установите драйвер Generic / Text Only и измените порт на тот же логический порт USB, который показан в пункте 1
  4. Совместно использовать принтер «Общий / только текст», чтобы его было легко увидеть в VBA.
  5. Установите адаптер Microsoft Loopback на фиксированный неиспользуемый IP-адрес (иначе ваш принтер не будет виден при отключении кабеля)
  6. Назначьте порт LPTx: как описано ранее в командной строке (это для каждого ПО, которому требуется старый LPT)

С помощью нескольких строк кода вы сможете отправлять коды ASCII на принтер, как это было в прошлом.

Теперь вы можете легко печатать в VBA (протестировано на 64-битной Windows 7 и принтере ZM400 Zebra)

Получает стандартный вывод на принтер, созданный приложением DOS, и перенаправляет его на принтер Windows по умолчанию. Преобразует кодовую страницу, удаляет пустые страницы, поддерживает символы BOX DRAWINGS. Работает на всех платформах Windows.

Используйте DOS Print Program для манипулирования вашими доступными портами на нужные устройства. Вы можете скачать его по этой ссылке https://www.dropbox.com/s/gdx05sckmbqnast/dosprint.exe?dl=0 (dos Print)

Читайте также:  Не работает вай фай роутер билайн куда звонить

Сначала запустите dosprint и dosprintui с правами администратора, затем дважды щелкните значок на панели задач dosprintui, чтобы получить список доступных портов для сопоставления, затем дважды щелкните lpt1 или кнопку set и выберите нужный принтер для сопоставления с ним и нажмите Ok. BINGO теперь вы можете печатать на порт LPT1, и ваш USB-принтер распечатает это для вас.

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

16-разрядная программа DOS, с которой нам нужно работать, находится на 32-разрядном сервере Windows 2003, который вскоре будет удален. До этого общий ресурс программы сопоставляется на двух 32-разрядных клиентских компьютерах из основного домена с помощью групповой политики. Ярлык для файла .cmd, который запускает программу, размещается вручную на клиентах, также в основном домене. Программа хорошо работает на Windows 8.1. Конечно, это немного компромисс, но машины будут обновлены до 64-битной Windows 8.1, когда программа DOS, которая запускается из вторичного домена, будет удалена.

Печать из программы представляет собой самую большую проблему. В этой программе используются два разных параллельных принтера, но программа печатает только на один порт, и нет никакой возможности изменить это поведение. Нужно распечатать чек на лазерный принтер? Он должен быть подключен к порту LPT1. Нужно распечатать дамп данных на матричный принтер? Он также должен быть подключен к порту LPT1. С этой программой ежедневно работают два человека, поэтому мы будем использовать их компьютеры, по одному для каждого принтера. Давайте установим первый принтер:

Если компьютер имеет физический (параллельный) порт DB-25, вы можете отключить его в BIOS. Windows 8.1 не будет поддерживать это, и нам это не нужно.

A Cables-to-Go модель 16899 Адаптер параллельного принтера USB-DB25 используется для подключения принтера к компьютеру. Адаптер устанавливается автоматически и не распознается как параллельное устройство или порт LPT.

Теперь откройте Устройства и принтеры. Нажмите Добавить принтер и выберите нужный принтер, которого нет в списке. В следующем диалоговом окне выберите «Добавить локальный принтер или сетевой принтер с ручными настройками» и в следующем диалоговом окне «Использовать существующий порт». Выберите виртуальный порт принтера для USB, USB001 или USB002, из списка, а не параметры порта LPT.

Первый принтер — это многорежимный матричный принтер Panasonic KX-P1191. Принтер не указан в диалоговом окне, запрашивающем драйвер, и обновление списка путем нажатия Центра обновления Windows не помогает. Проверка сайта поддержки Panasonic показывает, что принтер на данный момент полностью не поддерживается, но специалист службы технической поддержки Panasonic помог разобраться в том, что привело к драйверу Epson FX Series 1 (80), включенному в Windows 8.1. Работает отлично.

Теперь принтер установлен. Но он находится на порту USB001, и программа будет печатать только на порт LPT1. Решение относительно простое и может быть интегрировано прямо в пакетный файл, который используется для запуска программы. Давайте возьмем старую школу и подшучиваем над нашим принтером: мы поделимся им и напечатаем на LPT1 таким образом.

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

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

Теперь измените пакетный файл и используйте хорошо документированную команду net use для реализации решения печати:

Где COMPUTER — это имя компьютера, а PRINTER — это общее имя принтера. Процедура одинаково хорошо работала на втором компьютере для принтера HP LaserJet 1100 с использованием драйвера «HP LaserJet 1100 (MS)», поставляемого с Windows 8.1.

— ПРИМЕЧАНИЯ —

Системная ошибка 5:

Убедитесь, что пользователь указан на вкладке безопасности. «Все» могут быть удалены. Требуются ли для пользователя права администратора домена? Вероятно, нет, если все работает с одного домена.

Системная ошибка 66:

Проверьте свой синтаксис. Вы, вероятно, неправильно написали имя компьютера, принтера или, возможно, пропустили двоеточие? В соответствии с документацией Microsoft требуется только одна двоеточие. Будет ли добавление ненужного двоеточия в lpt1 [:] вызвать сбой?

Источник

Оцените статью