zstack学习笔记3--点对点通信2
来源:互联网 发布:广西网络创业培训补贴 编辑:程序博客网 时间:2024/06/06 00:26
1 实验说明
在上篇文章中介绍的例程的功能很简单,当终端节点加入协调器创建的网络时,其网络状态将发生改变。当终端节点的网络状态改变时,终端节点发送一个数据(AF无线的方式)给协调器节点。协调器节点收到数据后,进行解析,如收到的数据为“LED”则将其板载的LED2置为闪烁状态。
接下来,我想对前面的这个程序进行修改,将其功能修改为:终端节点发送“LED”数据的时间点由原来的终端节点的网络状态改变时发送变为由按键控制。比如当1号按键按下时,终端节点执行GenericApp_SendTheMessage()函数,发送“LED”数据包(以AF无线的方式)。协调器的功能不变,协调器节点收到数据后,进行解析,如收到的数据为“LED”则将其板载的LED2置为闪烁状态。
2 终端节点代码的修改
uint16 GenericApp_ProcessEvent( uint8 task_id, uint16 events ){ afIncomingMSGPacket_t *MSGpkt; if ( events & SYS_EVENT_MSG ) { MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID ); while ( MSGpkt ) { switch ( MSGpkt->hdr.event ) { case ZDO_STATE_CHANGE: GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status); if (GenericApp_NwkState == DEV_END_DEVICE) { //GenericApp_SendTheMessage(); } break; case KEY_CHANGE: HalLedBlink(HAL_LED_3,0,50,1000); GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break; default: break; } // Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); // Next MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID ); } // return unprocessed events return (events ^ SYS_EVENT_MSG); }事件处理函数中在网络状态发生变化时会进入case ZDO_STATE_CHANGE:,但此时我们注释掉调用发送数据包的函数。而在有按键按下时会进入case KEY_CHANGE:,此时调用按键处理函数GenericApp_HandleKeys()。按键处理函数的代码为:
static void GenericApp_HandleKeys( uint8 shift, uint8 keys ){ // Shift is used to make each button/switch dual purpose. if ( shift ) { } else { if ( keys & HAL_KEY_SW_1 ) { HalLedSet ( HAL_LED_1, HAL_LED_MODE_FLASH); GenericApp_SendTheMessage(); } }}
By:霜月孤鸟
2013.1.2
0 0
- zstack学习笔记3--点对点通信2
- zstack学习笔记2--点对点通信1
- MPI学习笔记——点对点通信
- MPI学习-点对点通信
- MPI学习-点对点通信
- ZStack间接panid通信设置(将zigbee改装成点对点通信的方法)
- ZStack间接panid通信设置(将zigbee改装成点对点通信的方法)
- Zstack杂乱笔记3
- Zstack杂乱笔记2
- mpi学习日志(2):mpi4py与点对点通信
- 点对点语音通信程序笔记链接
- 《Pro Spring》学习笔记之Spring+ActiveMQ实现Queue通信(点对点)
- 点对点通信
- 从零开始学习Zstack之3
- 从零开始学习Zstack之2
- zigbee学习笔记4----初次接触zstack
- zigbee学习笔记4----初次接触zstack
- 1-2 实验2 点对点通信
- Swift-免费短信验证码实现及动态倒计时
- 程序中的黑白名单控制
- Hdu 2116
- 秒杀多线程第六篇 经典线程同步 事件Event
- Selenium之Slider
- zstack学习笔记3--点对点通信2
- 简单的自定义圆形进度条ProgressBar
- Linux的yum install 不能用并行的方法去运行
- 云计算与虚拟化概述
- react-native 保存图片到本地
- 代码检测vc2013环境是否已经安装了
- 关于开源框架SuperRecyclerView瀑布流卡顿问题
- java设计模式
- 从头认识java-15.7 Map(5)-介绍HashMap的工作原理-Key变了,能不能get出原来的value?(偶尔作为面试题)