色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

立創·梁山派開發板-21年電賽F題-送藥小車數據的發布與訂閱

jf_31863339 ? 來源:jf_31863339 ? 作者:jf_31863339 ? 2023-08-07 09:55 ? 次閱讀

送藥小車代碼倉庫:https://gitee.com/lcsc/medical_car

送藥小車數據的發布與訂閱

既然使用了RTOS,就不能像以前裸機一樣全局變量滿天飛了(當然裸機也不能全局變量滿天飛)。

在實時操作系統(RTOS)中,不推薦或不建議使用全局變量來傳遞信息的原因主要有以下幾點:

競爭條件:在多任務環境下,全局變量會面臨競爭條件的問題。當多個任務同時讀寫同一個全局變量時,會導致數據的不一致性和錯誤的結果。這是因為任務的執行是并發的,無法控制它們的執行順序。

數據共享和保護:全局變量被所有任務共享,這意味著多個任務可以同時訪問和修改該變量。如果沒有正確的數據保護機制,可能會導致數據損壞或沖突。

可維護性和調試困難:使用全局變量傳遞信息可能導致代碼的可維護性和調試的困難。由于全局變量可以被任何任務修改,追蹤問題的根源和調試錯誤可能會變得更加困難。

為了避免上述問題,RTOS提供了一些機制來進行任務間的通信和數據傳遞,例如:

消息隊列:任務可以通過消息隊列來發送和接收消息。每個任務有自己的私有消息隊列,通過發送和接收消息來進行通信,避免了全局變量的競爭條件和數據共享問題。

信號量:信號量可以用于同步任務的執行和共享資源的訪問。任務可以通過申請和釋放信號量來控制對共享資源的訪問,并確保任務之間的互斥性和同步性。

事件標志組:事件標志組可以用于任務之間的通知和事件觸發。一個任務可以等待一個或多個事件標志的狀態變化,并在事件發生時被喚醒執行相應的操作。

通過使用這些RTOS提供的通信機制,可以更安全地在任務之間傳遞信息,避免競爭條件和數據共享問題,并提高代碼的可維護性和調試效率。

在送藥小車這個工程中采用RT-Thread軟件包uMCN,uMCN (Micro Multi-Communication Node) 提供了一種基于發布/訂閱模式的安全跨線程/進程的通信方式。在系統中,uMCN 被廣泛應用于任務和模塊間的數據通信。使用發布-訂閱(Publish-Subscribe)機制可以提供更靈活和高效的任務間通信方式,支持一對一、一對多、多對一和多對多的通信模式。這種機制可以解決使用全局變量傳遞信息可能帶來的競爭條件和數據共享問題。

發布-訂閱機制基于事件驅動的思想,其中包含兩個角色:發布者(Publisher)和訂閱者(Subscriber)。發布者負責發布事件或消息,而訂閱者則注冊對感興趣的事件或消息進行訂閱。他提供了一種松散耦合的通信方式,允許任務或模塊之間通過發布和訂閱消息來進行通信,而不需要直接知道彼此的存在。

在使用發布-訂閱模式獲取數據時,通常涉及以下角色和操作:

發布者(Publisher):負責生成和發布數據或事件。發布者將數據發送到一個或多個特定的主題(Topic),而不關心具體的訂閱者。

訂閱者(Subscriber):訂閱者對特定的主題感興趣,并通過訂閱該主題來接收與之相關的數據或事件。

主題(Topic):主題是數據或事件的分類或標識符,發布者根據主題將數據發送到相應的通道,而訂閱者根據主題來選擇訂閱的數據源。

使用發布-訂閱模式獲取數據的好處在于,系統中的任務或模塊之間解耦合,發布者和訂閱者之間不直接依賴于彼此的存在,從而提高了系統的可擴展性和靈活性。此外,發布-訂閱模式還能夠支持多對多的通信,允許多個訂閱者同時接收相同的數據或事件,實現了信息的分發和共享。

他的優勢如下:

松耦合性:發布-訂閱機制使任務之間的通信更加松耦合。發布者不需要直接知道訂閱者的存在,也不需要關心具體的訂閱者數量和位置。訂閱者只需要訂閱感興趣的事件或消息,從而實現任務之間的解耦。

靈活性:發布-訂閱機制支持多對多的通信模式,一個發布者可以有多個訂閱者,一個訂閱者也可以訂閱多個發布者的事件或消息。這種靈活性使得任務之間可以方便地建立復雜的通信關系。

擴展性:通過發布-訂閱機制,可以方便地擴展系統,添加新的發布者或訂閱者,而不需要修改現有的任務邏輯。這種擴展性使得系統更具可維護性和可擴展性。


將各個數據發布,并對接上echo輸出函數后,就可以在RT-Thread的Finsh控制臺獲取到數據信息了(下面是通過uMCN獲取電機編碼器1的數據):

wKgaomTQTyOAbduUAAMQGtcNig4218.jpg

具體使用參考uMCN的倉庫

添加新主題

為了添加新的主題 (topic),你需要先創建一個主題內容。例如:

