您好,我正在使用树莓派并尝试在 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
解决它。