主框架Demo代码,初始版本V1.0.0,主要帮助大家对框架的熟悉。
整个结构基于link(link.h link.c)的异步I/O机制,框架结构:
实际上,整个应用程序包含的模块远比这个复杂;为了能让学者比较容易上手,这里面其实只是把最基础的部分拿出来。
serial : 串口程序
zb_msg : 串口协议解析
device : 设备管理
iot_schd : 调度器
serial
串口通信类,非常简洁,serial.h 和 serial.cpp可以直接移植到产品开发中使用,
serial.cpp中open函数是核心,片段代码如下:
zb_msg
zb_msg主要是把串口协议进行解析,串口协议设计如下:
start code(magic number) + revision + access control + seq number + data length + data + CRC16
4bytes 1byte 2bytes 1byte 2bytes n 2bytes
revision 主要用在不同版本协议的兼容。
access control 访问控制,用于设置选项,比如分包,ACK,SYNC等等。
seq number 序列码,区分不同报文的id。
data length 数据长度。
data 用户数据。
CRC16 完整性校验。
串口流数据解析:
数据协议解析:
基于访问控制思路,大家可以自己实现分包传输的功能。
iot_schd
不同模块间的调度,主要是用于解耦,比如我们zb_msg收到一个新设备加入的消息,会通过iot_schd转发给device进行处理:
device
设备的管理,比如把新加入的设备存储到数据库;更新状态等等,在demo中我们仅仅是一个很简单的逻辑,大家可以遵循这个思路进行完善。
新建一个物联网行业嵌入式交流学习QQ群,感兴趣可加:928840648
源码可以加群获取,或者:点击下载(需要积分)