我想使用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
希望这可以帮助!