Coordinator.c文件内容如下(前文已经讲述过相关代码的含义,在此不做具体介绍):
上述代码大部分在上一实验中进行了讲解,下面只是着重讲解新增加的部分代码。
ZigBee协议栈中对串口的配置是使用一个结构体来实现的,该结构体为halUARTCfg_t,在此不必关心该结构体的具体定义形式,只需要对其功能有个了解。该结构体将串口初始化有关的参数集合在一起,如波特率、是否打开串口、是否使用流控等,用户只需要将各个参数初始化即可。
最后使用HalUARTOpen()函数对串口进行初始化。注意,该函数将halUARTCfg_t类型的结构体变量作为参数,因为halUARTCfg_t类型的结构体变量已经包含了串口初始化相关的参数,所以,将这些参数传递给HalUARTOpen()函数,HalUARTOpen()函数使用这些参数对串口进行初始化。
协调器编程时,需要修改一下数据处理函数GencricApp_MessageMSGCB(),具体修改内容见字体加粗部分。
第1行,数组buffer中存储的是回车换行符的ASCII码,主要是为了向串口发送一个回车换行符号。
第2行,定义了一个TEMPERATURE类型的变量temperature,用于存储接收到的数据,因为发送时使用的是TEMPERATURE类型的变量,所以接收时也使用该类型的变量,这样有利于数据的存储。(www.xing528.com)
第3行,使用osal memcpy()函数,将接收到的数据复制到temperature中,此时temperature中便存储了接收到的数据包。
第4行,向串口发送数据包即可。HalUARTWrit()函数的原型如下:
uint16 HalUARTWrite(uint8 port, uint8 *buf, uint16 len)
可见,第二个参数是uint8*类型的指针,而变量temperature是TEMPERATURE类型的,所以需要进行强制类型转换,即将(uint8*)&temperature作为第二个参数传递给HaIUARTWrite()函数。
第5行,向串口输出回车换行符。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。