禾碩POS熱敏票據(jù)打印機是一種新型的微型打印機。它的特點是體積小、打印速度快、噪聲低、打印質(zhì)量高,并且操作簡單,無需色帶,可免除許多日常維護的煩惱。
禾碩打印機除兼容市面各品牌打印機外,還有完整的自有指令體系,應(yīng)用于如保險公司、客運系統(tǒng)、餐飲系統(tǒng)等對應(yīng)的行業(yè)。
禾碩公司所發(fā)布的所有工具和軟件,都已經(jīng)過數(shù)字認證簽名,下載使用前,請確認是否為禾碩簽名產(chǎn)品,未簽名產(chǎn)品,請進行殺毒等處理并確保文件的安全性
禾碩票據(jù)打印一票一控規(guī)范
在傳統(tǒng)POS打印機中,經(jīng)常有丟單現(xiàn)象,尤其是后臺廚房打印。本文檔為了解決這個問題,規(guī)范出一個流程,使打印穩(wěn)定可靠。
本文檔主要是針對以太網(wǎng)接口打印機。
1.2 以太網(wǎng)打印機通訊鏈接參數(shù)
表 1.1以太網(wǎng)打印機通訊鏈接
通訊協(xié)議
TCP
通訊端口
9100
1.3 丟票原因分析
POS 打印機丟單,主要原因是打印數(shù)據(jù)通道只是單向數(shù)據(jù),即上位機往下位機發(fā)送打印數(shù)據(jù),下位機打印數(shù)據(jù)。下位機緩沖滿,或打印票據(jù)打印完成等下位機狀態(tài),不能實時反饋給上位機。這樣,上位機數(shù)據(jù)發(fā)出后,下位機有沒有收到?收到后,有沒有打。慷疾粡闹。
1.4 解決辦法
解決辦法就是一票一控,單張票據(jù)發(fā)送,上位機需要按如下幾個步驟進行,
1. 每張打印票據(jù)建立一個流水號。
2. 建議一個雙向數(shù)據(jù)通道,下位機可以向下位機發(fā)送數(shù)據(jù),下位機可以向上位機返回信息。
3. 上位機向下位機發(fā)送數(shù)據(jù)時,先發(fā)送流水號,然后發(fā)送打印數(shù)據(jù)。
4. 下位機收到流水號后,先緩存起來,打印完成后,將流水號會送給上位機,代表該張票據(jù)成功打印。
5. 上位機發(fā)送完一張打印數(shù)據(jù)后,等待下位機反饋回來的流水號。
6. 如果在10秒內(nèi),沒有等到下位機回送過來的流水號,代表下位機接收該張票不成功,上位機重發(fā)這張票據(jù),流水號不變。
7. 如果上位機重發(fā)3次不成功,請檢查硬件。
8. 如果成功收到下位機回送來的流水號,代表該張票據(jù)打印成功,流水號自加1,上位機發(fā)送下一張票據(jù)。
圖 1.1一票一控上位機單張票據(jù)發(fā)送流程
1.5 上位機軟件處理流程
POS上位機軟件主要分為收銀與數(shù)據(jù)發(fā)送兩部分,采用一票一控的方式后,上位機軟件的數(shù)據(jù)發(fā)送流程需要增加一個發(fā)送數(shù)據(jù)隊列。
收銀任務(wù)與數(shù)據(jù)發(fā)送任務(wù)之間關(guān)系如下圖 1.2所示。
圖 1.3收銀任務(wù)與數(shù)據(jù)發(fā)送任務(wù)之間關(guān)系
然后收銀任務(wù)與數(shù)據(jù)發(fā)送任務(wù)需要按下面步驟來實現(xiàn)。
1.5.1 收銀任務(wù)流程
1. 正常收銀流程
2. 收銀完成
3. 申請一個內(nèi)存塊,將待發(fā)送數(shù)據(jù)復制放入內(nèi)存塊,將該內(nèi)存塊放入隊列。
注意:這里的數(shù)據(jù)隊列不是以字節(jié)單位,而是以塊為單位。
4. 將待發(fā)送數(shù)據(jù)放入發(fā)送隊列后,繼續(xù)收銀。
圖 1.4收銀任務(wù)流程
1.5.2 數(shù)據(jù)發(fā)送任務(wù)流程
1. 判斷數(shù)據(jù)隊列是否為空
2. 如果為空,等待數(shù)據(jù)
3. 如果有數(shù)據(jù),進入圖 1.1一票一控上位機單張票據(jù)發(fā)送流程
圖 1.5數(shù)據(jù)發(fā)送任務(wù)流程
1.6 新增指令
為了實現(xiàn)一票一控,需要增加數(shù)據(jù)塊起始指令與數(shù)據(jù)塊結(jié)束指令來封裝打印數(shù)據(jù)塊。
1.6.1 一票一控數(shù)據(jù)塊起始指令
【格式】 ASCII GS # S SN
十六進制 1D 23 53 SN
功能:標志打印數(shù)據(jù)塊開始,后續(xù)為打印數(shù)據(jù)內(nèi)容
SN 4BYTE 流水號
建議SN流水號為十進制數(shù)表示,由表 1.2所示的4部分組成。
表 1.2流水號組成
2位
2位
2位
4位
年
月
日
序列號
例如,13年8月13日第一張票的SN為十進制數(shù)的 1308130001,
16進制表示為 4D F8 7AD1,
因為數(shù)據(jù)是小端模式,對應(yīng)的16進制指令是
1D 23 53 D1 7A F8 4D
1D 23 53 4E 61 BC 00
1.6.2 一票一控數(shù)據(jù)塊結(jié)束指令
【格式】 ASCII GS # E
十六進制 1D 23 45
功能:標志打印數(shù)據(jù)塊結(jié)束,下位機收到該指令需要回送應(yīng)答信息,
表 1.3下位機回送信息內(nèi)容
ASCII
GS
#
E
SN(4BYTE)
16進制
1D
23
45
SN(4BYTE)
1.7 封裝后的打印數(shù)據(jù)塊格式
封裝了一票一控數(shù)據(jù)塊起始指令與結(jié)束指令的數(shù)據(jù)內(nèi)容,如下圖 1.5所示。
圖 1.6封裝后的打印數(shù)據(jù)塊格式
- PC官方版
- 安卓官方手機版
- IOS官方手機版