Протокол MDB (многоточечная шина) – связь по протоколу С#

Вопрос:Я занимаюсь разработкой программного обеспечения MDB на С# в качестве средства для чтения платежей, которое связывается с торговым автоматом через протокол MDB. В настоящее время все работает нормально, и я могу общаться с торговым автоматом. Сообщение похоже на ожидаемое после чтения протокола MDB, но у меня возникли проблемы с пониманием некоторых команд /respones... У меня

Вопрос:

Я занимаюсь разработкой программного обеспечения MDB на С# в качестве средства для чтения платежей, которое связывается с торговым автоматом через протокол MDB. В настоящее время все работает нормально, и я могу общаться с торговым автоматом. Сообщение похоже на ожидаемое после чтения протокола MDB, но у меня возникли проблемы с пониманием некоторых команд /respones…

У меня только один вопрос относительно ответа, я должен отправить обратно в торговый автомат, который может быть действительно глупым, но я действительно не понимаю, как его следует отправить.

Как показано в протоколе MDB, когда я получаю POLL от машины MDB, а состояние считывателя (моего компьютера) – “Session Idle”, я могу отправить команду “Начало сеанса” в торговый автомат. Команды отправляются в байтах по последовательному порту и отображаются как HEX или Binary в проточном файле MDB. Команда BEGIN SESSION должна содержать следующее:

Z1 Начало сеанса
Доступные средства Z2-Z3
Z4-Z7 Идентификатор платежной информации
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?

Ответ №1

Стандарт EVA-DTS – это отдельный отдельный стандарт.

MDB-ICP – это протокол связи.

EVA-DTS является стандартом формата данных.

При желании MDB (ключевое слово необязательно) использует/интегрирует данные EVA-DTS, о чем здесь и просят.

Данные EVA-DTS представляют собой удобочитаемые значения в тексте/числах ascii, разделенных звездочками в определенном порядке и длине. Каждая единица данных между звездочкой, называется элементом данных.

Z9 в опциях 1 и 2 относится к элементу данных DA701, где, если вы посмотрите в Приложении A стандарта EVA-DTS-6.2.2, DA701 имеет имя элемента “Номер группы пользователей Cashless1”, которое имеет тип данных N0, означающий число без каких-либо подразумеваемых десятичных знаков, минимальная длина 1 цифра и максимальное значение 13. В MDB не отправляется как строка символов ASCII, например “15”, вместо этого вы используете шестнадцатеричные числовые представления, поэтому группа пользователей 15 будет 0x0F. Группу пользователей, если она не используется, вы можете просто поставить 0x01 для всех. Он используется для группирования людей с разными ценовыми таблицами, давая разные цены разным людям. Не уверен, что это функция MDB, но любой VMC может повлиять на нее, если нет. Все по желанию.

Z9 вы можете посмотреть сами

Z8, Первые два старших значащих бита используются для указания того, была ли оплата картой продавца (как в случае кредитной карты, или какой-либо реальной формой безналичного платежа). остальные цифры это зависит от продавца. Вы используете один из 4 вариантов (см. приложение A раздел 1.1 стандарта DTS, чтобы получить определения того, что они значат, и какие из них подходят в каждой из этих ситуаций. В зависимости от используемого варианта (1, 2, 3 или 4), который решает что такое Z9 и Z10, как в варианте 3 говорится, что z9 будет 0x00, а Z10 станет процентом (поскольку z8 будет описывать предоставленную процентную скидку), в то время как при выборе первого варианта Z10 вместо этого содержит значение элемента DTS LA101.

надеюсь, что это не слишком многословно или бессвязно. удачи тоже, мы конкуренты.

Оцените статью
Добавить комментарий