MDB-RS232控制硬币器的指令说明及流程解析
MDB硬币器的控制指令列表如下:
MDB-RS232与自动售货机MDB硬币器测试- 对于MDB-RS232适配器,适配器自身会进行POLL指令,分时读取硬币器的数据和状态。硬币器有接收到硬币或者有状态需要报告的时候,会在对应的时段把相应的数据通过MDB-RS232适配器发送给主机。因此主板开发工程师不需要考虑POLL指令和具体时序,只需要在需要的时候:发送 RESET复位指令,SETUP读取配置,然后根据SETUP的数据通过COIN TYPE使能对应类型的硬币。然后只要在有硬币变化或者找零后,通过TUBE STATUS指令去查询硬币器数量状态(为后续找零指令做数据准备)
- 找零指令,一般只要适用0F02指令即可,一般不适用0DH指令。具体需要用到的指令,可以参考后面的指令列表,产品具体测试的过程中,也可以和我们的工程师讨论,会提供更多的技术支持。
指令 | 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
- 运行过程中和硬币数据发生变化时候通过0AH指令去不断检测钱管里数量的变化
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元
更多的技术,可以在产品具体测试的时候,咨询我们的专业技术人员
审核编辑 黄宇
-
适配器
+关注
关注
8文章
1927浏览量
67877 -
MDB
+关注
关注
1文章
23浏览量
9410
发布评论请先 登录
相关推荐
评论