我们有一个用 PHP 编写的 POS,它需要与 POS 打印机交互。打印机支持 JavaPOS。PHP POS 的状态是生成账单并等待用户选择打印机。
现在的问题是,JavaPOS 打印机没有出现。我能够使用具有必要驱动程序和 jpos.xml 的测试 Java 代码进行交互。我希望“安装”这个。
根据我过去四天浏览不同制造商 [EPSON、Starmicronics、Diebold Nixdorfag] 的 JavaPOS 手册的理解,这是不可能的。JavaPOS 适用于用 Java [JavaFX to Spring] 编写的 POS 系统。
但我觉得这很奇怪。我认为这不应该是这样,因为如果这是真的,那么不是用 Java 或 .Net 编写的 POS 将很难与过多的 POS 设备和终端进行交互。
因此,是否可以与非 Java 和非 .Net POS 交互以向 JavaPOS 设备发送打印命令?
请注意,仅安装设备并发送打印命令并不能解决问题。比如说,如果我想在收据的页脚中添加一个徽标以及动态数据,那么 .Net 将需要 Java 代码以使其“丰富”。现在,这段 Java 代码具体放在哪里?是不是某个在后台运行并伪装成打印机并显示在打印对话框中的虚拟设备,比如 PHP POS?
编写的示例 Java 代码以 jpos.xml 文件作为参考与 JavaPOS 交互。
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");
}
}
}