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

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

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

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

8 ответов

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

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

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

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

NET USE LPT1: \\[Computer-Name]\Printer /PERSISTENT:YES

Использование адаптера 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)

Open "\\Kb\ZM400" For Output As #1       'Kb = computer Name; ZM400 = Shared printer name
For rows = 1 To 37 ' send the first 37 rows of ASCII codes from the worksheet "STRINGS"
    Print #1, Worksheets("STRINGS").Cells(rows, 1).Value
Next
Close #1

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

https://www.dropbox.com/s/alf6hdd5fctepmo/dosprintui.exe?dl=0(dos Print UI)

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

Возможно, проверьте WinPrint:

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

Программы 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 для реализации решения печати:

@echo off
::delete the printer
net use lpt1 /delete
::add the printer
net use lpt1 \\\COMPUTER\PRINTER /persistent:yes
::fire up the nasty ol' DOS program
<existing syntax used to start the program>

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

-- ЗАМЕТКИ --

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

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

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

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

Все о сетевом использовании: https://technet.microsoft.com/en-us/library/bb490717.aspx

На рынке существует множество "параллельных USB-адаптеров". Вы можете получить один онлайн приблизительно за 10 $, и это - вероятно, хорошее место, чтобы начаться.

Я был в том же положении с программным обеспечением, разработанным на заказ для Clipper. Посмотрел какое-то параллельное программное обеспечение для эмуляции, чтобы печатать на USB-принтере, который работал, но имел свои проблемы. Преодоление 64-битной Win10 без проблем было настоящим испытанием.

Я нашел Harbour HMG, который после изменения нескольких строк кода перекомпилировал приложение в 32-битную версию. Я также заставляю свои приложения записывать данные во временные файлы, которые я беру в Microsoft Access, чтобы выпустить несколько великолепных отформатированных отчетов. О, кстати. Теперь приложения работают в 64-битных окнах 10 с существенными улучшениями в памяти и скорости. Кроме того, я отправляю отчеты на линейные USB-принтеры или на струйные принтеры или что-то другое.

Вы не сказали, какое аппаратное обеспечение вы используете, но, предполагая, что это ПК Wintel, вы должны иметь возможность купить для него обычную карту параллельного порта практически даром. Кроме того, вы можете перенаправить его с помощью NET USE, как предлагает harrymc.

Другие вопросы по тегам