gpt4 book ai didi

bash - 在 bash 中将十六进制字节发送到串行

转载 作者:行者123 更新时间:2023-11-29 09:43:53 29 4
gpt4 key购买 nike

我可以使用 将 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com