• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

cc2530 Zstack周期性发送时间如何设置5分钟

zhczlzhang 2021-03-30 浏览量:960

在使用cc2530 zigbee点播上传18b20温度数据时,程序默认上传时间间隔是3S,修改预编译 SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT 可以改变数据发送间隔

  if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
  {
    // Send the periodic message
    //SampleApp_SendPeriodicMessage();
    SampleApp_Send_P2P_Message();

    // Setup to send message again in normal period (+ a little jitter)
    osal_start_timerEx( SampleApp_TaskID SAMPLEAPP_SEND_PERIODIC_MSG_EVT
        (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) );

    // return unprocessed events
    return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
  }
osal_start_timerEx 函数里面跳转修改SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT最大值为65000,可以正常隔65S发送数据。

因为uint8 osal_start_timerEx( uint8 taskID uint16 event_id uint16 timeout_value )中所有的形参都是uint16 也就是typedef unsigned short  uint16;

unsigned short范围是0-65535.

此时我想隔5分钟甚至60分钟去发送数据,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT可以填很多,但是osal_start_timerEx第3个形参最大值是65535,所有这个5分钟或60分钟要怎么调呢?

我本来是想按照8051中断时间嵌套循环的来改程序,但是我是初次接触zigbee网络,对Zstack协议栈实在不清楚该怎么实现长时间发送数据。

目前唯一能做的就是改变osal_start_timerEx形参的定义改成unsigned long类型,这样可以实现unsigned long 0~4294967295也就是大概4294967S发送间隔,理论上是这样,实际我只测试5分钟发送没问题。

TEMP:1C85[2021-03-30 01:12:16.224]
TEMP:1C22[2021-03-30 01:17:16.395]
TEMP:1C22[2021-03-30 01:22:16.595]

除此之外还有其它方法吗?求大家指点。

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT是超时时间,最大就是65535.周期性发送应该是加定时器的,定时器发送位标志重复置位的,然后主函数中检测到标志就发送数据。
    • 发布于 2021-03-31
    • 举报
    • 评论 1
    • 0
    • 0
zhczlzhang 回复了 耳根的耳根:我查看好几家关于这方面的说明,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT是周期性发送时间间隔,关于这方面的系统性概述没有人讲解有点难。 回复

其他答案 数量:0

相关问题

问题达人换一批

cc2530 Zstack周期性发送时间如何设置5分钟