У нас есть 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-код? Это какое-то виртуальное устройство, которое работает в фоновом режиме и изображает из себя принтер и отображается в диалоговом окне печати, скажем, в 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");
}
}
}
Он должен содержать метод установки / настройки / настройки в JavaPOS, предоставляемый каждым поставщиком принтера, и руководство пользователя.
Пожалуйста, установите и настройте оборудование и программное обеспечение соответственно.
Однако, как правило, принтеры JavaPOS редко распознаются как стандартные принтерные устройства для их соответствующих операционных систем.
Например, есть такая статья.
Начало работы с разработкой Java POS
Рабочая группа JavaPOS
Далее, рекомендуется использовать эти программы для работы и проверки принтера только в среде Java.
emigonza / POStest
ntsggr / JavaPOS-POStest-2
Есть несколько способов использовать Java из PHP следующим образом.
Интеграция PHP / Java
Использование мостов PHP-Java с сервером WebLogic
Что такое мост PHP / Java?
Как это устроено
Java Bridge
Как вызвать пользовательские методы Java из PHP?
Нет проблем, если это можно решить с помощью вышеуказанного метода, но я рекомендую следующий метод.
К тому же:
Ниже приведен пример POS-приложения, полностью выполненного на Java.
Так как они с открытым исходным кодом, кажется, это ссылка для программирования.
Однако неизвестно, используется ли элемент управления JavaPOS или нет.
Openbravo Java POS
Floreant POS
Ниже приведен пример POS-приложения с открытым исходным кодом, написанного на PHP.
Вероятно, JavaPOS не будет использоваться.
Других решений пока нет …