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文章
595瀏覽量
27467 -
解耦控制
+關注
關注
0文章
29瀏覽量
10227 -
煙霧傳感器
+關注
關注
2文章
46瀏覽量
16533
發布評論請先 登錄
相關推薦
框架解耦神器 -- 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
?1166次閱讀
電容解耦如何放置
警告: 請注意電容解耦的位置,尤其是IC芯片的電源與地引腳是斜對角的。 潛在問題: 不合理的位置會導致不充分的解耦。 預防措施: -對于像直插這樣的IC,其電源端子與地是端子成對角放置
永磁同步電機控制之反饋解耦及復矢量解耦
永磁同步電機反饋解耦及復矢量解耦(無刷直流電機等交流電機同樣適用) 一、永磁同步電機數學模型 1.永磁同步電機dq坐標系數學模型 2.永磁同步電機復矢量數學模型 二、
發表于 03-09 10:09
?2次下載
評論