禾碩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官方手機版