网蜂模块协议栈无线点灯
还有就是两个 LED灯的问题,怎么让它初始化不亮,改了很多地方还是不行
HalLedInit()函数控制初始状态
终端发给协调器指令的地址怎么设置的,函数都不贴出来怎么让人家帮你分析
灯的问题,因为网蜂的电平刚好跟TI公司的相反,所以相应地方改了,但是LED2灭了,LED1还是亮
采用点播的方式,按键产生任务:
case KEY_CHANGE:
SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
break;
下一步:
if ( keys & HAL_KEY_SW_6 )
{
SampleApp_SendPeriodicMessage();
}
下一步:
接下来是接收之后的处理:
case AF_INCOMING_MSG_CMD:
SampleApp_MessageMSGCB( MSGpkt );
break;
函数SampleApp_MessageMSGCB( MSGpkt );里面执行这一步:
case SAMPLEAPP_PTP_CLUSTERID:
HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);
整个流程就是这样,有什么问题吗?
那两个灯同时还做错误指示功能。你可以在那里设个断点调试看看能不能关掉,网蜂的例程只能参考,很不规范
SampleApp_PTP_DstAddr怎么配置
//Point to point
SampleApp_PTP_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
SampleApp_PTP_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_PTP_DstAddr.addr.shortAddr = 0x0000;
你这个是终端向协调器的点播地址,反过来发送的话SampleApp_PTP_DstAddr.addr.shortAddr = 0x0000;要把这个改为终端的短地址。
要两个都可以发送指令给对方呢?点播行不行
行,定义两个地址,或者动态修改点播地址描述的短地址。或者从收到的包里解析出短地址再返回去。已验证可行。多看资料
你的意思是不是在定义那里加上一句这个SampleApp_PTP_DstAddr.addr.shortAddr = 0xFFFF;我刚学不久,所以不懂,还请高手见谅
按照你的教导,点播成功了,但是组播还是有问题!
// Setup for the flash command's destination address - Group 1
SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
这个是组播的定义,你再帮我看一下
不是
网蜂不是有教程么,看教程先
按照我这个想法,真的成功了!你的想法是怎样的
LED我可以禁用掉,但是点播的从协调器返回到终端的方式还是不行。
你歪打正着而已
- 2、广播方式
- 广播方式是由一个设备发送信息至整个zigbee网络的所有设备,其目标短地址使用0xFFFF。另外,0xFFFD与0xFFFC也可作为广播地址。其区别如下:
- 0xFFFF: 广播数据发送至所有设备,包括睡眠节点
- 0xFFFD: 广播数据发送至正在睡眠的所有设备
- 0xFFFC: 广播数据发送至所有协调器和路由器
官方默认的终端节点是处于低功耗模式,最简单的办法就是让接受一直处于打开模式,你打开了f8wConfig.cfg文件
改成下面的就行了
/****************************************
* The following are for End Devices only
***************************************/
-DRFD_RCVC_ALWAYS_ON=TRUE
自己网上查资料,做这个无线点灯。有一些问题,就是协调器跟路由通信没问题,但是协调器跟终端通信就有问题,协调器能收到终端的指令,但是终端收不到协调器的指令,这是什么原因?
还有就是两个 LED灯的问题,怎么让它初始化不亮,改了很多地方还是不行
HalLedInit()函数控制初始状态
终端发给协调器指令的地址怎么设置的,函数都不贴出来怎么让人家帮你分析
灯的问题,因为网蜂的电平刚好跟TI公司的相反,所以相应地方改了,但是LED2灭了,LED1还是亮
采用点播的方式,按键产生任务:
case KEY_CHANGE:
SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
break;
下一步:
if ( keys & HAL_KEY_SW_6 )
{
SampleApp_SendPeriodicMessage();
}
下一步:
接下来是接收之后的处理:
case AF_INCOMING_MSG_CMD:
SampleApp_MessageMSGCB( MSGpkt );
break;
函数SampleApp_MessageMSGCB( MSGpkt );里面执行这一步:
case SAMPLEAPP_PTP_CLUSTERID:
HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);
整个流程就是这样,有什么问题吗?
那两个灯同时还做错误指示功能。你可以在那里设个断点调试看看能不能关掉,网蜂的例程只能参考,很不规范
SampleApp_PTP_DstAddr怎么配置
//Point to point
SampleApp_PTP_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
SampleApp_PTP_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_PTP_DstAddr.addr.shortAddr = 0x0000;
你这个是终端向协调器的点播地址,反过来发送的话SampleApp_PTP_DstAddr.addr.shortAddr = 0x0000;要把这个改为终端的短地址。
要两个都可以发送指令给对方呢?点播行不行
行,定义两个地址,或者动态修改点播地址描述的短地址。或者从收到的包里解析出短地址再返回去。已验证可行。多看资料
你的意思是不是在定义那里加上一句这个SampleApp_PTP_DstAddr.addr.shortAddr = 0xFFFF;我刚学不久,所以不懂,还请高手见谅
按照你的教导,点播成功了,但是组播还是有问题!
// Setup for the flash command's destination address - Group 1
SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
这个是组播的定义,你再帮我看一下
不是
网蜂不是有教程么,看教程先
按照我这个想法,真的成功了!你的想法是怎样的
LED我可以禁用掉,但是点播的从协调器返回到终端的方式还是不行。
你歪打正着而已
- 2、广播方式
- 广播方式是由一个设备发送信息至整个zigbee网络的所有设备,其目标短地址使用0xFFFF。另外,0xFFFD与0xFFFC也可作为广播地址。其区别如下:
- 0xFFFF: 广播数据发送至所有设备,包括睡眠节点
- 0xFFFD: 广播数据发送至正在睡眠的所有设备
- 0xFFFC: 广播数据发送至所有协调器和路由器
官方默认的终端节点是处于低功耗模式,最简单的办法就是让接受一直处于打开模式,你打开了f8wConfig.cfg文件
改成下面的就行了
/****************************************
* The following are for End Devices only
***************************************/
-DRFD_RCVC_ALWAYS_ON=TRUE