Pav*_*n K 2 bash command-line serial-port serial-communication
我能够将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
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从文件循环读取测试中执行此操作时,它不想工作
#!/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
Run Code Online (Sandbox Code Playgroud)
我像这样调用脚本
./sendData.sh file.txt
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
试试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
Run Code Online (Sandbox Code Playgroud)
有人能指出我缺少什么.
问题是read默认情况下解释转义序列,有效地删除反斜杠.使您的文件包含例如\x01\x02\x03并使用read -r:
while read -r line
do
echo -en "$line" > /dev/ttyUSB0
done < "$1"
Run Code Online (Sandbox Code Playgroud)