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的头文件中找到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值