我正在开发C#中的MDB软件作为付款阅读器媒体,该媒体通过MDB协议与自动售货机进行通信。目前一切正常,我可以与自动售货机进行通讯。在阅读了MDB协议之后,通信就像预期的一样,但是我在理解某些命令/响应时遇到了麻烦。
我只是有一个问题,关于我应该发回自动售货机的回复,可能真的很愚蠢,但是我真的不明白应该如何发送。
如MDB协议所示,当我从MDB机器获得轮询并且读取器(我的计算机)的状态为“会话空闲”时,我可以向自动售货机发送“开始会话”命令。这些命令以字节为单位通过串行端口发送,并在MDB协议中显示为十六进制或二进制。BEGIN SESSION命令应包含以下内容:
Z1开始会议Z2-Z3可用资金Z4-Z7付款媒体ID Z8付款类型Z9-Z10付款数据
我了解Z1-Z7是因为在MDB协议中有很好的示例,但是我在理解Z8-Z10(付款类型和付款数据)时遇到了麻烦。
MDB协议说明以下内容:
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“” “”“”“”
Z8:付款方式:
00xxxxxxb =普通自动售货卡(请参阅EVA-DTS标准附录A.1.1定义)
x1xxxxxxb =测试媒体
1xxxxxxxb =免费售货卡
xx000000b -0 VMC默认价格
xx000001b -1用户组(Z9 = EVA-DTS元素DA701)
价目表编号(Z10 = EVA-DTS元素LA101)*
xx000010b
-2用户组(Z9 = EVA-DTS元素DA701)
折扣组索引(Z10 = EVA-DTS元素MA403)
xx000011b
-3折扣百分比系数(Z9 = 00,Z10 = 0至100 **,
报告为EVA-DTS元素MA404中的正值)
xx000100b
-4附加费百分比系数(Z9 = 00,Z10 = 0到100 **,
报告为EVA-DTS元素MA404中的负值)
*用户组是所有授权用户的细分。
它允许选择性的成本分配。
用户组通常与价目表没有直接关系。
价目表是价格表。
每个价目表包含每种产品的单独价格。
折扣组指示将在其中应用百分比系数的价格清单。
如果VMC不知道用户组,价格表或折扣组,
使用正常价格(Z8默认为00h)。
Z9和Z10的最小值为0。
**百分比以二进制表示(00到64h)
注意:并非所有VMC都支持这些功能。
Z9-Z10:如上定义的付款数据
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“” “”“”“”
有人可以告诉我如何将Z8和Z9-Z10发送到自动售货机。现在,我一直在发送(以十六进制表示):“ 0x02(Z8),0x10(Z9)和0x10(Z10)”,这只是一个疯狂的猜测,它正在起作用。真的不知道为什么,但是可能不正确。
Z8和Z9-Z10应该如何发送?