2015-09-28 255 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。