我正在使用C#开发MDB软件作为支付读卡器媒体,通过MDB协议与自动售货机通信。目前一切正常,我可以与自动售货机通信。在阅读MDB协议后,通信就像预期的那样,但我无法理解一些命令/响应......
我只有一个关于我应该发送回自动售货机的回复的问题,这可能是非常愚蠢的,但我真的不明白应该如何发送。
如MDB协议所示,当我从MDB机器获得POLL并且阅读器(我的计算机)的状态为“Session Idle”时,我可以向自动售货机发送“Begin Session”命令。命令通过串行端口以字节为单位发送,并在MDB协议中显示为HEX或Binary。 BEGIN SESSION命令应包含以下内容:
Z1开始会话 Z2-Z3基金可用 Z4-Z7付款媒体ID Z8付款方式 Z9-Z10付款数据
我理解Z1-Z7是因为MDB协议中有很好的例子,但是我无法理解Z8-Z10(支付类型和支付数据)。这些例子在我脑海中没有自我解释..
The MDB protocol says the following: """""""""""""""""""""""""""""""""""""""""""""""""""""""" Z8 : Type of payment: 00xxxxxxb = normal vend card (refer EVA-DTS Standard, Appendix A.1.1 Definitions) x1xxxxxxb = test media 1xxxxxxxb = free vend card xx000000b -0 VMC default prices xx000001b -1 User Group (Z9 = EVA-DTS Element DA701) Price list number (Z10 = EVA-DTS Element LA101)* xx000010b -2 User Group (Z9 = EVA-DTS Element DA701) Discount group index (Z10 = EVA-DTS Element MA403) xx000011b -3 Discount percentage factor (Z9=00, Z10 = 0 to 100**, report as positive value in EVA-DTS Element MA404) xx000100b -4 Surcharge percentage factor (Z9=00, Z10 = 0 to 100**, report as negative value in EVA-DTS Element MA404) * User Group is a segmentation of all authorized users. It allows selective cost allocation. A User Group usually has no direct relation to a price list. Price Lists are tables of prices. Each Price List contains an individual price for each product. Discount Group indicates the Price List on which the Percentage Factor will be applied. If the User Group, the Price List or Discount Group is unknown by the VMC, the normal prices are used (Z8 is defaulted to 00h). Minimum value for Z9 and Z10 is 0. ** Percentages are expressed in binary (00 to 64h) Note: These functions may NOT be supported by all VMCs. Z9-Z10 : Payment data as defined above """"""""""""""""""""""""""""""""""""""""""""""""""""""""
有人可以告诉我如何将Z8和Z9-Z10送到自动售货机。现在我一直在发送(十六进制):“0x02(Z8),0x10(Z9)和0x10(Z10)”这只是一个疯狂的猜测它正在工作。不知道为什么,但它可能不正确。
如何发送Z8和Z9-Z10?
答案 0 :(得分:0)
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将描述给定的百分比折扣),而如果您选择选项一,则Z10会包含DTS元素LA101的值。>
希望不要太罗word或不一致。祝你好运,我们也是竞争对手。