REventBus背景
在實(shí)際的項(xiàng)目開發(fā)中,經(jīng)常會(huì)遇到業(yè)務(wù)與業(yè)務(wù),組件與組件,業(yè)務(wù)與組件之間的通信,舉個(gè)例子:當(dāng)有煙霧傳感器檢測(cè)到煙霧超標(biāo)時(shí),需要打開排氣扇排氣,同時(shí)顯示煙霧濃度顯示到顯示器中,供管理人員檢視。處理這樣的邏輯有幾種策略。如下:
- 排氣扇任務(wù)和顯示器任務(wù),不斷的查詢煙霧濃度,各自處理檢測(cè)煙霧濃度是否超標(biāo)。
- 煙霧模塊提供注冊(cè)監(jiān)聽接口,排氣扇任務(wù)和顯示器任務(wù)分別注冊(cè)監(jiān)聽,當(dāng)濃度超標(biāo)時(shí),告知監(jiān)聽任務(wù)。
以上兩種策略都存在很大的問題,問題分析:
- 第一種策略,每一個(gè)任務(wù)都需要不斷檢查判斷,這會(huì)導(dǎo)致資源的浪費(fèi),而且代碼也會(huì)有很多重復(fù)的。
- 第二種策略,雖然解決了第一種策略的的問題,但是如果場(chǎng)景中存在不止一個(gè)傳感器時(shí),那么所需要注冊(cè)的監(jiān)聽接口將隨之增加。而且監(jiān)聽接口是跟具體的業(yè)務(wù)綁定的。
綜上所述:為了能夠解決上面的問題,REventBus組件應(yīng)運(yùn)而生。
REventBus工作流程圖解
Publisher使用publish發(fā)出ige一個(gè)事件,Subscriber在其回調(diào)函數(shù)中接收事件。

REventBus依賴組件
為了提供更好的組件化,風(fēng)火輪科技 和《Rice嵌入式開發(fā)技術(shù)分享》公眾號(hào)聯(lián)合推出R組件集,REventbus組件就是R組件集的其中一員,組件與組件之后存在依賴關(guān)系.
REventBus組件同樣依賴一些組件,如下:
- RPlatform組件:平臺(tái)適配層,為了能讓R組件能夠在不同RTOS或Linux中運(yùn)行,針對(duì)不同平臺(tái)做的適配層。
- RThread_pool組件: 一個(gè)跨平臺(tái),易移植,接口簡單的線程池組件。
REventBus的使用
- REventBus整體包含5部分:Subscribe,Publish,Event,EventCb,Broker。
- Subscribe --訂閱者訂閱自己需要監(jiān)聽的事件接口。
- Publish --發(fā)布者發(fā)布事件,它支持同步發(fā)送和異步發(fā)送。
- Event --訂閱者監(jiān)聽的事件,只有存在訂閱事件,才會(huì)有與之對(duì)應(yīng)的發(fā)布事件。
- EventCb --事件產(chǎn)生的回調(diào)接口,訂閱者注冊(cè),發(fā)布者發(fā)布對(duì)應(yīng)事件之后產(chǎn)生回調(diào)。
- Broker --事件代理,管理事件注冊(cè),注銷,監(jiān)聽。
REventBus接口說明

- REventBus初始化接口
- 使用RThread_pool組件創(chuàng)建一個(gè)線程池
- 創(chuàng)建互斥量,解決共享資源問題。
- 初始化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同步發(fā)布事件接口:pf_err_t reb_publish(const char *event, void *payload, uint16_t lenght)

