我们有一个用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