ZigBee协议栈如何添加多个终端节点,协调器根据什么判断哪个终端设备发送来的信息?是根据网络地址吗?
答案:3 悬赏:40
解决时间 2021-02-07 09:07
- 提问者网友:樱花树下最美的约定
- 2021-02-07 00:33
ZigBee协议栈如何添加多个终端节点,协调器根据什么判断哪个终端设备发送来的信息?是根据网络地址吗?
最佳答案
- 二级知识专家网友:甜野猫
- 2021-02-07 01:07
协调器会为每个节点分配网络短地址,节点就是依据网络地址来发送数据的。
全部回答
- 1楼网友:无字情书
- 2021-02-07 03:04
您好,“终端设备绑定请求”这一命名有误导的嫌疑。这一请求不仅仅适用于终端设备,而且适用于对希望在协调器上绑定的两个设备中匹配的簇实施绑定。一旦这个函数被调用,将假设reflector这一编译选项在所有希望使用这一服务的节点中都已经打开。具体操作如下:
(1) (bind req) device 1 --> coordinator <--- device 2 (bind req)
协调器首先找出包含在绑定请求中的簇,然后对比每一设备的ieee地址,如果簇可以匹配,而且这几个设备没有已经存在的绑定表,那他将发送一个绑定应答给每一个设备。
(2) device 1 <--- nwk addr req ------ coordinator ------- nwk addr req ----> device 2
(3) device 1 ----> nwk addr rsp ---> coordinator <---- nwk addr rsp <--- device 2
(4) device 1 <----- bind rsp <----- coordinator -----> bind rsp ----> device 2
在《z-stack编程指南--绑定》一章中有下面的一段对终端绑定请求的描述。
该绑定机制在一个选定的设备上使用一个按键动作或类似动作在一个定制的超时周期内进行的绑定
行为。在定制的超时周期内在协调器上收集该终端设备绑定请求信息,基于配置文件标识符与簇标识
符的一致性将产生一个绑定表条目。
在用户指南[src 与 slc]中的应用范例是一些终端设备绑定执行的例子。(按每个设备上 sw2 开关) 。 你将注意到所有的应用范例都有一个处理按键事件的函数(如,在 transmitapp.c 中的
transmitapp_handlekeys( ) ) 。这个函数调用 zdapp_sendenddevicebindreq( )[在 zdapp.c 文件中],
它可以收集所有应用端点的信息,并且调用 zdp_enddevicebindreq( ) [在 zdprofile.c 文件中]来发送
信息到协调器中。
协调器将接收[zdp_incomingdata( ),在 zdprofile.c 中]和分析[zdo_processenddevicebindreq( ),在
zdobject.c 中]这个信息,并且调用 zdapp_enddevicebindreqcb( )[在 zdapp.c 中]来调用
zdo_doenddevicebind( )[在 zdobject.c]来处理该请求。
当协调器接收到两个匹配终端设备绑定请求时,将通过调用 nwk_addbindentry( )函数来创建一个绑定
记录。如果已存在这两个匹配终端设备请求的绑定记录,则协调器将调用 nwk_removebindingentry( )
从绑定表中移除该条目。然后,一条响应信息将发送到这两个“终端设备” 。
- 2楼网友:荒唐后生
- 2021-02-07 02:07
首先,如果他们可以训练协调人,为什么连路线?
您的问题,从网络层协议解决,但ZigBee协议栈具有设计良好的网络层协议,可以重写算法来实现更加复杂。
收到来自终端节点,所有这些都是RFD忽略的数据无论是协调员;
或将被忽略,从网络终端节点请求的协调员收到
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |