从linux命令行从串口读取


51

我有一个要使用linux命令行测试的串行端口设备。

我能够使用stty和echo将命令发送到串行端口,但是当设备响应时,我无法读取来自串行端口的内容。我在用

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

向设备发送命令。设备运行并在300毫秒内发送回响应。如何使用命令行将响应打印到控制台?

Answers:


56

与输出相同。例:

cat /dev/ttyS0

要么:

cat < /dev/ttyS0

第一个示例是一个打开串口并将其读取的内容中继到其stdout(您的控制台)的应用程序。第二个是将串行端口流量定向到您喜欢的任何应用程序的外壳程序;然后,这个特定的应用程序会将其中继stdinstdout

为了更好地了解流量,您可能希望使用十六进制转储:

od -x < /dev/ttyS0

socat stdio /dev/ttyS0
pstanton '17

我向正在使用的设备发送了命令。命令是:echo“ 1GAINS” | sudo tee / dev / ttyUSB0 ....作为响应,我得到无限的流重复同一条消息。有任何想法吗?设备本身应该回显我发送一次的命令,但是这就像我收到了奇怪的反馈一样。
user391339'3

我使用串行分析器验证了反馈不是“真实的”。设备仅回显命令一次,但是使用上述命令,我在终端输出上得到了疯狂的无休止的重复。
user391339'3

它适用于二进制数据吗?
ransh

@ransh-参见答案的十六进制转储部分。您最终将需要一个能理解或可以逆向工程该特定二进制数据的人员或工具。
Jirka Hanika,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.