typedef struct {
        rt_uint32_t a;
        float b;
        int8_t c[4];
} data_content;

uMCN對主題內容的長度和類型沒有限制,所以理論上可以用來傳輸任何類型的消息。

然后你需要使用宏 MCN_DEFINE(name, size) 來定義主題。一般在發布主題的源文件的頂部定義主題。例如:

MCN_DEFINE(my_topic, sizeof(data_content));

uMCN 支持一個主題擁有多個發布者和訂閱者。注意同一個主題名字不同被重復定義,不然編譯器會報錯。

下一步就是使用 mcn_advertise() 來注冊主題。例如:

mcn_advertise(MCN_ID(my_topic), my_topic_echo);

MCN_ID() 宏根據主題名獲得樞紐節點。my_topic_echo 是一個回調函數,用來打印主題的數據。

static int my_topic_echo(void* param)
{
        data_content data;
        if(mcn_copy_from_hub((McnHub*)param, &data) == FMT_EOK){
                printf("a:%d b:%f c:%c %c %c %cn", data.a, data.b, data.c[0], data.c[1], data.c[2], data.c[3]);
        return 0;
        }
        return -1;
}

發布主題

可以在系統的任意位置使用函數 mcn_publish() 來發布一個主題。例如:

data_content my_data = {50, -2.0, {1,2,3,4}};
mcn_publish(MCN_ID(my_topic), &my_data);

審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7085

    瀏覽量

    89214
  • RTOS
    +關注

    關注

    22

    文章

    817

    瀏覽量

    119725
  • 開發板
    +關注

    關注

    25

    文章

    5082

    瀏覽量

    97720
