我可以使用 将 hec 字节发送到串口
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb -echo
echo -en '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > /dev/ttyUSB0
但是当我尝试在从文件读取测试的循环中执行此操作时,它不想工作
#!/bin/bash
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb -echo
while read line
do
name=$line
echo -en $name | tr -d ' ' > /dev/ttyUSB0
sleep 0.04
done < $1
我这样调用脚本
./sendData.sh file.txt
file.txt 有一些像这样的简单内容
尝试 1
\\ xFF\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00\\ x00
尝试 2
\xFF\xF2\x00\xFF\xF2\x00\xFF\xF2\x00\xFF\xF2\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
谁能指出我缺少的东西。
最佳答案
问题是 read
默认解释转义序列,有效地删除了反斜杠。让你的文件包含例如\x01\x02\x03
并使用 read -r
:
while read -r line
do
echo -en "$line" > /dev/ttyUSB0
done < "$1"
关于bash - 在 bash 中将十六进制字节发送到串行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22511225/