REventBus背景
在实际的项目开发中,经常会遇到业务与业务,组件与组件,业务与组件之间的通信,举个例子:当有烟雾传感器检测到烟雾超标时,需要打开排气扇排气,同时显示烟雾浓度显示到显示器中,供管理人员检视。处理这样的逻辑有几种策略。如下:
- 排气扇任务和显示器任务,不断的查询烟雾浓度,各自处理检测烟雾浓度是否超标。
- 烟雾模块提供注册监听接口,排气扇任务和显示器任务分别注册监听,当浓度超标时,告知监听任务。
以上两种策略都存在很大的问题,问题分析:
- 第一种策略,每一个任务都需要不断检查判断,这会导致资源的浪费,而且代码也会有很多重复的。
- 第二种策略,虽然解决了第一种策略的的问题,但是如果场景中存在不止一个传感器时,那么所需要注册的监听接口将随之增加。而且监听接口是跟具体的业务绑定的。
综上所述:为了能够解决上面的问题,REventBus组件应运而生。
REventBus工作流程图解
Publisher使用publish发出ige一个事件,Subscriber在其回调函数中接收事件。
REventBus依赖组件
为了提供更好的组件化,风火轮科技 和《Rice嵌入式开发技术分享》公众号联合推出R组件集,REventbus组件就是R组件集的其中一员,组件与组件之后存在依赖关系.
REventBus组件同样依赖一些组件,如下:
REventBus的使用
- REventBus整体包含5部分:Subscribe,Publish,Event,EventCb,Broker。
- Subscribe --订阅者订阅自己需要监听的事件接口。
- Publish --发布者发布事件,它支持同步发送和异步发送。
- Event --订阅者监听的事件,只有存在订阅事件,才会有与之对应的发布事件。
- EventCb --事件产生的回调接口,订阅者注册,发布者发布对应事件之后产生回调。
- Broker --事件代理,管理事件注册,注销,监听。
REventBus接口说明
- REventBus初始化接口
- 使用RThread_pool组件创建一个线程池
- 创建互斥量,解决共享资源问题。
- 初始化broker链表,用于事件代理。
pf_err_t reb_init(void);
- REventBus去初始化接口
- 线程池注销,互斥量伤处,
pf_err_t reb_deinit(void);
- REventBus订阅事件接口: pf_err_t reb_subscribe(const char *event, reb_handler_cb handler)
- REventBus订阅事件接口: pf_err_t reb_unsbscribe(const char *event, reb_handler_cb handler)
- REventBus同步发布事件接口:pf_err_t reb_publish(const char *event, void *payload, uint16_t lenght)
- REventBus异步发布事件接口:pf_err_t reb_async_publish(const char *event, reb_priority priority, void *payload, uint16_t lenght)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Linux系统
+关注
关注
4文章
590浏览量
27344 -
解耦控制
+关注
关注
0文章
29浏览量
10196 -
烟雾传感器
+关注
关注
2文章
46浏览量
16488
发布评论请先 登录
相关推荐
框架解耦神器 -- REventBus
REventBus背景 在实际的项目开发中,经常会遇到业务与业务,组件与组件,业务与组件之间的通信,举个例子:当有烟雾传感器检测到烟雾超标时,需要打开排气扇排气,同时显示烟雾浓度显示到显示器中
永磁同步电机偏差解耦和电流前馈解耦控制比较
偏差解耦控制:电机参数估计值采用估计值加上电流反馈补偿d轴电流:电机参数准确值采用准确值加上电流反馈补偿d轴电流:电机参数采用估计值加上偏差解耦控制:电机参数采用准确值加上偏差
发表于 06-28 06:08
常用的解耦设计方法
在采用传统无动态解耦控制时,uqu_quq和udu_dud的指令值存在耦合项。上一个学习笔记中设计的设计方法是将其忽略,因此在最后设计的效果并不太好。目前,常用的解耦设计方法,有前
发表于 08-27 07:29
多变量解耦控制实验
多变量解耦控制4.0 实验设备PC计算机1台(要求P4-1.8G以上)、MATLAB6.X软件1套。4.1 实验目的①学习多变量解耦控制方法。②通过用MATLAB编程、上机调试,掌握多
发表于 05-15 00:51
•0次下载
热连轧机活套系统的解耦控制及仿真
针对传统热连轧带钢活套张力与高度控制系统,本文给出了基于对角矩阵解耦和解耦不变性原理的解耦控制方法。通过耦合系统的动态结构图,求取活套耦合系
发表于 08-04 15:27
•11次下载
基于补偿器的解耦控制方法的研究
本文通过对冷热水混合系统的温度和液位的双变量耦合问题进行分析,提出了一种满足解耦要求和控制目标需要的基于补偿器的Smith预估解耦控制方法。试验结果表明,
发表于 02-11 14:38
•10次下载
基于H∞混合灵敏度解耦控制器实现BTT导弹自动驾驶仪的解耦设计
导弹在大攻角飞行过程中,通道间存在严重的气动耦合。工程设计上,通常把较小的耦合项作为随机干扰来处理,但当耦合影响较大时,容易使控制系统丧失稳定性,因此必须考虑通道间的耦合效应,并对其解耦。近年来
发表于 05-17 10:35
•1106次阅读
电容解耦如何放置
警告: 请注意电容解耦的位置,尤其是IC芯片的电源与地引脚是斜对角的。 潜在问题: 不合理的位置会导致不充分的解耦。 预防措施: -对于像直插这样的IC,其电源端子与地是端子成对角放置
永磁同步电机控制之反馈解耦及复矢量解耦
永磁同步电机反馈解耦及复矢量解耦(无刷直流电机等交流电机同样适用) 一、永磁同步电机数学模型 1.永磁同步电机dq坐标系数学模型 2.永磁同步电机复矢量数学模型 二、
发表于 03-09 10:09
•0次下载
评论