5

我有一个甚高频收音机,它通过串行端口连续发送状态消息,我需要将我必须作为十六进制数据存储在文本文件中的消息

我尝试了如下所示的 hexdump 命令,并且我从 vhf 无线电获得的数据是正确的,但是这个脚本的问题是当我执行它时,它直到我按 ctrl-c 才结束

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

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

问候,

4

1 回答 1

8

问题已经解决了 :)

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

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

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

所以,谢谢你们的合作。我真的很感激。

于 2015-09-30T11:03:49.623 回答