如何在/ dev / ttyACM0设备文件上执行echo命令后读取响应?

时间:2019-07-15 11:21:24

标签: arduino linux-kernel serial-port

我正在使用USB-RLY08-B中继设备(datasheet)。我可以使用以下命令来打开/关闭继电器开关:

echo -n -e '\x74' > /dev/ttyACM0

但是要获取继电器状态,我需要将十六进制5B代码传递给继电器。问题是我无法弄清楚如何在echo命令后读回响应。

我尝试了

read X < /dev/ttyACM0

但它挂了。

1 个答案:

答案 0 :(得分:0)

read等待从文件或设备中读取整行:

来自the MAN page

  

读取-从标准输入中读取一行并将其拆分为字段。

由于设备仅返回一个字节,read挂起,等待换行。

如果您使用-n-N

read -n 1 X < /dev/ttyACM0

然后read将读取第一个字节,然后退出。

-n-N的行为略有不同,但这可能与您的应用程序无关:

  -n nchars return after reading NCHARS characters rather than waiting
        for a newline, but honor a delimiter if fewer than NCHARS
        characters are read before the delimiter
  -N nchars return only after reading exactly NCHARS characters, unless
        EOF is encountered or read times out, ignoring any delimiter