rk3308应用篇 —— Linux 串口异步I/O框架

主框架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

源码可以加群获取,或者:点击下载(需要积分)