我有一个 Arduino 通过串行端口将数据发送到我的 Ubuntu PC。这是有效的,因为我可以在 PC 上打开串行监视器并查看数据。 arduino每2秒发送一行数据。我想将输出重定向到 PC 上的文本文件。我试过:
(stty raw; cat > /home/me/received.txt) < /dev/ttyUSB2
它可以工作,但会将收到的每一行附加到文件中。我希望它每次都覆盖该文件。换句话说,文件中应该只包含一行最新接收的数据。
我认为 < 与 << 会解决这个问题,但显然我错过了一些东西。有人能指出我正确的方向吗?
答案1
我会尝试这样的事情:
(stty raw; while IFS= read -R line; do
printf '%s\n' "$line" > /home/me/received.txt; done) < /dev/ttyUSB2
答案2
另一种可能性是稍微滥用 awk:
( stty raw; awk -v f="outfile" '{print >f; close(f)}' )<tty