与串口“Verifone VX520”通信

4
我正在通过串口向“Verifone VX520” 支付设备发送数据。这是我第一次与这样的设备通信。
按照结构,此消息应该发送某些金额并在机器上显示,但我只得到了这条消息“发送确认”。
当我尝试读取确认时,我只得到了这个字符。它就像是倒置的“T”。
那么,有什么办法可以知道出了什么问题?

您是否已将波特率、奇偶校验和停止位设置为与设备匹配? - SteveFerg
是的,我在打开端口之前做了这个操作:SerialObj = new System.IO.Ports.SerialPort(port, baudrate, parity, databits, stopbits);。 - Mohamed
你是否使用了空调调制解调器电缆?此外,您是否有另一台设备可以尝试使用该电缆发送/接收文本? - SteveFerg
尝试的其他方法包括8个数据位无奇偶校验和更快的波特率。最坏的情况下,发送Ctrl-Q。这些都是我过去使用过的一些方法。 - SteveFerg
只是出于好奇,你想用这个串行连接做什么? - David
我有一个小型的财务系统,被要求开发一个新模块,以便将其集成到某些付款表单中,并与支付设备进行集成。我只收到了支付终端,并附带了一份简要文档,其中包含类似于我在代码中提供的消息签名。 - Mohamed
1个回答

3
大多数 Verifone 终端使用一种特殊的消息格式来在 PC 和软件之间传递信息。您的付款字符串有误。终端的回复是正确的。十进制 21 是十六进制 15h NAK,表示消息有误或 crc 有误。 您的字符串应该像这样 "\02PUR.10.99._000000000004.634._4761739001010010FFFFF.0808.123456. .\03",但我真的怀疑这些点是否真的是点而不是带有不同字符 (1Ch) 的字段分隔符。消息也缺少 ETX 后的 CRC 字符。 与终端通信的最佳方式是首先从设备制造商或供应商获取您正在尝试使用的 POS 通信协议的手册。如果您详细说明了您想要通过 POS 设备实现什么目标,如下载软件、使用 ECR 功能等,也会有所帮助。

是的,你说得对,我找到了“字段分隔符”而不是点,但我仍然不知道最好的正确方式来与这个设备通信,除了一个只包含消息格式的简短文档外,我没有任何手册或文件可以帮助我,但我不知道如何在这里附加它,我正在尝试做的是从我的系统通信以向终端发送金额并从中接收确认。 - Mohamed
如果可以的话,请将文档数据复制到此处。如果无法复制,请将文档放在http://pastebin.com/上,并在此处共享链接。因此,我假设您正在尝试使用由供应商实现的ECR协议来进行Verifone终端应用程序。从技术上讲,您必须首先精确地复制该文档中的消息,然后查看终端是否有响应。 - JD_GRINDER
我已经在文件中分享了第一条消息,很抱歉我没有文档的软拷贝。 - Mohamed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接