概述
在zigbee工程里面ZigbeeGateWay.h增加一个CLUSTERID
#define ZIGBEEGATEWAY_LCD_UPDATE_CLUSTERID 9
这样CLUSTERID的数量变成了9个
#define ZIGBEEGATEWAY_MAX_CLUSTERS 9
在ZigbeeGateWay.c的全局静态变量初始化也应该相应的改一下
// This list should be filled with Application specific Cluster IDs.
const cId_t ZigbeeGateWay_ClusterList[ZIGBEEGATEWAY_MAX_CLUSTERS] =
{
ZIGBEEGATEWAY_PERIODIC_CLUSTERID,
ZIGBEEGATEWAY_FLASH_CLUSTERID,
ZIGBEEGATEWAY_LED_ON_CLUSTERID,
ZIGBEEGATEWAY_LED_OFF_CLUSTERID,
ZIGBEEGATEWAY_LED_ON_OFF_CLUSTERID,
ZIGBEEGATEWAY_FLASH_STOP_CLUSTERID,
ZIGBEEGATEWAY_SYSTEM_REBOOT_CLUSTERID,
ZIGBEEGATEWAY_FLASH_FOREVER_CLUSTERID,
ZIGBEEGATEWAY_LCD_UPDATE_CLUSTERID
};
在zigbee终端工程中uip的消息处理函数void APP_uIP_Message_Process(u8_t* msg,u8_t length)里面添加
else if(strstr((char*)tmp,"LCD")!=NULL)
{
if(strstr((char*)tmp,"LCDSET")!=NULL)
{
AF_DataRequest( &ZigbeeGateWay_State_DstAddr, &ZigbeeGateWay_epDesc,
ZIGBEEGATEWAY_LCD_UPDATE_CLUSTERID,
msg_length,
tmp,
&ZigbeeGateWay_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS);
return;
}
}
这里面已经把之前的CLUSTERID用上了
至此协调器端的修改完成。
解释:先定义一个CLUSTERID名称叫ZIGBEEGATEWAY_LCD_UPDATE_CLUSTERID,这个CLUSTERID只是一个标记,终端和协调器在发送消息时候共用的
再协调器的接收到以太网消息的时候判断content内容是否包含LCDSET字符串,如果包含,则将此消息转发给相应的终端
终端方面在rf的消息处理函数
void ZigbeeGateWay_MessageMSGCB( afIncomingMSGPacket_t *pkt )
中的switch语句中添加
case ZIGBEEGATEWAY_LCD_UPDATE_CLUSTERID:
if(pkt->cmd.DataLength > 7)
{
// LCD_write_command(0x01); //清屏
LCD_PutStr(tmp+7,pkt->cmd.DataLength-7,1);
}
break;
至此,在之前工程Zigbee网关 cc2530 zstack添加1602驱动的基础上,修改完成。
打开新改好的安卓客户端zigbee网关 android客户端添加设置液晶显示功能
打开服务器软件,协调器终端重新下载,测试
成功,反应速度还可以。
更多资料请参考 http://web.nenewind.com
最后
以上就是曾经奇迹为你收集整理的zigbee网关 CC2530 zstack用手机控制1602显示的全部内容,希望文章能够帮你解决zigbee网关 CC2530 zstack用手机控制1602显示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复