解决方法和实际代码
对刚才提及的代码段,增加终端对返回的网络信息描述结构的查询。
在ZDApp.c中修改ZDApp_event_loop()函数,在调用ZDO_StartDevice(…)之前,亦即在终端设备扫描网络和请求入网前增加一段代码。当终端和协调器PAN ID不同,并且是再继续模式时,重新搜索是否有与PAN ID相同的协调器,而不请求人网。
这样就使得终端有协调器可挑选了。
关于如何修改PAN ID,给出代码如下(该代码为协调器和终端通用的。_NIB是和网络相关的全局结构体):
另外非协调器设备在初始化时,应该增加如下的代码(gu16RecBuffLen为自定义的16位整型数):
通过对扫描网络结果处理函数的分析,研究扫描网络和请求人网前的程序段。在程序段中增加一个对终端是否检索到特定PAN ID的协调器的逻辑变量。最后在程序中增加未检索到特定PAN ID的协调器时不请求入网的代码,以达到终端选择协调器入网的目的。经实验,在现场有数个不同PAN ID的协调器的情况下,终端设备只加入特定的协调器. |