微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 网蜂模块协议栈无线点灯

网蜂模块协议栈无线点灯

时间:10-02 整理:3721RD 点击:
自己网上查资料,做这个无线点灯。有一些问题,就是协调器跟路由通信没问题,但是协调器跟终端通信就有问题,协调器能收到终端的指令,但是终端收不到协调器的指令,这是什么原因?

还有就是两个 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我可以禁用掉,但是点播的从协调器返回到终端的方式还是不行。

你歪打正着而已

  1. 2、广播方式
  2.   广播方式是由一个设备发送信息至整个zigbee网络的所有设备,其目标短地址使用0xFFFF。另外,0xFFFD与0xFFFC也可作为广播地址。其区别如下:

  3.   0xFFFF: 广播数据发送至所有设备,包括睡眠节点
  4.   0xFFFD: 广播数据发送至正在睡眠的所有设备
  5.   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我可以禁用掉,但是点播的从协调器返回到终端的方式还是不行。

你歪打正着而已

  1. 2、广播方式
  2.   广播方式是由一个设备发送信息至整个zigbee网络的所有设备,其目标短地址使用0xFFFF。另外,0xFFFD与0xFFFC也可作为广播地址。其区别如下:

  3.   0xFFFF: 广播数据发送至所有设备,包括睡眠节点
  4.   0xFFFD: 广播数据发送至正在睡眠的所有设备
  5.   0xFFFC: 广播数据发送至所有协调器和路由器

复制代码

官方默认的终端节点是处于低功耗模式,最简单的办法就是让接受一直处于打开模式,你打开了f8wConfig.cfg文件
改成下面的就行了
/****************************************
* The following are for End Devices only
***************************************/

-DRFD_RCVC_ALWAYS_ON=TRUE

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top