为什么 cat /dev/ttyUSB0 会产生无休止的重复?

为什么 cat /dev/ttyUSB0 会产生无休止的重复?

我想使用cat /dev/ttyUSB0或类似的东西来监视通过我的 USB 串行适配器发生的串行通信。

我成功地能够使用 TX 线将串行命令从 Linux 发送到串行设备echo "blahblah" | sudo tee /dev/ttyUSB0,但是我想查看串行设备返回的输出。预期的回复通常是一条回显消息,但有时它是一条更长的消息。

cat /dev/ttyUSB0当我在单独的终端窗口中打开时,一切都很安静,直到我执行echo "blahblah" | sudo tee /dev/ttyUSB0,此时我forever在运行 cat 的终端窗口中重复出现“blahblah”(以 '\r\n' 位终止)。拔下 RX 线会使其停止,重新插入也不会重新启动它。

我确信这种重复是人为造成的,因为我使用了连接到来自串行设备的 RX 输出的串行逻辑分析仪,并且只看到单身的回显命令,而不是无限的回显序列。

echo "blahblah" > /dev/ttyUSB0仅供参考,我使用发送初始串行数据 得到了相同的行为。

答案1

我知道这已经有一百万年的历史了,但我今天遇到了这个问题。基本上,如果我用“屏幕”连接到串行设备然后分离,我可以回显到设备中并获得输出,而cat无需线路垃圾邮件。 Screen 正在将设置传递给 tty,但我想要一种以编程方式执行此操作的方法。大声喊“meuh”,因为它为我指明了正确的方向。就我而言,使用“stty”,我事先发出了以下命令:

stty -echo -opost -F /dev/ttyUSB0

' -echo' 停止垃圾邮件换行符, ' -opost' 停止我的情况下不需要的单个换行符。然后我可以继续进行测试,在一个终端窗口中运行以下命令:

# cat /dev/ttyUSB0

然后我在另一个终端窗口中运行以下命令:

# echo "This is a test - $(date)" > /dev/ttyUSB0

我在第一个终端窗口中收到了预期的输出:

# cat /dev/ttyUSB0 
This is a test - Mon 21 Feb 2022 11:27:40 AEDT

希望这可以帮助!

相关内容