Можно ли взаимодействовать с устройством JavaPOS с помощью PHP POS в упрощенной форме? - PullRequest
0 голосов
/ 08 января 2019

У нас есть 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");
    }

}

}

1 Ответ

0 голосов
/ 09 января 2019

Он должен содержать метод установки / настройки / настройки в 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?

Нет проблем, если это можно решить с помощью вышеуказанного метода, но я рекомендую следующий метод.

  • Объедините программу Java и JavaPOS, чтобы создать программу, которая работает автономно.
  • Программа предоставляет функции, аналогичные POS-устройствам обработки, такие как «печать чеков».
  • Эта программа взаимодействует с POS PHP простым и легким способом, таким как чистый сокет TCP / IP, так что выдача запроса, уведомление о завершении или подтверждение завершения могут выполняться асинхронно.

Дополнительно:

Ниже приведен пример POS-приложения, полностью выполненного на Java.
Так как они с открытым исходным кодом, кажется, это справочник по программированию.
Однако неизвестно, используется элемент управления JavaPOS или нет.

Openbravo Java POS
Floreant POS

Ниже приведен пример POS-приложения с открытым исходным кодом, написанного на PHP.
Вероятно, JavaPOS не будет использоваться.

OpenSourcePOS
WallacePOS

...