ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
* 导师**视频**讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> 受限于计算能力和存储大小,我们不能使用C++来编写应用;因此我们使用C语言来做对象编程,从zb\_msg.h入手: ![](https://img.kancloud.cn/f5/20/f520a6b1203402d022fc4b967283c902_832x760.png =600x) ### 结构体指针变量zbmsg\_类似于c++中的单例模式,我们可以通过zbmsg\_指针来访问函数: init,send;显然在结构体zb\_msg\_t中存放的是函数指针变量,然后我们在zb\_msg.c源码中进行赋值: ![](https://img.kancloud.cn/ad/30/ad30ceffa5b495112baeca7dd7824857_726x150.png =600x) ### zbmsg中有一个重要的函数如下, zb\_msg\_handler: ![](https://img.kancloud.cn/45/ec/45ecb4bc7a053f7c2ca4c6206caf3dcb_832x592.png =600x) ### 这个函数主要就是对接收到的串口数据进行协议分析,最终把应用数据提取出来,通过zbcategory\_转走,显然zbcategory\_也是一种面向对象的设计思路,有一组成员函数可以使用,比如图中调用到的on\_host\_msg函数。 zb\_msg设计很精简,大家可以自行浏览代码哈~