У нас есть 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-устройства и терминалы там.
Следовательно, возможно ли взаимодействовать с не Java и не .Net POS для отправки команды печати на устройство JavaPOS?
Обратите внимание, что простая установка устройства и отправка команды печати не решают проблему. Скажем, если я хочу добавить к квитанции логотип вместе с динамическими данными в нижнем колонтитуле квитанции, для .Net потребуется код Java, чтобы сделать ее «богатой». Теперь, где именно находится этот Java-код? Это какое-то виртуальное устройство, которое работает в фоновом режиме и притворяется принтером и отображается в диалоговом окне печати, скажем, в PHP POS?
Пример кода 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");
}
}
}