同步/顺序读/写至 tty

同步/顺序读/写至 tty

我正在尝试与位于 的设备进行通信/dev/ttyACM0。我需要编写一个命令,并在发送下一个命令之前等待响应(ACK)。

我发现了以下内容文章关于如何实现这一点,但我无法完全让它适合我的用例。我的猜测是我对收到的数据缺乏了解,并且它没有被新行终止。

我打开一个终端并使用 cat:

cat -v /dev/ttyACM0

然后我在另一个终端中打印:

printf 'S0100000FF\x0d' > /dev/ttyACM0

我在终端读取 tty 时得到的响应是^F.发送另一个命令会在同一行上打印另一个命令,例如该行现在显示^F^F,所以我猜测它不会被新行终止。

当使用上面链接的文章中的读取命令(在单独的终端中)时:

(read -n 60 -t 20 RESP < /dev/ttyACM0; echo $RESP)&
[1] 21028

然后来自写入终端的后续写入不会触发读取终端显示任何其他内容。

我还尝试通过简单地打印然后尝试读取 tty 来进行完全同步写入:

printf 'S0100000FF\x0d' > /dev/ttyACM0
cat -v /dev/ttyACM0
# Blank, nothing in file

我的问题归结为三个问题:

  1. 实际上代表什么^F?我知道^M是回车符,但我不知道这种类型的字符叫什么(例如以 为前缀的字符^)。
  2. 我以为 tty 只是一个文件,那么为什么在我的上一个示例中该文件是空的(互相打印和读取)
  3. 如何调整链接的文章以适合我的同步读/写脚本的目的?

相关内容