理论教育 物联网组网过程与关键API函数

物联网组网过程与关键API函数

时间:2023-10-27 理论教育 版权反馈
【摘要】:信道设置在f8wConfig.cfg文件中,协议栈默认使用了2.4GHz第一个信道,为了避免与其他直接使用ZStack协议栈的网络出现在同一信道上,本设计中修改为第20个信道,配置文件中改为-DDEFAULT_CHANLIST=0x00100000//20-0x14。目标节点应用会收到AF_INCOMING_MSG_CMD消息,并从消息中得到发送的数据。

物联网组网过程与关键API函数

1.自动建网

在对ZStack协议栈的学习过程中,发现其所给的sample工程里自定义应用并没有任何建立、加入网络的函数调用,协议栈会自动完成加入网络的操作。随后经过对相关资料、官方文档的查阅,发现协议栈实现中自动地在系统应用ZDApp中进行了网络相关的操作。在其应用初始化函数ZDApp_Init里,通过一系列的函数调用,在对节点类型进行判断后,最终通过ZStack网络层提供的API函数去进行建网和入网的操作,如果是协调器节点,则会调用NLME_NetworkFormationRequest函数进行网络的建立,路由器节点、终端节点则会调用NLME_OrphanJoinRequest函数进行网络的加入。当这些函数执行成功后,则会发给系统中所有应用ZDO_STATE_CHANGE消息,表示网络状态的改变。自定义的监测应用中,也是在接收到此消息后,表明加入网络成功,然后开始真正的监测方面的执行流程。

在协议栈配置文件中的一些参数,会影响这个自动加入流程。主要如下:

1)信道设置。2.4GHz上有16个信道可以选择使用,节点只有都处于一个信道上才能互相收发数据。在ZStack工程里Tools文件夹下,有许多配置文件。信道设置在f8wConfig.cfg文件中,协议栈默认使用了2.4GHz第一个信道(所有信道中的第11个),为了避免与其他直接使用ZStack协议栈的网络出现在同一信道上,本设计中修改为第20个信道,配置文件中改为-DDEFAULT_CHANLIST=0x00100000//20-0x14。

2)PANid。网络id设置,同一个信道上若有不同网络,则还需要靠网络号,即PANid来区分。ZStack系统中默认设置网络号为0xffff,表示协调器节点会随机选择一个网络号来建立网络,同时其他节点也会在所选信道上所有的网络中选择信号最好的一个加入。本设计中将网络号改为一个固定的数0x0011,以保证所有节点都加入同一个网络。设置更改也在f8wConfig.cfg文件中,-DZDAPP_CONFIG_PAN_ID=0x0011。

2.关键API函数

ZStack协议栈和OSAL系统提供了许多API函数,以实现各功能。除了前面介绍过的函数外,还经常到的一些关键的API函数如下:(www.daowen.com)

(1)AF_DataRequest函数

该函数用于发送网络数据,需要提供的是目标节点的网络地址,以及终端号,即目标节点上的某个应用,也可以实现广播发送和组播发送。目标节点应用会收到AF_INCOMING_MSG_CMD消息,并从消息中得到发送的数据。应用中利用此函数实现数据的发送。其函数原型与参数意义如下:

(2)osal_start_timerEx函数

该函数是用于实现定时器的函数。在OSAL运行环境下,要想实现自定义应用的定时操作,只能靠定时的发送给该应用一个消息,从而OSAL检测到该消息后调用处理函数,实现处理函数的定时执行,这就是该函数的功能。其函数原型如下所示:

返回值为Zsucces表示成功或者NO_TIMER_AVAILABLE表示启动失败。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