码迷,mamicode.com
首页 > 其他好文 > 详细

TinyOS系列——服务器远程指令多跳实现过程中问题及解决方案

时间:2014-07-19 18:23:30      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   os   数据   

开发经验:

1、嵌入式程序,调试可能比较麻烦,一定要有耐心,戒骄戒躁

2、开发之前一定要理清自己的逻辑框架,不然只能越写越乱

3、代码开发与测试迭代进行,一步一步,如果代码量过大,很难跟踪找到问题出错的点

 

开发步骤:

模块开发必须理清自己的思路以及逻辑,学会分步进行:

1、测试节点C[i]是否能够正常接收、发送数据,全部需要测试一遍,确定节点能否正常使用,否则后续工作无法正常进行
2、测试发送模块A向基站B广播消息后,基站B能否正常接收
3、修改发送模块与节点程序,测试发送模块A->节点c[0]->基站B(ACK)是否正常 (关键步骤
4、修改c[i],测试发送模块A->c[0]->c[1]->c[2]->c[3]->c[4],c[4]广播ACK到基站B是否正常
5、模块任务完成

 

开发过程中遇见的问题以及解决方案:

1、问题一,越界问题:cc2420发送模块,一条消息的最大长度为26字节(带控制信息),所以在data部分,要控制好包的长度,否则无法消息无法正常传递

 1 typedef nx_struct PCUartCmd {
 2     nx_uint8_t nodeid;        
 3     nx_uint16_t data;
 4             
 5     nx_uint8_t relay1;
 6     nx_uint8_t relay2;
 7     nx_uint8_t relay3;
 8     nx_uint8_t relay4;
 9     nx_uint8_t relay5;
10     
11     nx_uint8_t  yuliu;
12 } PCUartCmd;
13 
14 typedef nx_struct PCUartCmd_ack{
15     nx_uint8_t nodeid;
16     
17     nx_uint8_t type;
18     
19     nx_uint8_t relay1;
20     nx_uint8_t relay2;
21     nx_uint8_t relay3;
22     nx_uint8_t relay4;
23     nx_uint8_t relay5;
24     
25     nx_uint8_t  yuliu;
26 }PCUartCmd_ack;

  解决方案:

  1)尽量减少字节的使用:比如有5个relay值来记录中间路由,完全可以将hop去掉,通过优化算法来减少字节数使用

  2)如果ACK只是起确定消息是否正常到达的作用,那么ACK包完全没有必要带data值

2、问题二,如果struct中最后没有设定额外的字节,在串口调试助手中data的最后一个字节无法正常显示

  解决方案:

  1)每个struct设计,最后都要有yuliu值,否则在串口调试助手中无法正常显示data的最后一个字节,会跟控制信息出现冗余

却分

3、问题三,程序冗长

  解决方案:

  1)公共部分提取,构造函数实现

 1 void SendCmdMsg(int nodeId,int cmd,int relay1,int relay2,int relay3,int relay4,int relay5,int yuliu)
 2 {
 3 
 4     PCUartCmd* cmdpkt = (PCUartCmd*)(call Packet.getPayload(&pkt, sizeof(PCUartCmd)));
 5     
 6     cmdpkt->nodeid = nodeId;
 7     cmdpkt->data = cmd;
 8     
 9     cmdpkt->relay1 = relay1;
10     cmdpkt->relay2 = relay2;
11     cmdpkt->relay3 = relay3;
12     cmdpkt->relay4 = relay4;
13     cmdpkt->relay5 = relay5;
14     cmdpkt->yuliu = yuliu;
15     call AMSend.send(nodeId, &pkt, sizeof(PCUartCmd));
16 
17 }

TinyOS系列——服务器远程指令多跳实现过程中问题及解决方案,布布扣,bubuko.com

TinyOS系列——服务器远程指令多跳实现过程中问题及解决方案

标签:style   blog   color   使用   os   数据   

原文地址:http://www.cnblogs.com/zlcxbb/p/3854972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!