您的位置:首页 > 编程语言 > PHP开发

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的头文件中找到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: