4757|8

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:ZigBeeCC2530传感器组网采集终端串口接收丢包 [复制链接]

如题,我用两块开发板(一个作为协调器,一个作为终端节点)组网采集位移计信号,可是终端节点和位移计通过485进行通信时丢包严重,一直不知道问题出在哪里。现把我在协议中添加的代码附上,求大神指点,感激不尽!
终端初始化代码:
void GenericApp_Init( byte task_id )
{
  halUARTCfg_t uartConfig;          //串口
   
  GenericApp_TaskID = task_id;
  GenericApp_NwkState=DEV_INIT;
  GenericApp_TransID = 0;

  
  GenericApp_epDesc.endPoint = GENERICAPP_ENDPOINT;
  GenericApp_epDesc.task_id = &GenericApp_TaskID;
  GenericApp_epDesc.simpleDesc
            = (SimpleDescriptionFormat_t *)&GenericApp_SimpleDesc;
  
  GenericApp_epDesc.latencyReq = noLatencyReqs;
  afRegister( &GenericApp_epDesc );
// RegisterForKeys( GenericApp_TaskID );   //按钮事件的注册,要响应按钮事件,这个必须添加
  
  uartConfig.configured = TRUE;
  uartConfig.baudRate = HAL_UART_BR_9600 ; //波特率设置
  uartConfig.flowControl = FALSE;
  uartConfig.callBackFunc = rxCB;
  HalUARTOpen(0,&uartConfig);              //串口初始化
}
终端串口采集代码:

static void rxCB(uint8 port,uint8 event)
{
  
   HalUARTRead(0, &DATA,1);
   if(DATA==0xaa)
   {
     HalUARTRead(0, &DATA,1);
     if(DATA==0xaa)
     {
       SensorData[0]=SensorData[1]=0xaa;
       for(uint8 i=2;i<12;i++)
       {
         HalUARTRead(0, &DATA,1);
         SensorData[i]=DATA;
       }
        
       rec[0]=SensorData[7];
       rec[1]=SensorData[8];
       rec[2]=SensorData[9];

     }      
   }
       crc_function(SensorData,10,0xFFFF);
       sign[0]=crc_L;
       sign[1]=crc_H;
}
事件响应代码:
if(events&SEND_DATA_EVENT)
  {     
      
     
    if((SensorData[10]==sign[0])&&(SensorData[11]==sign[1]))
    {
      GenericApp_SendTheMessage();                               //发送
    }
    osal_start_timerEx(GenericApp_TaskID,SEND_DATA_EVENT,100); //响应事件
    return(events^SEND_DATA_EVENT);
  }
注:我的数据格式是一帧12个字节,帧头两个字节是0xaa,最后两个字节是校验!
此帖出自RF/无线论坛

最新回复

串口回调函数改成定时扫描会好很多  详情 回复 发表于 2016-1-28 10:20
点赞 关注(1)
 

回复
举报

613

帖子

2

TA的资源

纯净的硅(初级)

沙发
 
看看看看看看
此帖出自RF/无线论坛
个人签名我是一头搞电子的猪,猪是一种好色的动物,猪八戒就是代表.       
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

板凳
 
多长时间发送一次?你最好自己加一下握手协议防止丢包
此帖出自RF/无线论坛

点评

10ms发送一次,现象是每一帧有时是对的,有时是全乱的,我感觉就是一帧接收不完就又接收下一帧了  详情 回复 发表于 2014-7-18 10:07
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
wateras1 发表于 2014-7-17 18:46
多长时间发送一次?你最好自己加一下握手协议防止丢包

10ms发送一次,现象是每一帧有时是对的,有时是全乱的,我感觉就是一帧接收不完就又接收下一帧了
此帖出自RF/无线论坛

点评

那你可以通过延长发送时间间隔再试一下,这样就可以验证你的猜测了  详情 回复 发表于 2014-7-18 11:39
 
 
 

回复

1792

帖子

0

TA的资源

五彩晶圆(初级)

5
 
linkey550 发表于 2014-7-18 10:07
10ms发送一次,现象是每一帧有时是对的,有时是全乱的,我感觉就是一帧接收不完就又接收下一帧了

那你可以通过延长发送时间间隔再试一下,这样就可以验证你的猜测了
此帖出自RF/无线论坛
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

6
 
10ms一次太快了,没有做一些协议肯定丢包
此帖出自RF/无线论坛
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 
 

回复

526

帖子

0

TA的资源

五彩晶圆(中级)

7
 
楼主找到解决方法了吗
我也在用zigbee模块,路由发到协调的30字节,发送间隔从几十ms到几百ms,都有丢包现象
此帖出自RF/无线论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

8
 
485?
此帖出自RF/无线论坛
个人签名zigbee 开发交流群:531381719
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

9
 
串口回调函数改成定时扫描会好很多
此帖出自RF/无线论坛
个人签名天行健,君子以自强不息;地势坤,君子以厚德载物
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表