Linux应用层开发系列文章目录
第一章:linux多串口单线程事件触发
文章目录
前言
为什么要做单线程的多串口事件触发
单线程多事件触发的目的:
1、简单的类似单片机串口编程已经不能满足当前linux应用平台框架的搭建、多线程管理的复合型应用
2、提高linux应用层框架的兼容性,极限解耦,业务与框架深度剥离
3、回归主题,多串口,单线程去处理,
单线程多种事件触发管理的优势:
1、高效利用系统资源:通过多路复用技术,单线程可以同时监视多个事件,避免了频繁的轮询操作,提高了系统资源的利用效率。
2、响应速度快:当有事件发生时,单线程可以立即响应并进行相应的处理,不需要等待其他线程或进程的通知,3、从而提高了系统的响应速度。
简化程序逻辑:使用事件驱动模型可以将各种事件封装成事件对象,并注册到事件循环中,使程序逻辑更加清晰和简洁,易于维护和扩展。
4、减少资源消耗:相比多线程或多进程模型,单线程的资源消耗更少,可以减少系统开销,提高系统的稳定性和可靠性。
5、适用于并发连接处理:对于服务器应用程序来说,单线程的多事件触发管理可以更好地处理并发连接,提高了服务器的并发处理能力。
总之,使用多种事件触发管理的方法可以提高系统的性能、响应速度和资源利用率,是一种高效的事件处理方式。
以下是本篇文章正文内容,下面案例可供参考
一、框架怎么搭建?
选取业界大家常用的libevent。但是libevent的交叉编译说实话也是个细致活儿,这一点尤为重要
1、引入openssl
因为很多第三方库,都需要openssl的支持,所以需要引入
下载链接:https://www.openssl.org/
解决该问题:openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No
2、引入libevent
下载链接:https://libevent.org/
解决该问题:You should add the directory containing ‘openssl.pc’ to the `PKG_CONFIG_PATH’ environment variable
二、这个代码怎么写?
1、整体搭建及使用思路
1、创建一个新的事件处理器基础结构体。这个基础结构体可以用来管理事件的循环、事件的添加和删除、事件的触发等操作。
2、创建一个evbuffer,用来缓冲传递过来的数据,防止数据粘包和拆包。
3、串口基于事件处理器的初始化,里边包含事件触发与串口标识符的深度绑定,设置读取回调、错误触发、发送回调的方法、设置类型、设置水位。
4、启动事件处理器的事件循环。
5、释放事件处理器基础结构所占用的资源。
2、串口及事件触发的初步设置
事件串口触发–初始化设置代码如下:
int Uart_Event_Init(void)
{
struct event_base* ev_base = event_base_new