tinyos下TestNetwork实例的数据解析--CTP数据格式
2012-10-19 18:38
351 查看
在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的头文件中找到
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的头文件中找到
相关文章推荐
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- JS解析后台返回的JSON格式数据实例
- javascript解析ajax返回的xml和json格式数据实例详解
- jQuery解析json格式数据简单实例
- jQuery解析json格式数据简单实例
- 实例解析嵌套的JSON格式数据
- asp.net和Jquery中详细解析json数据格式!(有实例)
- Android中解析JSON格式数据常见方法合集
- android 解析json数据格式
- java解析json格式的数据
- 解析并打印Excel格式xml文档数据
- 解析PHP 使用curl提交json格式数据
- java 解析json格式数据
- 实例解析Java的Jackson库中的数据绑定
- Gson解析JSON格式数据
- GPS数据格式解析
- Java解析JSON格式数据二
- Android 数据格式解析对象 JSON 用法
- 从页面接收json格式的数据,在java类里面进行解析
- 一个JSON 实例: jQuery 解析JSON数据