小编the*_*avo的帖子

cat 是唯一可以从串行读取数据的可靠命令吗?

我有一个秤,可以通过串行端口连续发送数据,每秒 2 次。读取此数据的唯一可靠方法碰巧是cat命令。以下工作:

cat /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

但问题cat在于,由于它没有收到EOF,它会继续检索数据。我也试过headreadtail

head -1 /dev/ttyUSB0 | strings
Run Code Online (Sandbox Code Playgroud)

“几乎”每次都可以工作,但有时会显示旧数据,只有重新运行 cat 命令才能修复它(?)。管道后的字符串仅检索可打印数据。

read line < /dev/ttyUSB0 | echo $line
Run Code Online (Sandbox Code Playgroud)

现在不时检索数据,但大多数时候只显示一个空行。

tail -1 < /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

只是冻结,等待EOF,也许?

我的问题是我需要编写一个bash可以调用和“读取”/dev/ttyUSB0和检索数据的脚本。我要使用head. 但我想知道,cat如果有一种方法可以只捕获一行cat输出然后停止它,那么永远不会失败。

注:端口配置为 9600 波特,1 个起始位,8 个数据位,无奇偶校验,2 个停止位。要正确设置端口,这是命令:

sudo stty -F /dev/ttyUSB0 9600 -parity cs8 cstopb
Run Code Online (Sandbox Code Playgroud)

command-line tty serial-port cat head

5
推荐指数
1
解决办法
9642
查看次数

标签 统计

cat ×1

command-line ×1

head ×1

serial-port ×1

tty ×1