bash - 使用 cat 和 echo 写入 /dev/ttyUSB0
问题描述
我使用 cat 和 echo 读写 USB 串行设备。
# shell session 1
echo "send to device" >/dev/ttyUSB0
# shell session 2
cat /dev/ttyUSB0
如果我手动执行此操作,则效果很好。运行脚本时,echo 命令通常会丢失字符串的前 1-4 个字符,而设备只接收其余字符
示例:设备通常会收到“nd to device”
有人可以给我一个提示,为什么会这样?
解决方案
严格来说,这绝对不是解决方案,但在有更好的解决方案之前,我会延迟并逐个字符地缓慢发送。这样就可以了。
每个字符超过 0.1 秒就会变得不稳定。
我正在使用 Windows 10 WSL1
command=""
command+="command one to deliver$"
command+="command two to deliver$"
command+="command three to deliver$"
command+="command four to deliver$"
local loopindex=$command
for ((i = 0; i < ${#loopindex}; i++)); do
if [[ ${loopindex:$i:1} = "$" ]]; then
echo "debug: newline"
echo "" >/dev/ttyUSB
else
echo "debug: char=${loopindex:$i:1}"
echo -n "${loopindex:$i:1}" >/dev/ttyUSB
fi
sleep 0.1
done
推荐阅读
- json - 在 Python 中使用 ISODate 解析 JSON 文件
- arrays - 自定义洗牌算法
- windows - 排除相对于项目根目录的目录
- python - TensorFlow Estimator BestExporter event_file_pattern 没有做任何事情
- php - 将 CSV 插入 MySQL
- javascript - Jquery UI,将文本拖放到文本编辑器内的光标位置
- javascript - 在 BiDi 实现中,阿拉伯字符在渲染过程中移动到不同的位置
- php - Magento Composer 源密钥应指定为
- php - 如何将一个数组与PHP中另一个数组的值进行比较
- java - 在netbeans中禁用背景面板