Есть ли способ напрямую отправить кодированную строку «ESC» на матричный принтер Epson, подключенный к USB с помощью Java. Я успешно пробовал это, используя порт LPT1. Однако большинство наших клиентов теперь используют USB-кабели вместо старых кабелей Parellel. Основная проблема, с которой я сталкиваюсь, заключается в том, как открыть конкретный USB-накопитель, к которому принтер подключен в качестве выходного потока в Java. Заранее спасибо за любые советы и предложения.
Отправка Generic/Text непосредственно на матричный принтер Epson через USB с использованием Java
Ответы (3)
Эта статья о JSR-80 а> может тебе помочь. Похоже, это совсем не тривиально и зависит от ОС...
Поскольку вы говорите LPT1, я предполагаю, что это для Windows.
Я не вижу 100% Java-решения для этого, вы хотите иметь дело с оборудованием
JNI
Вы можете использовать JNI для вызова некоторых Windows DLL, написанных на родном языке (C/C++/Delphi), которые экспортируют одну функцию SendData. Вы можете подготовить данные во временном файле (случайное имя файла), и DLL отправит их на принтер, а затем удалит.
В Java вы можете использовать load и loadlibrary для загрузки DLL.
Используйте готовые решения для преобразования его в USB/LPT
- Драйвер для вашего принтера.
- Команда NET USE
- DOS2USB или DOS2PRN
Вот как это делается в 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-драйвера, а затем добавление второго принтера с тем же портом, но необработанным или универсальным драйвером.