我现在手头上可以实现的功能是这样:通过手机发数据给蓝牙 蓝牙通过串口发数据给协调器 然后协调器广播出去数据,去控制相应的节点 那么我是通过判断某个IO口的高低电平来分辨不同的节点 那么 毕竟IO口的数量有限 这样也不是一个很好的方法 我也看了好多资料 说是可以通过短地址来实现,找了这么多资料 就是没有找到一个好的案例 希望 各位大虾么指一条明路 呢 !原理都理清楚 下面真的不知道该怎么着手!虔诚求教呢!
VV:
我可以这么理解么,你的协调器相当于是一个蓝牙和ZigBee的桥接,蓝牙完成与手机的通信,ZigBee完成对50个节点的控制,然后协调器中蓝牙和ZigBee芯片之间是通过UART通信的。对吗?
广播数据的地址是0xFFFF,所有节点都能收到广播数据,只要在通信范围内。
I/O口用来干嘛?相当于一个拨码的地址器吗?
能否把应用描述清楚点呢?
wang wang4:
回复 VV:
IO口的高低电平 也就是你说的通过插拔来分辨的 我现在是这么做的 通过这个来分辨是不同的节点 对我是通过串口来的 我现在是想实现通过读取各个节点的短地址来分辨是不同的节点 经过思考 我现在是这个想法:首先通过ZDP_EndDeviceAnnce() Device_annce 来知道他们的短地址 再存到一个数组里面 那么当我用手机发送类似0 1 2 3 4 5 6 7 这样的数据,然后接收到之后 把该数组中的第0 1 2 3 4 5 6 7 个数据取出来赋值给广播的目的地址 这样子可以实现么?求指导!
wang wang4:
回复 wang wang4:
还有一个就是通过NV来操作 好像NV里面有一个设备关联表 你有没有接触过?还是说您有更好的办法 现在大部分的教程都是这样:超过有10个节点的都是让这些终端节点发数据给协调器 让协调器来实现对他们的数据进行处理 很少有人讲一个协调器来控制这么多个节点 通过短地址的方式 很想要这方面的资源
VV:
回复 wang wang4:
你好!
你讲的方法可以实现你想要的功能,可以通过你的手机实现对节点的控制,但是这里我有几个疑问:
1)其实你可以把你的短地址直接存在手机里面,你存编号是1个字节,存短地址也就2个字节。当你的手机每次和蓝牙配对的时候,可以把目前网络的节点信息,发给手机。
2)你这样做虽然可以实现对节点控制,但是你无法做到一一对应,仅仅凭一个编号或者短地址,你能识别他的真实的设备含义或者物理位置吗?而且短地址是有可能变化的,随着入网的先后顺序不同,同一个设备对应的0-7的数字可能不同。
对于你后面的说的加入NV功能的,相对来说会好点,你可以事先按照一定的顺序入网,入网的时候有一个编号,而且短地址和编号都保存下来,这样可以一一对应。
我建议你可以考虑使用IEEE地址,因为这个地址对每一个设备来说都是唯一不变的,短地址是有可能发生变化的。在device anounce里面会有IEEE地址。
希望你能把你的应用描述详细点!
谢谢!