Networking 如何构建串行(RS422或RS232)消息,通过PuTTy与生病的LMS200通信?

Networking 如何构建串行(RS422或RS232)消息,通过PuTTy与生病的LMS200通信?,networking,serial-port,Networking,Serial Port,我有一个串行设备(生病的LMS200)连接到我的电脑使用RS422到USB转换器。LMS200和my PC上的串行设置(波特率、停止位等)匹配并正在通信(使用LMS200附带的应用程序进行验证)。我需要编写一个与LMS通信的自定义应用程序 在开始构建应用程序之前,我需要弄清楚如何在PC和LMS之间交换数据报。为了解决这个问题,我一直在尝试使用PuTTy手动发送数据报。LMS()的手册定义了数据报类型及其构建方式。例如,在手册第46页上,可以看到向装置发送特定指令的数据报;它看起来是这样的:02

我有一个串行设备(生病的LMS200)连接到我的电脑使用RS422到USB转换器。LMS200和my PC上的串行设置(波特率、停止位等)匹配并正在通信(使用LMS200附带的应用程序进行验证)。我需要编写一个与LMS通信的自定义应用程序

在开始构建应用程序之前,我需要弄清楚如何在PC和LMS之间交换数据报。为了解决这个问题,我一直在尝试使用PuTTy手动发送数据报。LMS()的手册定义了数据报类型及其构建方式。例如,在手册第46页上,可以看到向装置发送特定指令的数据报;它看起来是这样的:
02 00 02 00 30 01 31 18

但是,当我使用PuTTy发送字符串
02 00 02 00 30 01 31 18
时,LMS不会响应(它应该响应)。我认为它没有响应,因为数据报缺少一些串行头数据,或者我没有正确表示十六进制值(我尝试使用
0x00
00h
表示字节,例如
00
,但没有成功)。您能帮助我使用手册制定一个有效的串行消息吗?我在这方面已经做了很长时间,我很难理解如何将手册中的信息转换为有效的数据报


请让我知道,如果我可以提供任何更多的信息。提前感谢。

完成此任务的方法是:

(1) 下载HexEdit软件,并创建一个包含十六进制值的文件(不是ascii表的十进制表示-其中数字2被记录为32)


(2) 然后使用Term软件通过串行线发送文件。

完成此操作的方法是:

(1) 下载HexEdit软件,并创建一个包含十六进制值的文件(不是ascii表的十进制表示-其中数字2被记录为32)

(2) 然后使用Tera Term软件通过串行线发送文件

我没有正确地表示十六进制值(我尝试使用0x00和00h表示字节,如00,但没有成功)

终端/PC键盘上的
Ctrl
键可用于生成ASCII控制字符(即字节值为
0x00
0x1F
的不可打印字符)。
Shift
键生成键的移位或大写字符(而不是其未移位或小写字符)一样,
Ctrl
键(带有字母或其他几个键)可以生成ASCII控制字符

典型的美国PC键盘可以通过键入ctrl-@,即按住
ctrl
Shift
键,然后键入
2
(因为“@”字符是美国PC键盘上
2
键的移位字符)来生成ASCII“NUL”字符

对于“SOH”或
0x01
键入ctrl-A(即
ctrl
+
A
键,
Shift
是不必要的),对于“STX”或
0x02
键入ctrl-B等,采用类似方式。
对于“SUB”或
0x1A
键入ctrl-Z.
对于“ESC”或
0x1B
键入
ESC
键。
对于“FS”或
0x1C
键入ctrl-\(或
ctrl
+
\
)。
对于“GS”或
0x1D
键入ctrl-](或
ctrl
+
]
)。
对于“RS”或
0x1E
键入ctrl-^(或
ctrl
+
Shift
+
6
)。
对于“US”或
0x1F
键入ctrl-(或
ctrl
+
Shift
+
-

请注意,一些常用的ASCII控制代码具有专用键,例如
“HT”具有用于
0x09

“BS”具有
0x08

“LF”具有
Enter
键(在Linux中)用于
0x0A
,并且
“ESC”具有用于
0x1B
ESC


当您不知道如何从键盘生成ASCII控制字符时,可以使用十六进制编辑器(而不是文本编辑器)在文件中创建消息,然后发送文件

实际上,二进制文件可能是手动生成二进制消息的最可靠方法。当外壳程序或应用程序截取某个代码作为其特殊指令(例如ctrl-C或ctrl-Z以中止程序)而不是将其视为数据时,手动键入控制代码可能会失败。
转义输入数据是避免这种情况的一种方法。
在透明(又称数据)模式下,电话调制解调器通过要求时间保护(即特定空闲时间)来分离和区分命令与数据,从而避免了此问题

我没有正确地表示十六进制值(我尝试使用0x00和00h表示字节,如00,但没有成功)

终端/PC键盘上的
Ctrl
键可用于生成ASCII控制字符(即字节值为
0x00
0x1F
的不可打印字符)。
Shift
键生成键的移位或大写字符(而不是其未移位或小写字符)一样,
Ctrl
键(带有字母或其他几个键)可以生成ASCII控制字符

典型的美国PC键盘可以通过键入ctrl-@,即按住
ctrl
Shift
键,然后键入
2
(因为“@”字符是美国PC键盘上
2
键的移位字符)来生成ASCII“NUL”字符

对于“SOH”或
0x01
键入ctrl-A(即
ctrl
+
A
键,
Shift
是不必要的),对于“STX”或
0x02
键入ctrl-