У нас есть POS, написанный на PHP, который должен взаимодействовать с POS-принтером. Принтер поддерживает JavaPOS. Состояние PHP POS заключается в том, что он генерирует счет и ждет, когда пользователь выберет принтер.
Проблема в том, что принтер JavaPOS не отображается. Я могу взаимодействовать с использованием тестового кода Java, который имеет необходимые драйверы & jpos.xml. Я хочу «установить» это.
Исходя из моего понимания в течение последних четырех дней, изучая руководства JavaPOS от разных производителей [EPSON, Starmicronics, Diebold Nixdorfag], это невозможно. JavaPOS предназначен для системы POS, написанной на Java [JavaFX to Spring].
Но я нахожу очень странным верить в это. Я считаю, что этого не должно быть, потому что если это так, то POS, не написанным на Java или .Net, будет очень трудно взаимодействовать с множество POS-устройств и терминалов там.
Следовательно, возможно ли взаимодействие с POS не Java и не .Net для отправки команды печати на устройство JavaPOS?
Обратите внимание, что простая установка устройства и отправка команды печати не решает проблему. Скажем, если я хочу добавить логотип к квитанции вместе с динамическими данными в нижнем колонтитуле квитанции, Java-код потребуется для .Net, чтобы сделать его «богатым». Теперь, где конкретно находится этот Java-код? Это какое-то виртуальное устройство, которое работает в фоновом режиме и изображает из себя принтер и отображается в диалоговом окне печати, например, в POS PHP?
Пример кода Java, написанного для взаимодействия с JavaPOS с файлом jpos.xml в качестве ссылки.
public static void main(String[] args) {
File f = new File(PrintFTest.class.getClassLoader().getResource("jpos.xml").getPath());
System.setProperty(JposPropertiesConst.JPOS_POPULATOR_FILE_PROP_NAME, f.getAbsolutePath());
//System.getProperties().list(System.out);
FiscalPrinter fiscalPrinter = new FiscalPrinter();
// Get Access to it
try {
fiscalPrinter.open("printf");
fiscalPrinter.claim(1000);
fiscalPrinter.setDeviceEnabled(true);
} catch (JposException e) {
System.out.println("Exception at Access");
e.printStackTrace();
}
// Print
try {
fiscalPrinter.resetPrinter();
fiscalPrinter.beginFiscalReceipt(true);
fiscalPrinter.printRecItem("Salame", 40000, 0, 0, 0, "");
fiscalPrinter.printRecTotal(40000, 40000, "CONTANTI");
fiscalPrinter.endFiscalReceipt(false);
} catch (JposException e) {
System.out.println("Exception at Print");
}
try {
System.out.println("1FP - Fiscal Printer disabling");
fiscalPrinter.setDeviceEnabled(false);
System.out.println("2FP - Fiscal Printer releasing");
fiscalPrinter.release();
System.out.println("2FP - Fiscal Printer closing");
fiscalPrinter.close();
} catch (JposException e) {
System.out.println("Exception at Close");
}
}
}