18

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

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

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

8 ответов8

21

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

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

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

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

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

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

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

2

Программы 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

2

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

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

0

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

0

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .