- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录
10_ZigBee网络通信的实现 1
一、控制台的基本结构 1
二、第一个命令’h’帮助 3
三、广播 6
四、点对点通信 8
五、远程 13
五、总结 20
10_ZigBee网络通信的实现
----(转载请注明出处 774910349@)Everhuai写于 2011-12-24
上一次笔记中主要讲了一些原理性的东西,现在将对我的代码进行解读。
一、控制台的基本结构
在代码中我单独为控制台增加了两个文件Console.c和Console.h。
#ifndef CONSOLE_H
#define CONSOLE_H
#ifdef __cplusplus
extern C
{
#endif
#define USER_DEBUG 1 //调试
#undef USER_DEBUG
//函数指针原型
typedef void (*console_f)(void);
struct console_config{
console_f console; //入口函数指针
console_f menu; //打印菜单
console_f broadcast; //广播函数指针
console_f search; //搜索节点
console_f cmd; //通过无线发送命令给节点进行操作的函数指针
console_f serialCB; //提供给串口
//这样就能与应用层共用缓冲
uint8 *Console_TxBuf; //缓冲区指针
uint8 *Console_TxLen; //数据量指针
};
extern struct console_config console;
extern unsigned short strlen_c(char* buf);
#ifdef __cplusplus
}
#endif
#endif /* CONSOLE_H */ 我使用结构console_config对控制台进行封装,其中函数指针broadcast、search、cmd是有应用层提供的。使用指针Console_TxBuf和Console_TxLen主要为了能和原来的代码接口,因为我主要是基于无线串口透明传输进行更改的。
struct console_config console = {
.console = console_entry, //入口函数
.menu = menu, //打印菜单
/**********************由应用层提供***************************/
.broadcast = NULL, //广播函数指针
.search = NULL, //搜索节点,函数有应用层提供
.cmd = NULL, //通过无线发送命令给节点进行操作的函数指针,函数又应用层提供
/**********************由应用层提供**************************/
.serialCB = console_entry, //提供给串口
.Console_TxBuf = NULL, //没有指定数据缓冲区
.Console_TxLen = NULL, //没有数据
}; 应用层填充如下:
//填充接口函数
console.broadcast = LEDSApp_Broadcast; //广播
console.search = LEDSApp_EndSearch; //用于搜索节点的函数指针
console.cmd = LEDSApp_EndCmd; //用于远程
//控制台初始化
console.Console_TxBuf = SerialApp_TxBuf;
console.Console_TxLen = SerialApp_TxLen; 这些接口函数放到应用层去实现主要是考虑到其中要用
文档评论(0)