2015-05-04 2 views
4

Я отправляю данные через последовательный порт на платежное устройство Verifone VX520. Это моя первая попытка связаться с такими устройствамиСвязь с последовательным портом «Verifone VX520»

SerialObj.Open(); строка ввода = "02hPUR.10.99._000000000004.634._4761739001010010FFFFF.0808.123456.
.03h"; byte [] asciiBytes = Encoding.ASCII.GetBytes (ввод); SerialObj.Write (asciiBytes, 0, asciiBytes.Length);

По структуре это сообщение должно отправить некоторое количество и появляется его на машине, но то, что я получил только это сообщение «Отправка Ack» И когда я пытался читать подтверждение я получил только этот персонаж

enter image description here

это как с ног на голову «Т»

Итак, есть ли способ узнать, что происходит здесь не так.

+0

Установили ли вы бит скорости, четность и стоповые биты в соответствии с устройством? – SteveFerg

+0

Да, я сделал это до открытия порта SerialObj = new System.IO.Ports.SerialPort ( порт, скорость передачи, паритет, данные, остановки); – Mohamed

+0

Вы используете нуль-модемный кабель? Также есть ли у вас другое устройство, которое вы можете попробовать с помощью этого кабеля для отправки/получения текста? – SteveFerg

ответ

3

Большинство терминалов Verifone используют специальное форматирование сообщений для передачи информации между ПК и программным обеспечением внутри. Ваша платежная строка неверна. Ответ от терминала правильный. 21 десятичная цифра составляет 15 часов, что означает неправильное сообщение или ошибка crc. Ваша строка должна выглядеть так: «\ 02PUR.10.99._000000000004.634._4761739001010010FFFFF.0808.123456. . \ 03« но я действительно сомневаюсь, что точки - это действительно точки, а не полевые разделители, которые кодируют другой символ (1Ch) , сообщение также пропускает символ CRC после ETX. Лучший способ связи с терминалом - получение руководства по протоколу связи POS, который вы пытаетесь использовать от производителя устройства или от поставщика. Это также помогает, если вы подробно расскажете о том, чего вы пытаетесь достичь с помощью POS-устройства ... Загрузите программное обеспечение, используйте функции ECR и т. Д.

+0

Да, вы правы, я обнаружил, что «Символ разделителя полей» не является точкой, но, тем не менее, я не знаю, как правильно установить этот способ, у меня нет руководства или какого-либо документа. помощь, за исключением краткого, содержит только формат сообщений, но я не знаю, как это сделать здесь, и я пытаюсь связаться с моей системой, чтобы отправить сумму на терминал и получить от нее подтверждения – Mohamed

+0

Скопируйте данные документа здесь, если сможете. Если вы не просто разместите документ на http://pastebin.com/ и поделитесь ссылкой здесь. Так как я предположил, что вы пытаетесь использовать протокол ECR, скорее всего, реализованный поставщиком для вашего приложения Verifone. Технически вы должны перенести сообщения в этом документе точно в первую очередь и посмотреть, отвечает ли терминал. –

+0

https://drive.google.com/folderview?id=0B_K4viz-3NbHfm41WndHTS1vTFRxT0k3YlZqMzBFTDNJbXJGS3c4eEQyNnlfWU9NQ1JYS1k&usp=sharing – Mohamed