MDB-RS232控制硬幣器的指令說明及流程解析
MDB硬幣器的控制指令列表如下:
MDB-RS232與自動(dòng)售貨機(jī)MDB硬幣器測(cè)試- 對(duì)于MDB-RS232適配器,適配器自身會(huì)進(jìn)行POLL指令,分時(shí)讀取硬幣器的數(shù)據(jù)和狀態(tài)。硬幣器有接收到硬幣或者有狀態(tài)需要報(bào)告的時(shí)候,會(huì)在對(duì)應(yīng)的時(shí)段把相應(yīng)的數(shù)據(jù)通過MDB-RS232適配器發(fā)送給主機(jī)。因此主板開發(fā)工程師不需要考慮POLL指令和具體時(shí)序,只需要在需要的時(shí)候:發(fā)送 RESET復(fù)位指令,SETUP讀取配置,然后根據(jù)SETUP的數(shù)據(jù)通過COIN TYPE使能對(duì)應(yīng)類型的硬幣。然后只要在有硬幣變化或者找零后,通過TUBE STATUS指令去查詢硬幣器數(shù)量狀態(tài)(為后續(xù)找零指令做數(shù)據(jù)準(zhǔn)備)
- 找零指令,一般只要適用0F02指令即可,一般不適用0DH指令。具體需要用到的指令,可以參考后面的指令列表,產(chǎn)品具體測(cè)試的過程中,也可以和我們的工程師討論,會(huì)提供更多的技術(shù)支持。
指令 | HEX代碼 | 指令說明 |
RESET | 08H | 復(fù)位指令 |
SETUP | 09H | 讀取配置信息 |
TUBE STATUS | 0AH | 讀取錢管信息 |
POLL | 0BH | 輪詢指令(不需要發(fā)送,由MDB-RS232適配器完成) |
COIN TYPE | 0CH |
設(shè)定哪些硬幣類型可以被接收以及可以被手動(dòng)取出 (這個(gè)指令根據(jù)SETUP指令讀取的硬幣類型去設(shè)置適用) |
DISPENSE | 0DH | 找零某個(gè)指定的硬幣類型 |
EXPANSION | 0FH |
擴(kuò)展指令(僅列出重要指令,其余可以咨詢技術(shù)支持工程師) 0F 00 讀取設(shè)備ID信息以及可選功能信息 0F 01 使能可選功能指令 0F 02 找零指令(按金額找零) 0F 03 找零狀態(tài)查詢 0F 04 找零金額查詢 0F 05 狀態(tài)查詢 |
接下來我們簡(jiǎn)單介紹一下硬幣器的開發(fā)指令序列及適用:
比如MDB-RS232通電后,我們會(huì)收到復(fù)位成功數(shù)據(jù)(以下測(cè)試數(shù)據(jù)為僅連接硬幣器):
MDB-RS232在上電后,會(huì)主動(dòng)向硬幣器發(fā)送08H指令去復(fù)位,如果設(shè)備存在,會(huì)回復(fù)00確認(rèn)。設(shè)備復(fù)位后,會(huì)報(bào)告0B。因此適用MDB-RS232控制支付設(shè)備時(shí),我們只需要根據(jù)MDB-RS232報(bào)告的數(shù)據(jù)和狀態(tài)就可以判斷硬幣器是否正常工作。
比如上面通電后串口收到的數(shù)據(jù):
08 00:表示硬幣器響應(yīng)了復(fù)位指令,接下來收到的08 0B:表示復(fù)位成功
- 接下來,就要讀取配置
發(fā)送09H(讀取配置參數(shù),這個(gè)字節(jié)的參數(shù)都是相當(dāng)重要的,必須要理解)
回復(fù)示例:031156050100030102000000000000000000000000000076
發(fā)送0F00(讀取設(shè)備ID,這些參數(shù)和計(jì)算價(jià)格等無(wú)關(guān),包括了設(shè)備代碼,版本,廠家型號(hào)等,我們做DEX數(shù)據(jù)報(bào)告的時(shí)候一般都會(huì)向服務(wù)器報(bào)告這些參數(shù),便于管理)
回復(fù)示例:49435430303031323334353637383943434D362D545741204D444201000000000366
發(fā)送0F01(完整指令示例: 0F0100000001)使能0F00參數(shù)說明里的Optional Features
回復(fù)示例:00
- 運(yùn)行過程中和硬幣數(shù)據(jù)發(fā)生變化時(shí)候通過0AH指令去不斷檢測(cè)錢管里數(shù)量的變化
0A
回復(fù)示例:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
前面兩個(gè)字節(jié)16個(gè)位表示哪個(gè)管子是滿的,后面16個(gè)字節(jié)表示16個(gè)管子里硬幣的數(shù)量
到這里,其實(shí)我們已經(jīng)完成了基本的配置和讀取
- 接下來,我們就要根據(jù)需要接收硬幣種類(或者禁止收幣),發(fā)出對(duì)應(yīng)的使能指令,比如
0CFFFFFFFF (發(fā)出這個(gè)指令后,硬幣器就可以收錢了)
回復(fù)示例:00
0C00000000 (如果正在找零中,或者機(jī)器維護(hù)中,我們就需要暫停收幣指令)
回復(fù)示例:00
下面等待MDB-RS232在有硬幣投入或者投幣狀態(tài)發(fā)生變化時(shí)報(bào)告數(shù)據(jù)即可。當(dāng)然一般設(shè)計(jì)工程師還是會(huì)每隔幾秒適用一次0A指令實(shí)時(shí)讀取錢管狀態(tài)。能隨時(shí)知道錢管里硬幣的狀態(tài),為找零提供準(zhǔn)確的依據(jù)。
收到投幣數(shù)據(jù): 08 51 01(示例數(shù)據(jù),我們可以看MDB協(xié)議里0BH的回復(fù)那一段)
收到狀態(tài)變化數(shù)據(jù): 08 01(投幣桿被按下)
08 02(找零BUSY)
如果區(qū)別是投幣數(shù)據(jù),還是狀態(tài)數(shù)據(jù)呢?
投幣數(shù)據(jù)是兩個(gè)字節(jié)組成,第一個(gè)字節(jié)必然是大于40H的。所以我們收到數(shù)據(jù),08開頭,就確定是硬幣器的數(shù)據(jù),后面是51,就是投幣數(shù)據(jù),分解為二進(jìn)制數(shù)據(jù)就是 0101 0001 00000001
(按MDB協(xié)議截圖的解釋就是:01類型的硬幣,進(jìn)入錢管,錢管里現(xiàn)在這個(gè)類型硬幣有1個(gè))
- 接下來介紹以下找零周期
比如 0F0206 (0F02是固定的找零指令,后面的06就是要找的幣值,當(dāng)然這個(gè)幣值是換算后的數(shù)值)
回復(fù)示例:00
硬幣器找零過程中,會(huì)不斷報(bào)告狀態(tài),比如找零BUSY,出口堵幣等異常
以下列出找零時(shí)候標(biāo)準(zhǔn)的指令序列:
0A 回復(fù):00000002000000000000000000000000000002讀取錢管狀態(tài),判斷是否有找零數(shù)量
0C00000000 回復(fù):00 先禁止投幣器收錢
0F0206 回復(fù):00 開始發(fā)送找零指令
0F04 回復(fù):0000 讀取已經(jīng)找零的數(shù)量,如果還沒有找出去,就是00 00
0F04 回復(fù):00 只回復(fù)了一個(gè)00,就表示找零已經(jīng)結(jié)束
0F03 回復(fù):00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 最后再次查詢找零個(gè)數(shù)
0CFFFFFFFF 回復(fù):00 重新使能硬幣器
- 接下來我們介紹根據(jù)配置進(jìn)行幣值計(jì)算
比如 09H指令,我們讀到的配置:031156050100030102000000000000000000000000000076
也就是計(jì)算比例是紅色的0501,幣值有0102 (0003表示最后兩個(gè)位的硬幣可以接收進(jìn)錢管)
因此幣類型0值是01:幣值就是 01*5=5,然后除以10(小數(shù)點(diǎn)左移1位),也就是幣金額為0.5
幣類型1值是02:幣值就是 02*5=10,然后除以10(小數(shù)點(diǎn)左移1位),也就是幣金額為1
(這里就可以看出來,我們的硬幣器接收一個(gè)0.5元,一個(gè)1元硬幣)
找零指令 0F0206 這里的06,同樣換算 06*5=30,然后除以10,就是找零3元
更多的技術(shù),可以在產(chǎn)品具體測(cè)試的時(shí)候,咨詢我們的專業(yè)技術(shù)人員
審核編輯 黃宇
-
適配器
+關(guān)注
關(guān)注
8文章
1952瀏覽量
68026 -
MDB
+關(guān)注
關(guān)注
1文章
23瀏覽量
9447
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論