MDB-RS232控制纸币器/找零器协议指令
指令 | HEX 代码 | 说明 |
RESET | 30H | 复位指令 |
SETUP | 31H | 读取配置信息指令(重要) |
SECURITY | 32H | 设置纸币器安全模式(一般不需要使用,机器自身有设置) |
POLL | 33H | 纸币器轮询指令(MDB-RS232不需要发送,由适配器自动处理) |
BILL TYPE | 34H | 纸币器的使能和禁止指令(根据配置指令去使能和禁止对应币种) 以及对哪些纸币类型使能暂存器 |
ESSCROW | 35H | VMC发送指令对暂存器里的纸币进行操作(比如接收,退回) |
STACKER | 36H | 指示钱箱满状态,已经纸币数量 |
EXPANSION COMMAND | 37H | 附加扩展指令的操作(Level 1及以上级别的纸币器都必须支持这个指令) |
NOTE: 扩展指令必须和子命令一起表示和使用
- 对于MDB-RS232适配器,适配器本身将执行POLL(33H)命令来读取纸币器的数据和状态。当纸币机收到纸币或有需要上报的状态时,会在对应的轮询时间段内通过MDB-RS232适配器将相应的数据发送到VMC主机。因此,VMC主机软件工程师不需要考虑POLL命令和具体的时序,只需要在需要时发送RESET命令,SETUP读取配置,然后根据SETUP数据通过BILL type启用相应类型的纸币。然后,只要有纸币被接受,STACKER命令就用于查询钱箱的状态和纸币数量。
- 对于找零器(Recycler)的操作可以参考我们另外一个文章“如何使用MDB-RS232® 测试纸币找零器”
接下来,我们将简要介绍纸币器的开发命令序列:
例如,MDB-RS232通电后,我们将收到RESET成功数据(以下测试数据仅连接到纸币器):
MDB-RS232通电后,会主动向纸币器发送30H命令进行复位,如果设备存在,会回复00进行确认。有时候因为设备启动时间较长,会在设备复位时,报告06。因此,当使用MDB-RS232控制支付设备时,我们只需要根据MDB-RS232报告的数据和状态来判断纸币器是否正常工作。
- 接下来我们发送配置指令去读取纸币器的配置信息
发送31H(读取配置参数,这些回复字节的参数非常重要,必须理解)
回复示例:02 11 56 00 0A 01 00 C8 00 3F FF 01 05 0A 14 32 64 00 00 00 00 00 00 00 00 00 00 34
(纸币换算参数0A 01,可以接收的纸币类型有:类型0:1元;类型1:5元;类型2:10元;类型3:50元;类型4:100元)
发送37 00(读取设备ID,这些参数和计算价格等无关,包括了设备代码,版本,厂家型号等,我们做DEX数据报告的时候一般都会向服务器报告这些参数,便于管理)
回复示例:49 43 54 00 00 00 00 00 00 00 00 00 00 00 00 4E 45 37 37 42 32 42 2D 43 4E 59 36 01 14 F9
- 关于纸币器上电一直收到30 09的数据
纸币器和硬币器在上电后都是处于禁止状态。但是硬币器的禁止状态不会主动报告,而纸币器的禁止状态会一直向VMC报告,VMC会一直收到09的状态,直到使用使能指令使能了纸币接收。
现在,我们已经完成了基本配置和阅读
- 接下来,我们需要根据我们需要接收的纸币类型发送相应的启用命令(禁止或者接收纸币,以及是否使能暂存器),例如
34FFFFFFFF (这个指令就是使能了纸币器所能接收的所有纸币类型,并且全部开启暂存器)
纸币器回复:00
3400000000 (如果前面两个红色标记的字节00都设置为00,纸币器就是禁止接收状态)
纸币器回复:00
接下来,当接收到纸币或纸币器状态状态发生变化时,就会在MDB-RS232轮询的时间段报告对应数据。当然,VMC工程师仍然会每隔几秒钟应用36命令来实时读取钱箱状态。它可以随时了解纸箱中纸币的状态,为找零提供准确的依据。
收到投币数据: 30 82 (30表示纸币器数据 82表示类型2的纸币即10元被压钞进钞箱)
(示例数据具体可以对照MDB协议里33H的纸币接收数据那一段)
收到状态变化数据: 30 0B(收到一个纸币,但是无法识别,被拒收)
30 09(纸币器被禁止接收)
如果区别是投币数据,还是状态数据呢?
投币数据是两个字节组成,第一个字节必然是大于80H的。所以我们收到数据,30开头,就确定是纸币器的数据,后面是82,就是投币数据,分解为二进制数据就是1000 0010
(如果收到30 82 按MDB协议截图的解释就是:02类型的纸币,进入钱箱)
- 接下来我们介绍根据配置进行币值计算
比如 31H指令,我们读到的配置:
02 11 56 00 0A 01 00 C8 00 3F FF 01 05 0A 14 32 64 00 00 00 00 00 00 00 00 00 00 34
也就是计算比例是红色的000A 01,币值有01 05 0A 14 32 64
因此币类型0值是01:币值就是 01*10=10,然后除以10(小数点左移1位),也就是币金额为1元
币类型1值是05:币值就是 05*10=10,然后除以10(小数点左移1位),也就是币金额为5元
币类型2值是0A:币值就是 10*10=10,然后除以10(小数点左移1位),也就是币金额为10元
(这里就可以看出来,我们这个纸币器可以接收1元,5元,10元,20元,50元,100元)
如果收到投币数据 30 82 这里的82,就是收到类型2的纸币,就是收到一个10元纸币
介绍一下标准的指令序列
以下列出找零时候标准的指令序列:
31 回复:02 11 56 00 0A 01 00 C8 00 3F FF 01 05 0A 14 32 64 00 00 00 00 00 00 00 00 00 00 34
3700 回复:49 43 54 00 00 00 00 00 00 00 00 00 00 00 00 4E 45 37 37 42 32 42 2D 43 4E 59 36 01 14 F9
34FFFFFFFF 回复:00
36 回复:00 02 02
具体详细文档以及针对找零器部分的讲解可以后续发布或者下载
标签:10,00,01,MDB,纸币,找零,指令,RS232 From: https://blog.csdn.net/waferstar/article/details/144276439