从 bash 脚本写入 Linux 串口

从 bash 脚本写入 Linux 串口

您好,我正在使用树莓派并尝试在 bash 脚本中写入 USB 串行端口。我发现 echo 是正确的方法。另外我想测试写入时端口是否繁忙。所以我正在使用这个脚本:

#! /bin/bash
if  echo -e "USB Command" >> /dev/ttyACM0 ; then
    echo "Success"
else
    echo "Fail"
fi

但问题是,即使没有权限访问该端口,它也总是成功。我是否使用了写入端口的最佳方式?如何判断写入是否成功?谢谢

编辑:这是输出:

ls -l /dev/ttyACM0

crw-rw---- 1 root dialout 166, 0 Dec 13 16:38 /dev/ttyACM0

答案1

检查你的脚本。我认为您想要做的是测试 echo 命令的返回代码。

例如,如果您只是从命令提示符运行 echo:

$ echo -e "USB Command" >> /dev/ttyACM0

结束然后立即检查返回码:

$ echo $?
0

您应该能够确定成功。至少成功地将数据放到tty上。

返回码 0 表示成功。其他任何内容都是错误,您可以通过谷歌搜索非零错误代码来了解它的含义。

手动让它工作,然后看看如何将其合并到您的脚本中。

答案2

有些东西对你来说是坏的:

echo Hello >> /dev/mem; echo $?
bash: /dev/mem: Permission denied
1

如果您正在谈论经典的 Unix 权限,并且您没有这些权限来访问设备,则该命令绝对会失败。

使用udev规则或echo 123 | sudo tee /dev/device解决它。

相关内容