收藏 人收藏

    評論

    相關推薦

    梁山的華秋DFM解析講解(上)

    可制造性設計(DFM)就是從產品開發設計時起,就考慮到可制造性和可測試性,使設計和制造之間緊密聯系,實現從設計到制造一次成功的目的。這是保證PCB設計質量的最有效方法。基于華秋DFM來看一下開源
    的頭像 發表于 12-12 09:07 ?4039次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創</b><b class='flag-5'>梁山</b><b class='flag-5'>派</b>的華秋DFM解析講解(上)

    ·梁山開發板-21F-送藥小車-K210更換固件-運行基礎顏色識別例程

    K210更換固件,他的IDE叫CanMV,看起來應該是官方合作出品的。但是實際使用的時候發現他里面的函數都比較老舊,連接IDE的時候經常性出現連不上或者連上很久之后才有反應。而且對機器視覺的適配沒有Maixpy好,所以開始之前我們先給這個K210更換一下固件。
    的頭像 發表于 07-28 11:27 ?1491次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創</b>·<b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-K210更換固件-運行基礎顏色識別例程

    ·梁山開發板-21F-送藥小車-K210的KPU數字識別訓練

    210自帶 KPU(通用的神經網絡處理器),非常適合用來作數字識別。要采集的數據集圖像尺寸為 224*224(這是目前最常用的網絡數據大?。瑸榱俗尳Y果更準確,所以要訓練的數據集要盡可能多,每種
    的頭像 發表于 07-31 10:29 ?1202次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創</b>·<b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-K210的KPU數字識別訓練

    ·梁山開發板-21F-送藥小車-K210功能實現代碼講解

    關鍵的注釋都添加了,可以幫助理解代碼,這段代碼同時實現了尋紅線和數字識別,但是還做不到同時運行,在尋紅線的時候沒法數字識別,這兩個狀態之間的切換可以通過長按K210上的用戶按鍵或者由梁山派來控制
    的頭像 發表于 08-01 09:49 ?1174次閱讀

    開發板-21F-送藥小車-小車尋紅線環的調試與實現

    PID控制來說,測量值是紅線相較屏幕中線的偏移,目標值是想讓紅線偏移為0,輸出值是電機的速度。 根據14_梁山與K210串口通信協議框架搭建.md文檔我們的
    的頭像 發表于 08-03 10:10 ?1379次閱讀

    ·梁山開發板-21F-送藥小車實現思路

    基本要求 1. 根據走廊上的標識信息自動識別,尋徑將藥品送到指定病房,投影要在門口區域內, 2. 到了指定病房后,點亮紅色指示燈,等待卸載藥品。 3. 人工卸掉藥品后,小車自動熄滅紅色指示燈,開始返回。 4. 自動返回藥房,點亮綠色指示燈。
    的頭像 發表于 08-08 09:44 ?913次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創</b>·<b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>實現思路

    用悟空全志H3開發板做一個基于ROS系統的全向輪小車

    這個強大的開發板的一些關鍵特性以及我是如何利用它來打造一個全向輪的小車的。 2、產品設計介紹 本次設計的全向輪小車是在一個圓形底盤上安裝了三個帶有反饋編碼器的全向輪,控制中心是悟空
    發表于 05-06 11:15

    怎樣去設計一個智能送藥小車

    2021F智能送藥小車原文鏈接:openmv巡線代碼:數字識別代碼:HAL庫keil工程(
    發表于 01-07 08:19

    梁山-21F-智能送藥小車-按鍵檢測的消抖和實現

    按鍵檢測的消抖和實現 在送藥小車中,預留了三個按鍵,藥品裝載檢測是通過一個輕觸開關來實現的,也可以把他理解成一個按鍵。 按鍵的實際電路如下: 我們通常用的按鍵內部都是機械彈性開關,當它按下彈起
    發表于 08-04 09:48

    【悟空H3開發板免費體驗】基于ROS系統的全向輪小車

    /STM32F100RBT_robot.git 悟空: 1、開場白 大家好,我是FFD80。很高興能夠在這里和大家分享一些關于我使用悟空H3開發板構建全向輪
    發表于 11-12 01:00

    梁山的華秋DFM解析講解(下)

    開源的梁山開發板已經大批量生產,其中一些細節和布線布局規則還是很值得我們學習的。上期已經介紹電氣信號,最小線寬,最小間距,SMD間距的
    的頭像 發表于 12-12 13:17 ?2067次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創</b><b class='flag-5'>梁山</b><b class='flag-5'>派</b>的華秋DFM解析講解(下)

    梁山開發板-21F-送藥小車-分析

    全國產開源開發板,基于GD32F4系列,21F
    的頭像 發表于 07-31 10:13 ?1265次閱讀
    <b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-<b class='flag-5'>賽</b><b class='flag-5'>題</b>分析

    梁山開發板-21F-送藥小車-小車角度環的調試與實現

    來達到目標值。 第二種是在實現小車輪子位置環的基礎上,控制兩邊輪子同時向不同的方向旋轉一定的圈數(編碼器脈沖),在小車輪子不打滑的情況下轉過的角度就是一個確定的值,在送藥小車的地圖中
    的頭像 發表于 07-27 10:18 ?969次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創</b><b class='flag-5'>梁山</b><b class='flag-5'>派</b><b class='flag-5'>開發板</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-<b class='flag-5'>小車</b>角度環的調試與實現

    ·梁山開發板-21F-送藥小車-與K210串口通信協議框架搭建

    在K210可以識別到色塊和識別數字后,就需要把這些信息傳遞給梁山派了。而立梁山也需要控制
    的頭像 發表于 08-02 10:57 ?768次閱讀

    梁山-21F-智能送藥小車-按鍵檢測的消抖和實現

    我們通常用的按鍵內部都是機械彈性開關,當它按下彈起的時候,機械觸點會因為彈性作用而在閉合和斷開的瞬間伴隨著一連串的抖動。這種抖動會導致輸入信號在高低電位之間彈跳,產生不正確的輸入。 這里面電阻的作用是限流(害怕初學者不小心給設置成推挽輸出了),在這里要注意的是要在芯片內部設置一個下拉(電路圖上是沒有加下拉電阻得到)。電容作用是硬件去抖,不過軟件上還是需要軟件消抖,硬件去抖只能改善不能消除,所以在有一些批量電路中,這個電容都是可以省去的,畢竟還是省不了軟件消抖的。
    的頭像 發表于 08-04 10:09 ?658次閱讀
    <b class='flag-5'>立</b><b class='flag-5'>創</b><b class='flag-5'>梁山</b><b class='flag-5'>派</b>-<b class='flag-5'>21</b><b class='flag-5'>年</b><b class='flag-5'>電</b><b class='flag-5'>賽</b><b class='flag-5'>F</b><b class='flag-5'>題</b>-智能<b class='flag-5'>送藥</b><b class='flag-5'>小車</b>-按鍵檢測的消抖和實現
    主站蜘蛛池模板: 男生脱美女内裤内衣动态图| 日韩av国产av欧美天堂社区| 国内精品不卡一区二区三区| 国产午夜精品视频在线播放 | 日本国产成人精品无码区在线网站| 欧美00后rapper潮水| 欧美亚洲色帝国| 国产精品亚洲视频在线观看| 3D动漫网站HOXXXxes| 91热久久免费精品99| 91福利潘春春在线观看| 2018国产天天弄谢| 8x8x我要打机飞在线观看| 2021精品国产综合久久| 97超级碰久久久久香蕉人人| 97综合久久| CHINA中国东北GURMA| 糙汉顶弄抽插HHHH| 边摸边吃奶边做下面视频| 不知火舞vs精子| 亚洲国产在线观看免费视频| 亚洲精品成A人在线观看| 18 japanese宾馆直播| 纯肉合集(高H)| 娇小萝被两个黑人用半米长| 免费国产在线观看| 手机在线亚洲日韩国产| 伊人久久中文| 成人精品视频99在线观看免费| 国产午夜精品理论片| 免费黄色网址在线观看| 我和妽妽在厨房里的激情区二区 | 女人会操出水图| 午夜国产一区在线观看| 中文字幕一区二区三区在线不卡 | 亚洲国产韩国欧美在线不卡| 91精品在线国产| 国产精品一区二区在线观看| 久久中文骚妇内射| 甜性涩爱全集在线观看| 13小箩利洗澡无码视频APP|