是否可以使用 PHP POS 以简单的方式与 JavaPOS 设备进行交互?

Is it possible to interact with JavaPOS device using PHP POS in a simplistic manner?

我们有一个用 PHP 编写的 POS,它需要与 POS 打印机交互。打印机支持 JavaPOS。 PHP POS 的状态是生成账单并等待用户select 打印机。

现在的问题是,JavaPOS 打印机没有出现。我能够使用具有必要驱动程序和 jpos.xml 的测试 Java 代码进行交互。我希望'install'这个。

根据我过去四天浏览 Java不同制造商 [EPSON、Starmicronics、Diebold Nixdorfag] 的 POS 手册的理解,这是不可能的。 JavaPOS 用于在 Java [JavaFX 到 Spring] 中编写的 POS 系统。

但我觉得相信这一点很奇怪。我相信情况不应该是这样,因为如果这是真的,那么对于不写在 Java 或 .Net 与大量 POS 设备和终端进行交互。

因此,是否可以与非 Java 和非 .Net POS 交互以将打印命令发送到 JavaPOS 设备?

请注意,仅安装设备并发送打印命令并不能解决问题。比如说,如果我想在收据页脚中添加一个徽标以及动态数据,.Net 需要 Java 代码才能使其成为 'rich'。现在,这个 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");
    }

}

}

每个打印机供应商及其用户手册提供的 JavaPOS 中应该包含 installation/setup/configuration 方法。

请相应地安装和配置设备和软件。

但是,一般来说,JavaPOS 打印机很少被识别为其各自操作系统的标准打印机设备。

比如有这样一篇文章
Getting started with Java POS development
JavaPOS Working Group

接下来,建议您仅在Java环境下使用这些程序来操作和验证打印机。
emigonza/POStest
ntsggr/JavaPOS-POStest-2

PHP中的Java有如下几种使用方法。
PHP/Java Integration
Using PHP-Java Bridges with WebLogic Server
What is the PHP/Java Bridge?
How it works
Java Bridge
How to call custom java methods from PHP?

如果能用上面的方法解决就没有问题,但是我推荐下面的方法

  • 结合 Java 程序和 JavaPOS 创建一个独立运行的程序。
  • 该程序提供类似于"receipt printing"等POS处理单元的功能。
  • 本程序与PHP的POS进行通信,采用裸TCP/IP套接字等简单轻便的方式,可以异步进行请求发出、完成通知或完成确认。

另外:

以下是完全在 Java 中制作的 POS 应用程序示例。
由于这些都是开源的,看来可以作为编程的参考。
但是,不知道是否使用了JavaPOS控制。

Openbravo Java POS
Floreant POS

下面是一个用PHP编写的开源POS应用的例子。
可能 JavaPOS 不会被使用。

OpenSourcePOS
WallacePOS