浅析ZigBee的应用层开发之终端结点
来源:互联网 发布:淘宝鹊桥到期 编辑:程序博客网 时间:2024/05/16 17:06
有关Zigbee知识见此链接
终端节点在zigbee的开发中,主要有两个功能
<1>将采集到的信息发送给协调器(coordinator)
<2>接受协调器发送过来的命令,并执行
以sample app为例,简单的广播方式传送信息为例
当运行程序,操作系统启动,注册好应用层ID后,开始任务轮询。
<1>
在函数 uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )中会完成应用层调用函数的所有处理函数
并且设置广播传送的时间间隔
#define SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT 2000 //两秒广播一次
并通过函数启动循环广播
if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) { // Send the periodic message SampleApp_SendPeriodicMessage(); // 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); }
因此可以以相同的方式,给终端route开启循环采集数据
void SampleApp_SendPeriodicMessage( void ) { //采集信息process if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, SAMPLEAPP_PERIODIC_CLUSTERID, length, array[], &SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) { } else { // Error occurred in request to send. }}
此时协调器则会收到终端采集到的信息,2秒更新一次
<2>当协调器通过广播的形式发送来命令时,终端只要判定是不是给自己的命令,是则执行,否则跳过
接受到信息则会调用该处理函数
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ){ switch ( pkt->clusterId ) //判断标识 { case SAMPLEAPP_PERIODIC_CLUSTERID: //与上面的那个发送标识对应 if(pkt->cmd.Data[0]==0) //判断发来的命令 { LED=0; //是发给我的,灯泡亮 } break;
......................................................
此时已经可以开发基本的小项目了,比如说多个传感器采集农田的信息,发送给协调器,协调器通过网络把数据传到你的网页上,在线观看。还可以把命令反馈回去,控制终端结点上的继电器等等改善环境。
31 0
- 浅析ZigBee的应用层开发之终端结点
- 浅析ZigBee的应用层开发之终端结点
- 应用层通信协议开发浅析
- 应用层通信协议开发浅析
- 应用层通信协议开发浅析
- CC2530的ZigBee应用层加入串口
- zigbee无线传播的例子 应用层
- zigbee网关 CC2530网关开发板之终端开发板可用的IO
- 动态调节ZigBee终端节点POLL频率的应用
- Zigbee的HAL层
- 如何在zigbee的应用层修改PANID?
- Zigbee协议栈之OS层的API
- 有关Zigbee的应用
- ZIGBEE的小应用
- Zigbee协议与开发-APL层解析
- Zigbee协议与开发-APL层解析
- zigbee终端无法重连的问题解决
- Android应用开发之数据加密浅析
- RageSpline 2d卡通插件的基本操作
- UVa 11008 Antimatter Ray Clearcutting / 状态压缩DP
- erlang变量赋值出错exception error: no match of right hand side value
- 九度oj-1365:贝多芬第九交响曲
- 在loadrunner中调用QTP脚本
- 浅析ZigBee的应用层开发之终端结点
- vmware虚拟机怎样让linux(centos6.4)
- 大气的人,用心做人,用爱做事
- X/Open DTP——分布式事务模型
- Android HttpClient//http://blog.csdn.net/litton_van/article/details/6544086
- ALAsset和ALAssetRepresentation详解
- 史上最全的中国式鬼话,你肯定中枪90%以上
- 设计模式之备忘录模式
- 黑马程序员--java基础--接口