MDB-RS232控制硬币器的指令说明及流程解析
MDB硬币器的控制指令列表如下:
MDB-RS232与自动售货机MDB硬币器测试
指令 | HEX代码 | 指令说明 |
RESET | 08H | 复位指令 |
SETUP | 09H | 读取配置信息 |
TUBE STATUS | 0AH | 读取钱管信息 |
POLL | 0BH | 轮询指令(不需要发送,由MDB-RS232适配器完成) |
COIN TYPE | 0CH |
设定哪些硬币类型可以被接收以及可以被手动取出 (这个指令根据SETUP指令读取的硬币类型去设置适用) |
DISPENSE | 0DH | 找零某个指定的硬币类型 |
EXPANSION | 0FH |
扩展指令(仅列出重要指令,其余可以咨询技术支持工程师) 0F 00 读取设备ID信息以及可选功能信息 0F 01 使能可选功能指令 0F 02 找零指令(按金额找零) 0F 03 找零状态查询 0F 04 找零金额查询 0F 05 状态查询 |
接下来我们简单介绍一下硬币器的开发指令序列及适用:
比如MDB-RS232通电后,我们会收到复位成功数据(以下测试数据为仅连接硬币器):
MDB-RS232在上电后,会主动向硬币器发送08H指令去复位,如果设备存在,会回复00确认。设备复位后,会报告0B。因此适用MDB-RS232控制支付设备时,我们只需要根据MDB-RS232报告的数据和状态就可以判断硬币器是否正常工作。
比如上面通电后串口收到的数据:
08 00 :表示硬币器响应了复位指令,接下来收到的08 0B :表示复位成功
发送09H(读取配置参数,这个字节的参数都是相当重要的,必须要理解)
回复示例:031156050100030102000000000000000000000000000076
发送0F00(读取设备ID,这些参数和计算价格等无关,包括了设备代码,版本,厂家型号等,我们做DEX数据报告的时候一般都会向服务器报告这些参数,便于管理)
回复示例:49435430303031323334353637383943434D362D545741204D444201000000000366
发送0F01(完整指令示例: 0F0100000001)使能0F00参数说明里的Optional Features
回复示例:00
0A
回复示例:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
前面两个字节16个位表示哪个管子是满的,后面16个字节表示16个管子里硬币的数量
到这里,其实我们已经完成了基本的配置和读取
0CFFFFFFFF (发出这个指令后,硬币器就可以收钱了)
回复示例:00
0C00000000 (如果正在找零中,或者机器维护中,我们就需要暂停收币指令)
回复示例:00
下面等待MDB-RS232在有硬币投入或者投币状态发生变化时报告数据即可。当然一般设计工程师还是会每隔几秒适用一次0A指令实时读取钱管状态。能随时知道钱管里硬币的状态,为找零提供准确的依据。
收到投币数据: 08 51 01 (示例数据,我们可以看MDB协议里0BH的回复那一段)
收到状态变化数据: 08 01(投币杆被按下)
08 02(找零BUSY)
如果区别是投币数据,还是状态数据呢?
投币数据是两个字节组成,第一个字节必然是大于40H的。所以我们收到数据,08开头,就确定是硬币器的数据,后面是51,就是投币数据,分解为二进制数据就是 0101 0001 00000001
(按MDB协议截图的解释就是:01类型的硬币,进入钱管,钱管里现在这个类型硬币有1个)
比如 0F0206 (0F02 是固定的找零指令,后面的06就是要找的币值,当然这个币值是换算后的数值)
回复示例:00
硬币器找零过程中,会不断报告状态,比如找零BUSY,出口堵币等异常
以下列出找零时候标准的指令序列:
0A 回复:00000002000000000000000000000000000002读取钱管状态,判断是否有找零数量
0C00000000 回复:00 先禁止投币器收钱
0F0206 回复:00 开始发送找零指令
0F04 回复:0000 读取已经找零的数量,如果还没有找出去,就是00 00
0F04 回复:00 只回复了一个00,就表示找零已经结束
0F03 回复:00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 最后再次查询找零个数
0CFFFFFFFF 回复:00 重新使能硬币器
比如 09H指令,我们读到的配置:031156050100030102000000000000000000000000000076
也就是计算比例是红色的0501,币值有0102 (0003表示最后两个位的硬币可以接收进钱管)
因此币类型0值是01:币值就是 01*5=5,然后除以10(小数点左移1位),也就是币金额为0.5
币类型1值是02:币值就是 02*5=10,然后除以10(小数点左移1位),也就是币金额为1
(这里就可以看出来,我们的硬币器接收一个0.5元,一个1元硬币)
找零指令 0F0206 这里的06,同样换算 06*5=30,然后除以10,就是找零3元
更多的技术,可以在产品具体测试的时候,咨询我们的专业技术人员
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !