多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
serial是一个完全和串口相关的类,不会涉及到应用逻辑;zb\_msg是和应用逻辑相关的类,不会涉及到串口逻辑,这样就完成解耦了;zb\_msg的命名方式是因为我们的从机是zigbee设备,因此称为zb\_msg,意思是zigbee的消息,这个大家可以自行修改。 ![](https://img.kancloud.cn/1c/9e/1c9e97c0b366af4ac60b8c58b7a43730_832x550.png =600x) ### 串口类的接口有: * serial:构造时需要指定串口所在的路径,比如/dev/ttyS0等,还有波特率,默认115200。 * open:打开串口,需要指定硬件流控,数据位,停止位,校验位,建议默认即可。 * close:用完关闭串口。 * write:向串口写入数据。 * on\_stream:流式数据解析。 * on\_packet:完整报文,接收到数据后会回调这个函数。 ### 这些接口的实现在serial.cpp源码中,我们挑出几个核心点来讲解,该源码完全可以用于产品开发。由于串口需要做异步处理,因此我们使用前面章节中的link来支持,link中新加了一个接口:link\_listen\_fd,用来监听文件描述符,有数据就异步返回。另外我们需要在驱动层确保driver是可用的,具体参考系统篇中的串口章节。