tinyos下TestNetwork實例的數據解析--CTP數據格式

在tinyos下apps/tests/TestNetWork實例,是應用CTP協議的一個例子,將該程序下到兩個節點後(注意要有一個節點的ID是0)開始工作。。打開java net.tinyos.tools.Listen -comm serial@/dev/ttyUSB0:telosb,監聽0號節點收到的數據,如下:

00 FF FF 00 00 09 00 16 21 00 06 00 01 00 01 00 31 00 FF FF 00 01 17 3F EE 00 01 00 14 00 01 06 EE 00 01 00 06 00 00 00 14 CA FE 00 00 07 00 06 00 FF FF 00 00 17 00 EE 00 00 00 00 00 00 0B EE 00 00 00 0B 00 00 00 00 CA FE 00 00 0C 00 0B 00 FF FF 00 00 09 00 16 20 00 0B 00 00 00 00 00 32 00 FF FF 00 00 09 00 16 50 00 00 00 00 00 00 00 33 00 FF FF 00 00 09 00 16 21 00 07 00 01 00 01 00 34 00 FF FF 00 01 17 3F EE 00 01 00 14 00 01 07 EE 00 01 00 07 00 00 00 14 CA FE 00 00 08 00 07 

那些較短的數據暫不知道是什麼,紅色字體較長的數據是想要發送和接收到的,但是跟TestNetwork.h裏的結構體

typedef nx_struct TestNetworkMsg {

  nx_am_addr_t source;

  nx_uint16_t seqno;

  nx_am_addr_t parent;

  nx_uint16_t metric;

  nx_uint16_t data;

  nx_uint8_t hopcount;

  nx_uint16_t sendCount;

  nx_uint16_t sendSuccessCount;

} TestNetworkMsg;

怎麼對照都對不上。因爲收到的數據,經串口上傳電腦顯示時,其實有三個部分組成:The serial header (tos/lib/Serial.h) -- 串口的幀頭The CTP data header (tos/lib/net/ctp/Ctp.h) -- CTP協議的幀頭The TestNetwork packet (apps/tests/TestNetwork/TestNetwork.h) -- 自己定義的結構體具體定義:typedef nx_struct serial_header {   nx_am_addr_t dest;   nx_am_addr_t src;   nx_uint8_t length;   nx_am_group_t group;   nx_am_id_t type;} serial_header_t;
typedef nx_struct {  nx_ctp_options_t    options;  nx_uint8_t          thl;  nx_uint16_t         etx;  nx_am_addr_t        origin;  nx_uint8_t          originSeqNo;  nx_collection_id_t  type;  nx_uint8_t (COUNT(0) data)[0];  //注意該數據不在數據串中顯示} ctp_data_header_t;
typedef nx_struct TestNetworkMsg {  nx_am_addr_t source;  nx_uint16_t seqno;  nx_am_addr_t parent;  nx_uint16_t metric;  nx_uint16_t data;  nx_uint8_t hopcount;  nx_uint16_t sendCount;  nx_uint16_t sendSuccessCount;} TestNetworkMsg;這下再來看下面提取出來的一組數據:

00 FF FF 00 01 17 3FEE 00 01 00 10 00 01 1F EE 00 01 00 1F 00 00 00 10 CA FE 00 00 00 00 00|

00 FF FF 00 00 17 00EE 00 00 00 00 00 00 20 EE 00 00 00 20 00 00 00 00 CA FE 00 00 00 00 00

00 FF FF 00 01 173F EE 00 01 00 10 00 01 20 EE 00 01 00 20 00 00 00 10 CA FE 00 00 00 00 00

00 FF FF 00 00 1700 EE 00 00 00 00 00 00 21 EE 00 00 00 21 00 00 00 00 CA FE 00 00 00 00 00

00 FF FF 00 01 173F EE 00 01 00 10 00 01 21 EE 00 01 00 21 00 00 00 10 CA FE 00 00 00 00 00

00 FF FF 00 00 1700 EE 00 00 00 00 00 00 22 EE 00 00 00 22 00 00 00 00 CA FE 00 00 00 00 00

00 FF FF 00 00 1700 EE 00 00 00 00 00 00 23 EE 00 00 00 23 00 00 00 00 CA FE 00 00 00 00 00

00 FF FF 00 01 173F EE 00 01 00 10 00 01 22 EE 00 01 00 22 00 00 00 10 CA FE 00 00 00 00 00

第一個字節的00用於同步,忽略,將其餘有顏色的對照上述三個結構體,就可以正確解析出信息,各個類似nx_am_addr_t變量所佔字節述,可以在相應頭文件或include的頭文件中找到

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章