【发布时间】:2015-08-18 11:19:11
【问题描述】:
我正在开发一个销售点应用程序,其中一项功能是在热敏/收据打印机中打印收据。目前我有一台 Datecs DPP-255 打印机。
我不知道从哪里开始我的任务。
我尝试通过互联网搜索,发现存在 JavaPOS/UnifiedPOS,但我找不到足够的文档来帮助我入门。请提供一些启示。
【问题讨论】:
标签: java printing point-of-sale javapos
我正在开发一个销售点应用程序,其中一项功能是在热敏/收据打印机中打印收据。目前我有一台 Datecs DPP-255 打印机。
我不知道从哪里开始我的任务。
我尝试通过互联网搜索,发现存在 JavaPOS/UnifiedPOS,但我找不到足够的文档来帮助我入门。请提供一些启示。
【问题讨论】:
标签: java printing point-of-sale javapos
这是一个用于测试的开源项目,也可以作为如何使用JavaPOS编程的参考(源代码可用):
这里还有一些托管在 GitHub 上的项目(请参阅源代码以了解想法并进行尝试):
相关链接:
注意:
为了使用 JavaPOS(现在是 UnifiedPOS specification 的一部分,请参阅附录 B),您的 Datecs DPP-255 设备的生产商必须提供相关的驱动程序。有提供吗? JavaPOS - 是一个规范,因此必须有相应的实现。
【讨论】:
所以看起来这台打印机支持一种叫做 ESC/POS 的东西,它就像一个允许您打印和格式化数据的命令集。网上有一些指南,这是我以前用过的:http://www.starmicronics.com/support/mannualfolder/escpos_cm_en.pdf
请注意,打印机有时在它们支持的 ESC/POS 命令集方面存在细微差别,因此您可能需要进行一些试验和错误。
就将数据发送到打印机而言,这取决于它的连接类型。对于串行,您应该能够使用 ESC/POS 命令集打开并写入该端口。
并非您要发送的所有数据都是 ASCII 或 UTF 编码的,其中很多是您需要发送的二进制值。例如,要告诉打印机写一个新行,其十六进制值是0A。因此,在 Java 中,您需要将其指定为 String s = "\u000A"; 等。
对于 java,您需要从 http://java.sun.com/products/javacomm/ 下载 Java Comm API
这里有一个教程:http://www.java-samples.com/showtutorial.php?tutorialid=214
希望这会有所帮助。
【讨论】:
"\u000A" 也称为"\n",即换行符。并且 "\u000A" 将不起作用,因为 Java 编译器会将其解释为引号内的文字换行符。见stackoverflow.com/questions/3866187/…
"\n" 即可。