MDB-RS232控制MDB协议的自动售货机纸币器以及找零器详解

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: 扩展指令必须和子命令一起表示和使用

  1. 对于MDB-RS232适配器,适配器本身将执行POLL(33H)命令来读取纸币器的数据和状态。当纸币机收到纸币或有需要上报的状态时,会在对应的轮询时间段内通过MDB-RS232适配器将相应的数据发送到VMC主机。因此,VMC主机软件工程师不需要考虑POLL命令和具体的时序,只需要在需要时发送RESET命令,SETUP读取配置,然后根据SETUP数据通过BILL type启用相应类型的纸币。然后,只要有纸币被接受,STACKER命令就用于查询钱箱的状态和纸币数量。
  2. 对于找零器(Recycler)的操作可以参考我们另外一个文章“如何使用MDB-RS232® 测试纸币找零器”

接下来,我们将简要介绍纸币器的开发命令序列:

例如,MDB-RS232通电后,我们将收到RESET成功数据(以下测试数据仅连接到纸币器):

MDB-RS232通电后,会主动向纸币器发送30H命令进行复位,如果设备存在,会回复00进行确认。有时候因为设备启动时间较长,会在设备复位时,报告06。因此,当使用MDB-RS232控制支付设备时,我们只需要根据MDB-RS232报告的数据和状态来判断纸币器是否正常工作。

  1. 接下来我们发送配置指令去读取纸币器的配置信息

发送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

  1. 关于纸币器上电一直收到30 09的数据

纸币器和硬币器在上电后都是处于禁止状态。但是硬币器的禁止状态不会主动报告,而纸币器的禁止状态会一直向VMC报告,VMC会一直收到09的状态,直到使用使能指令使能了纸币接收。

现在,我们已经完成了基本配置和阅读

  1. 接下来,我们需要根据我们需要接收的纸币类型发送相应的启用命令(禁止或者接收纸币,以及是否使能暂存器),例如

         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类型的纸币,进入钱箱)

  1. 接下来我们介绍根据配置进行币值计算

比如 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个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值