Отправка Generic/Text непосредственно на матричный принтер Epson через USB с использованием Java

Есть ли способ напрямую отправить кодированную строку «ESC» на матричный принтер Epson, подключенный к USB с помощью Java. Я успешно пробовал это, используя порт LPT1. Однако большинство наших клиентов теперь используют USB-кабели вместо старых кабелей Parellel. Основная проблема, с которой я сталкиваюсь, заключается в том, как открыть конкретный USB-накопитель, к которому принтер подключен в качестве выходного потока в Java. Заранее спасибо за любые советы и предложения.


person Community    schedule 20.05.2009    source источник


Ответы (3)



Поскольку вы говорите LPT1, я предполагаю, что это для Windows.

Я не вижу 100% Java-решения для этого, вы хотите иметь дело с оборудованием

JNI

Вы можете использовать JNI для вызова некоторых Windows DLL, написанных на родном языке (C/C++/Delphi), которые экспортируют одну функцию SendData. Вы можете подготовить данные во временном файле (случайное имя файла), и DLL отправит их на принтер, а затем удалит.

В Java вы можете использовать load и loadlibrary для загрузки DLL.

Используйте готовые решения для преобразования его в USB/LPT

person Osama Al-Maadeed    schedule 25.05.2009

Вот как это делается в Java:

PrintService pservice = ... // acquire print service of your printer
DocPrintJob job = pservice.createPrintJob();  
String commands = "";
commands += "\u001B\u0045\u000A"; // plain
commands += "Hello ";
commands += "\u001B\u0045\u000D"; // bold
commands += "ESCP!";
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(commands.getBytes(), flavor, null);
job.print(doc, null);

Заимствовано из: https://stackoverflow.com/a/9309845/3196753

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

person tresf    schedule 20.09.2016