文章目录
一、先睹为快
(一)、烧写协调器(Coordinator)固件
首先打开SampleApp,切换项目为CoordinatorEB,在SampleApp.c中查找SampleApp_MessageMSGCB()函数并添加串口发送的函数(前提是已经配置好串口哦!)。
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
uint16 flashTime;
switch ( pkt->clusterId )
{
case SAMPLEAPP_PERIODIC_CLUSTERID:
HalUARTWrite(0,"I get data\n",11);//处理终端发送的周期广播
break;
case SAMPLEAPP_FLASH_CLUSTERID:
flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );
HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );
break;
}
}
(二)、烧写终端(Endpoint)固件
切换项目为EndDeviceEB,然后点击下载固件。
(三)、观察现象
将TTL转USB插到烧写协调器的板子的串口1上,会发现串口每5s打印一次“I get data”。
(四)、分析
这个过程分别为下面2个步骤。
- 注册事件,设置任务编号和发送间隔
- 设置周期性发送的内容
1、注册事件
在SampleApp.c里面的SampleApp_ProcessEvent()函数里面switch case里面可以看到有下面部分程序。
// Received whenever the device changes state in the network 当网络状态改变时,如未连网络变为连上网络时执行
case ZDO_STATE_CHANGE:
SampleApp_NwkState = (devStates_t)