从串口读取并以十六进制存储

时间:2015-09-28 12:13:26

标签: bash shell serial-port hexdump stty

我有一个甚高频无线电通过串口连续发送状态信息,我需要将这些信息作为十六进制数据存储在文本文件中

我尝试了如下所示的hexdump命令,而且我从vhf收音机得到的数据是正确的,但是这个脚本的问题是,当我执行它时,它不会结束,直到我按下ctrl-c < / p>

d -A n -t x1 -w128 /dev/ttyS0 > file.txt

所以我尝试了另一个命令,它是一个读命令,如下所示:

COUNTER=0
while [ $COUNTER -lt 10 ]; do
read -r -t1 -N128 DATA < /dev/ttyS0 
echo $DATA >> file1.txt
od -A n -t x1 -w128 file1.txt >> file2.txt
let COUNTER=COUNTER+1
done

但是存储在file2.txt中的数据不正确。

我从收音机收到的信息不是按照无线电协议文件解释的格式。所以当我说数据不正确时,我的意思是该消息无法解释(随机收到)

请注意,我在执行两个脚本之前设置了串口,如下所示:

stty -g /dev/ttyS0 raw
stty -F /dev/ttyS0 9600

所以,请帮我解决这个问题。或者给了我另一种从串口读取的方法。

此致

1 个答案:

答案 0 :(得分:5)

问题解决了:)

我尝试通过将-N设置为KB来使用hexdump命令,并且它成功运行

它从串口读取直到1000字节并停止

od -A n -N KB -t x1 -w128 /dev/ttyS0 > /tmp/filename.txt

所以,谢谢你们的合作。我非常感兴趣。