- REventBus異步發(fā)布事件接口:pf_err_t reb_async_publish(const char *event, reb_priority priority, void *payload, uint16_t lenght)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
617瀏覽量
30187 -
解耦控制
+關(guān)注
關(guān)注
0文章
29瀏覽量
10468 -
煙霧傳感器
+關(guān)注
關(guān)注
2文章
46瀏覽量
17053
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
詳解Board和SoC解耦的設(shè)計(jì)思路
本文簡單介紹OpenHarmony輕量系統(tǒng)移植,Board和SoC解耦的設(shè)計(jì)思路。適合自己動(dòng)手移植OpenHarmony輕量系統(tǒng)的朋友們。
框架解耦神器 -- REventBus
? REventBus背景 在實(shí)際的項(xiàng)目開發(fā)中,經(jīng)常會(huì)遇到業(yè)務(wù)與業(yè)務(wù),組件與組件,業(yè)務(wù)與組件之間的通信,舉個(gè)例子:當(dāng)有煙霧傳感器檢測(cè)到煙霧超標(biāo)時(shí),需要打開排氣扇排氣,同時(shí)顯示煙霧濃度顯示到顯示器中
永磁同步電機(jī)偏差解耦和電流前饋解耦控制比較
偏差解耦控制:電機(jī)參數(shù)估計(jì)值采用估計(jì)值加上電流反饋補(bǔ)償d軸電流:電機(jī)參數(shù)準(zhǔn)確值采用準(zhǔn)確值加上電流反饋補(bǔ)償d軸電流:電機(jī)參數(shù)采用估計(jì)值加上偏差解耦控制:電機(jī)參數(shù)采用準(zhǔn)確值加上偏差
發(fā)表于 06-28 06:08
常用的解耦設(shè)計(jì)方法
在采用傳統(tǒng)無動(dòng)態(tài)解耦控制時(shí),uqu_quq?和udu_dud?的指令值存在耦合項(xiàng)。上一個(gè)學(xué)習(xí)筆記中設(shè)計(jì)的設(shè)計(jì)方法是將其忽略,因此在最后設(shè)計(jì)的效果并不太好。目前,常用的解耦設(shè)計(jì)方法,有前
發(fā)表于 08-27 07:29
永磁同步電機(jī)偏差解耦與電流前饋解耦控制對(duì)比分析,哪個(gè)影響大?
永磁同步電機(jī)偏差解耦與電流前饋解耦控制對(duì)比分析,哪個(gè)影響大?
發(fā)表于 10-12 10:17
多變量解耦控制實(shí)驗(yàn)
多變量解耦控制4.0 實(shí)驗(yàn)設(shè)備PC計(jì)算機(jī)1臺(tái)(要求P4-1.8G以上)、MATLAB6.X軟件1套。4.1 實(shí)驗(yàn)?zāi)康蘑賹W(xué)習(xí)多變量解耦控制方法。②通過用MATLAB編程、上機(jī)調(diào)試,掌握多
發(fā)表于 05-15 00:51
?0次下載
熱連軋機(jī)活套系統(tǒng)的解耦控制及仿真
針對(duì)傳統(tǒng)熱連軋帶鋼活套張力與高度控制系統(tǒng),本文給出了基于對(duì)角矩陣解耦和解耦不變性原理的解耦控制方法。通過耦合系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu)圖,求取活套耦合系
發(fā)表于 08-04 15:27
?11次下載
基于補(bǔ)償器的解耦控制方法的研究
本文通過對(duì)冷熱水混合系統(tǒng)的溫度和液位的雙變量耦合問題進(jìn)行分析,提出了一種滿足解耦要求和控制目標(biāo)需要的基于補(bǔ)償器的Smith預(yù)估解耦控制方法。試驗(yàn)結(jié)果表明,
發(fā)表于 02-11 14:38
?10次下載
先進(jìn)PID多變量解耦控制
先進(jìn)PID多變量解耦控制
通過PID控制,可實(shí)現(xiàn)對(duì)多變量系統(tǒng)的解耦控制
發(fā)表于 05-04 16:01
?40次下載
基于H∞混合靈敏度解耦控制器實(shí)現(xiàn)BTT導(dǎo)彈自動(dòng)駕駛儀的解耦設(shè)計(jì)
導(dǎo)彈在大攻角飛行過程中,通道間存在嚴(yán)重的氣動(dòng)耦合。工程設(shè)計(jì)上,通常把較小的耦合項(xiàng)作為隨機(jī)干擾來處理,但當(dāng)耦合影響較大時(shí),容易使控制系統(tǒng)喪失穩(wěn)定性,因此必須考慮通道間的耦合效應(yīng),并對(duì)其解耦。近年來
發(fā)表于 05-17 10:35
?1728次閱讀
電容解耦如何放置
警告: 請(qǐng)注意電容解耦的位置,尤其是IC芯片的電源與地引腳是斜對(duì)角的。 潛在問題: 不合理的位置會(huì)導(dǎo)致不充分的解耦。 預(yù)防措施: -對(duì)于像直插這樣的IC,其電源端子與地是端子成對(duì)角放置
永磁同步電機(jī)控制之反饋解耦及復(fù)矢量解耦
永磁同步電機(jī)反饋解耦及復(fù)矢量解耦(無刷直流電機(jī)等交流電機(jī)同樣適用) 一、永磁同步電機(jī)數(shù)學(xué)模型 1.永磁同步電機(jī)dq坐標(biāo)系數(shù)學(xué)模型 2.永磁同步電機(jī)復(fù)矢量數(shù)學(xué)模型 二、
發(fā)表于 03-09 10:09
?2次下載
框架解耦神器—REventBus
評(píng)論