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

现在的问题是,JavaPOS打印机没有出现。我可以使用具有必要驱动程序&jpos.xml的测试Java代码进行交互。我想“安装”这个。

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

但是我相信这一点很奇怪。我相信事实并非如此,因为如果这是真的,那么用Java或.Net编写的POS将很难与过多的POS设备交互并在那里终端。

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

请注意,仅安装设备并发送打印命令并不能解决问题。说,如果我想在收据中添加徽标以及动态数据,在收据的页脚中,.Net将需要Java代码以使其“丰富”。现在,此Java代码专门放在哪里?它是某些虚拟设备在后台运行并假装成打印机,并在PHP POS这样的打印对话框中显示吗?

编写了与jpos.xml文件作为与JavaPOS交互的示例Java代码。

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打印机很少被视为各自操作系统的标准打印机设备。

例如,有这样的文章。
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以创建独立运行的程序。
该程序提供类似于POS处理单元的功能,例如“收据打印”。
该程序以简单明了的方式与PHP的POS通信,例如裸露的TCP / IP套接字,因此可以异步执行请求发出,完成通知或完成确认。




此外:

以下是完全用Java制作的POS应用程序的示例。
由于它们是开源的,因此似乎是编程的参考。
但是,未知是否使用JavaPOS控件。

Openbravo Java POS
Floreant POS

以下是用PHP编写的开源POS应用程序的示例。
可能不会使用JavaPOS。

OpenSourcePOS
WallacePOS

10-05 23:11