SOGO論壇

標題: 一串串列的16進制資料接收進來 要如何分解應用? [列印本頁]

作者: a37583758    時間: 2010-5-13 19:47:57     標題: 一串串列的16進制資料接收進來 要如何分解應用?

一串串列的16進制資料接收進來 要如何分解應用?

問題是這樣...  如...一串資料 如果接收進來資料狀態是一大串...
起始碼是訊號檢查碼 在這後面的資料都是需要用到的

如: 一串資料(0x01是檢查碼 後面的碼都是要用到的)  
0x01,0x03,0x05,0xff,0xa0,0x6a,0xd0,0xcd,0xcc

一串這樣的碼接收到 一個預設變數
要怎樣塞到陣列 然後切割應用?

像是...我宣告一個陣列 static  char Digital_Data[]={0,0,0,0,0,0,0,0,0};

要怎樣才能把訊號塞到 我欲設好的陣列預設位置?
作者: edvx    時間: 2010-5-13 21:25:11

0x01,0x03,0x05,0xff,0xa0,0x6a,0xd0,0xcd,0xcc

一串這樣的碼接收到 一個預設變數
要怎樣塞到陣列 然後切割應用?

像是...我宣告一個陣列 static  char Digital_Data[]={0,0,0,0,0,0,0,0,0};


Digital_Data[x]=y;
Digital_Data是陣列
x是儲存的位置
y是預設變數
作者: a37583758    時間: 2010-6-20 18:28:42     標題: 回覆 #2 edvx 的帖子

如果我想要用DEV C++
用C語言模擬 一串資料 分別輸入後

再從陣列分別取出 所接收到的值  依序輸出  該怎麼做呢?

我比較頭痛的是 塞資料到陣列 的這部分...
作者: 不良歐吉桑    時間: 2010-6-21 10:14:47

你這是一維陣列啊,位址(或叫做 pointer)就是 x ,把 x 放到一個迴圈裏去,每塞入一個資料以後加一就好啦。
作者: blackhole    時間: 2010-6-21 17:32:35

你應該是想說要怎麼把這一大串東西切開

然後塞近陣列裡面吧?
0x01,0x03,0x05,0xff,...變成
x[0]=0x01   
x[1]=0x03
x[2]=0x05
這樣吧@@?
如果資料像你打的這樣
中間有很多逗點個開的話
可以使用strtok()這個函數(google一下)

如果沒有隔開
就使用strcmp找到資料串每個資料的起始位置
然後去作平移就好了
作者: a37583758    時間: 2010-6-21 21:42:57     標題: 回覆 #5 blackhole 的帖子

恩... 正如你所說的 沒錯~!!

strtok() 的話 沒用過= ="

在DEV C++編譯器應該是能用

但是用在 8051 MCU 的 KeilC 不知道能不能用= =?

還是我在標頭檔 多加上Stdio.h看看好ㄌ (雖然我不知道他是在哪個標頭檔裡...)

我目的是要模擬GPS 發送一串資料 裡面一堆16進制 是ASCII碼  然後轉成字元~

因為GPS模組 一個就要1000~2000元台幣...

我用軟體模擬的  也能大概模擬RS232 串列傳輸 的解碼部分
我主要是不懂怎麼接收資料到陣列 然後擷取資料 解碼應用= ="
作者: chiasa    時間: 2010-6-28 01:11:29

GPS訊號是有標準格式的, NMEA
網路上也有一堆解NEMA的code 可以直接抓下來用

要模擬應該是要模擬真正的GPS資料,這樣比較有說服力
作者: a37583758    時間: 2010-6-28 12:11:48     標題: 回覆 #7 chiasa 的帖子

原來有現成的Code... 感恩 感恩~!!

自己做發射 跟接收  也很威阿.... 通通都自己搞 也很有說服力@@"
想當初 自己寫MCU 發射摩斯電碼功能   另一端要寫解碼 解成一般人能看得懂的值  也都自己搞....




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM