禾硕POS热敏票据打印机是一种新型的微型打印机。它的特点是体积小、打印速度快、噪声低、打印质量高,并且操作简单,无需色带,可免除许多日常维护的烦恼。
禾硕打印机除兼容市面各品牌打印机外,还有完整的自有指令体系,应用于如保险公司、客运系统、餐饮系统等对应的行业。
禾硕公司所发布的所有工具和软件,都已经过数字认证签名,下载使用前,请确认是否为禾硕签名产品,未签名产品,请进行杀毒等处理并确保文件的安全性
禾硕票据打印一票一控规范
在传统POS打印机中,经常有丢单现象,尤其是后台厨房打印。本文档为了解决这个问题,规范出一个流程,使打印稳定可靠。
本文档主要是针对以太网接口打印机。
1.2 以太网打印机通讯链接参数
表 1.1以太网打印机通讯链接
通讯协议
TCP
通讯端口
9100
1.3 丢票原因分析
POS 打印机丢单,主要原因是打印数据通道只是单向数据,即上位机往下位机发送打印数据,下位机打印数据。下位机缓冲满,或打印票据打印完成等下位机状态,不能实时反馈给上位机。这样,上位机数据发出后,下位机有没有收到?收到后,有没有打印?都不从知道。
1.4 解决办法
解决办法就是一票一控,单张票据发送,上位机需要按如下几个步骤进行,
1. 每张打印票据建立一个流水号。
2. 建议一个双向数据通道,下位机可以向下位机发送数据,下位机可以向上位机返回信息。
3. 上位机向下位机发送数据时,先发送流水号,然后发送打印数据。
4. 下位机收到流水号后,先缓存起来,打印完成后,将流水号会送给上位机,代表该张票据成功打印。
5. 上位机发送完一张打印数据后,等待下位机反馈回来的流水号。
6. 如果在10秒内,没有等到下位机回送过来的流水号,代表下位机接收该张票不成功,上位机重发这张票据,流水号不变。
7. 如果上位机重发3次不成功,请检查硬件。
8. 如果成功收到下位机回送来的流水号,代表该张票据打印成功,流水号自加1,上位机发送下一张票据。
图 1.1一票一控上位机单张票据发送流程
1.5 上位机软件处理流程
POS上位机软件主要分为收银与数据发送两部分,采用一票一控的方式后,上位机软件的数据发送流程需要增加一个发送数据队列。
收银任务与数据发送任务之间关系如下图 1.2所示。
图 1.3收银任务与数据发送任务之间关系
然后收银任务与数据发送任务需要按下面步骤来实现。
1.5.1 收银任务流程
1. 正常收银流程
2. 收银完成
3. 申请一个内存块,将待发送数据复制放入内存块,将该内存块放入队列。
注意:这里的数据队列不是以字节单位,而是以块为单位。
4. 将待发送数据放入发送队列后,继续收银。
图 1.4收银任务流程
1.5.2 数据发送任务流程
1. 判断数据队列是否为空
2. 如果为空,等待数据
3. 如果有数据,进入图 1.1一票一控上位机单张票据发送流程
图 1.5数据发送任务流程
1.6 新增指令
为了实现一票一控,需要增加数据块起始指令与数据块结束指令来封装打印数据块。
1.6.1 一票一控数据块起始指令
【格式】 ASCII GS # S SN
十六进制 1D 23 53 SN
功能:标志打印数据块开始,后续为打印数据内容
SN 4BYTE 流水号
建议SN流水号为十进制数表示,由表 1.2所示的4部分组成。
表 1.2流水号组成
2位
2位
2位
4位
年
月
日
序列号
例如,13年8月13日第一张票的SN为十进制数的 1308130001,
16进制表示为 4D F8 7AD1,
因为数据是小端模式,对应的16进制指令是
1D 23 53 D1 7A F8 4D
1D 23 53 4E 61 BC 00
1.6.2 一票一控数据块结束指令
【格式】 ASCII GS # E
十六进制 1D 23 45
功能:标志打印数据块结束,下位机收到该指令需要回送应答信息,
表 1.3下位机回送信息内容
ASCII
GS
#
E
SN(4BYTE)
16进制
1D
23
45
SN(4BYTE)
1.7 封装后的打印数据块格式
封装了一票一控数据块起始指令与结束指令的数据内容,如下图 1.5所示。
图 1.6封装后的打印数据块格式
- PC官方版
- 安卓官方手机版
- IOS官方手机版