我们在刚接触自动售货机MDB协议的时候,会对于收到的投币数据感到很困惑。例如,我们使用威佛的MDB-RS232测试纸币器的时候,从PC端收到数据:30 81或30 81 09 到底货币的值是多少呢。后面的参数又是什么意义,为什么有时候30后面只有一个数据,有时候是两个,甚至还可能是三个,四个。。。。
30为设备ID:30说明数据来自纸币器,然后如果还有数据就是纸币器的状态数据,一共可以最多16个字节。所以就可能有时候只有一个货币数据,有时候有一个状态数据,有时候两个等等 (具体我们请参阅MDB协议V4.3第95页)
第一字节数据81(16进制数据),转换为二进制数据方便对比:1000 0001
那么81的意思是:有一张纸币被接收压仓了(bill Stacked),纸币类型是01
我们如何才能知道这个纸币的确切面值呢?
- 主机刚上电,都会通过SETPUP命令读取配置,纸币器是31指令,
例如回复数据为(不同的纸币器会有不同的配置数据):
01 11 56 00 64 02 00 C8 00 0 FF 01 05 0 a 14 00 00 00 00 000 00 00 00 0 00 00 00 C8
我们需要对照MDB协议31指令回复的配置参数:
Z4 Z5(换算比例系数)=0064 这个值是HEX数值,十进制就是100
Z6(小数移位数)=02 算出来的值需要小数点左移2位
Z12-Z27(纸币类型值)=01 05 0A 14 00 00 00 00 000 00 00 00
2.计算面值
我们的纸币类型是01,对应的纸币类型的值是05
然后计算:05*100/100(小数点移两位相当于除100)=5
因此我们收到的货币面值就是 5元。
以上就是纸币面值的转换与理解。 如果理解硬币器的数据,其实很类似,会在后面进行讲解