我正在开发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应该如何发送?
EVA-DTS 标准是其自己的单独标准。
MDB 可选(可选关键字)使用/集成 EVA-DTS 数据,这就是它在这里所要求的。
EVA-DTS 数据是人类可读的 ASCII 文本/数字值,按定义的顺序和长度用星号分隔。星号之间的每个数据单元称为数据元素。
选项 1 和 2 中的 Z9 指的是数据元素 DA701,如果您查看 EVA-DTS-6.2.2 标准的附录 A,DA701 的元素名称为“Cashless1 用户组编号”,其数据类型为 N0,表示没有任何隐含小数点的数字,最小长度为 1 位,最大长度为 13。在 MDB 中,不会以 ASCII 字符串形式发送,例如“15”,而是使用十六进制数字表示形式,因此用户组 15 将是0x0F。如果用户组不使用,则可以为每个人设置0x01。它用来对人进行分组,用不同的价格表,给不同的人不同的价格。不确定这是否是 MDB 功能,但如果不是,任何 VMC 都可以实现它。都是可选的。
Z9你可以自己查一下
Z8,前两个最高有效位用于指示是否是自动售货卡支付(如信用卡或任何真正形式的无现金支付)。其余数字取决于供应商。您使用 4 个选项之一(请阅读 DTS 标准的附录 A 第 1.1 节,以获取它们含义的定义以及哪些选项适合该情况。根据所使用的选项(1、2、3 或 4)来决定Z9 和 Z10 是什么,就像选项 3 所说的 z9 将是 0x00,而 Z10 将变成百分比(因为 z8 将描述给定的百分比折扣),而如果您选择选项 1,Z10 则包含 DTS 元素 LA101 的值。
希望这不会太罗嗦或语无伦次。也祝你好运,我们是竞争对手。
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |