2015-09-28 218 views
1

我有发送的状态消息时间可持续通过串口VHF频带的,我需要,我一定是在存储为十六进制的数据在一个文本文件十六进制

我的消息如下图所示,而我从甚高频电台获得了数据试图hexdump都命令是正确的,但是,当我执行它,它不会结束与该脚本的问题,直到我按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 

所以,请帮我弄清楚这一点。或者给我另一种方式来读取串口。

问候,

+0

所以你想脚本终止时?一旦有一定数量的字节到达,或? –

+0

是的,我希望一旦接收到一定数量的字节就终止脚本。收音机的状态信息约为45字节,但由于收音机正在不断发送,我想确保收到了一个完整的状态信息。所以可以说我需要接收100个字节然后终止脚本。 – Latifa

+0

对于获取所需数据的第一条命令,能否请您在问题中发布数据样本(比如说100个字节)? –

回答

3

问题就解决了:)

我试图通过设置-N以KB使用hexdump都命令和它的作品successfuly

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

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

所以,谢谢你们的合作。我真的appriciated。