我有一个串行设备(病态LMS200)使用RS422转USB转换器连接到我的电脑。 LMS200和我的PC上的串口设置(波特率,停止位等)匹配并正在通信(使用LMS200附带的应用程序进行验证)。我需要编写一个与LMS通信的自定义应用程序。如何构建一个串行(RS422或RS232)消息通过PuTTy与病态LMS200进行通信?
在开始构建我的应用程序之前,我需要弄清楚如何在PC和LMS之间交换数据报。为了解决这个问题,我一直在尝试使用PuTTy手动发送数据报。 LMS手册(https://drive.google.com/open?id=0Byv4owwJZnRYVUJPMXdud0Z6Uzg)定义了数据报类型以及它们应该如何构建。例如,在手册的第46页,可以看到一个发送特定指令给单元的数据报;它看起来像这样:02 00 02 00 30 01 31 18
。
但是,当我使用PuTTy发送字符串02 00 02 00 30 01 31 18
LMS不响应(它应该)。我相信它没有响应,因为数据报丢失了一些串行头数据,或者我没有正确表示十六进制值(我试图用0x00
和00h
代表字节,如00
,但没有成功)。你能帮我用手册制定一个有效的串行消息吗?我一直在这里待了很长时间,而且我很难理解如何将手册中的信息转换为有效的数据报。
如果我可以提供更多信息,请让我知道。提前致谢。
没有像串行通信的帧或数据包的东西。你可以拥有像终端标准的东西,例如VT-100或专有协议。 –
好的,这是一个专有协议,VT-100是一个专有协议。你没有发送字符串“02 00 02 ...”吗?您应该发送字节值02十六进制然后00十六进制等,即每个数字对的单个字节/字符。这可能是与腻子有关的挑战,不知道如何让它发送00(nul)。您可以尝试窥探应用程序与设备之间的通信 - 这样,您可以计算出您的数据包需要哪些额外信息才能被设备接受。 – barny
@ barny不幸的是,我发送的是字符串。如何区分02十进制和02十六进制? '0x02'和'02h'都不起作用。我应该将02表示为'00000010'吗?任何其他想法? – Mike