0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MAVLink學(xué)習(xí)之路05_ MAVLink應(yīng)用編程接口分析

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-07 16:21 ? 次閱讀

MAVLink應(yīng)用編程主要內(nèi)容

2.1 發(fā)送和接收說(shuō)明

利用MAVLink通信協(xié)議進(jìn)行編程,主要實(shí)現(xiàn)的功能就是:

1.發(fā)送端

將需要發(fā)送的數(shù)據(jù)(如:SysState, BatVol),添加MAVLink通信協(xié)議,通過(guò)硬件(如:UARTCAN)發(fā)送出去。

2.接收端

硬件(如:UART、CAN)接收到的數(shù)據(jù),通過(guò)MAVLink協(xié)議解析,得到一幀完整的MAVLink數(shù)據(jù)包,提取發(fā)送端發(fā)送的數(shù)據(jù)(如:SysState, BatVol),將得到的數(shù)據(jù)應(yīng)用到我們程序中。

主要流程:數(shù)據(jù) -> MAVLink封裝 -> 發(fā)送 -> 接收 -> MAVLink解析 ->數(shù)據(jù)

2.2 發(fā)送和接收流程圖

該流程圖是結(jié)合我上一篇文章提供的源代碼例程畫出來(lái),包含的只是主要內(nèi)容,更多細(xì)節(jié)沒(méi)有在流程圖中呈現(xiàn)。

提示:

我提供例程是針對(duì)初學(xué)者提供比較單一發(fā)送和接收例程(MDK-ARM和EWARM包含各自的發(fā)送和接收工程)。

而實(shí)際項(xiàng)目可能會(huì):

1.發(fā)送和接收在一個(gè)工程;

2.包含操作系統(tǒng);

3.發(fā)送、接收數(shù)據(jù)FIFO(隊(duì)列)處理;

所以,實(shí)際項(xiàng)目,請(qǐng)按需修改我提供的源碼。

3

MAVLink函數(shù)接口詳細(xì)說(shuō)明

這一章節(jié)講述發(fā)送和接收主要用到的函數(shù)接口,請(qǐng)參考我提供的源代碼例程理解。

為方便初學(xué)者理解,我將其分為發(fā)送和接收兩個(gè)部分來(lái)講述。

3.1 發(fā)送主要函數(shù)接口

上面是我提供例程的代碼,主要講4個(gè)接口

1.MAVLink_SendTest

這個(gè)接口是根據(jù)自己情況進(jìn)行封裝函數(shù),用于應(yīng)用程序調(diào)用,這里不多說(shuō)。

2.mavlink_msg_sys_info_pack

這個(gè)函數(shù)接口主要目的:將變量信息(SysID、CompID、SysState、BatVol)打包,最終得到MAVLink_Msg這個(gè)消息包。

3.mavlink_msg_to_send_buffer

將上一步得到的MAVLink_Msg轉(zhuǎn)換成我們要發(fā)送的數(shù)據(jù)BUF緩存。

4.MAV_USART_SendNByte

這個(gè)函數(shù)接口也是我自己根據(jù)硬件(UART)封裝的,如果你是其它硬件通信,只需要封裝一個(gè)類似的接口(參數(shù)具有BUF,LEN)即可。

發(fā)送數(shù)據(jù)的流程:從應(yīng)用代碼 -> 底層硬件(發(fā)送出去)。

如果要深入了解,可以先熟悉軟件流程,再結(jié)合源代碼工程,同時(shí)參看接口函數(shù)具體實(shí)現(xiàn)。相信你很快就明白了。

3.2 接收主要函數(shù)接口

上面是我提供例程的代碼(方便截圖,去掉了部分),主要講以上4點(diǎn)內(nèi)容。

1.MAV_USART_GetByte

該函數(shù)接口也是硬件底層通信接口,請(qǐng)根據(jù)自己情況修改,只需要傳遞數(shù)據(jù)(流)進(jìn)來(lái)即可。

2.mavlink_parse_char

MAVLink解析是按照一個(gè)一個(gè)字符進(jìn)行解析,我們接收到一個(gè)字符,就對(duì)其進(jìn)行解析,直到解析完(根據(jù)返回標(biāo)志判斷)一幀數(shù)據(jù)為止。

3.if(MAVLINK_MSG_ID_SYS_INFO == MAVLinkMsg.msgid)

這里就是對(duì)解析好的一包完整消息進(jìn)行分類判斷吧。其實(shí),我是想說(shuō),這個(gè)地方還有兩個(gè)ID需要進(jìn)行判斷,SysID系統(tǒng)ID和CompID部件ID。

我提供例程為方便初學(xué)者快速理解,未提供SysID和CompID判斷,在后續(xù)應(yīng)用編程中會(huì)用到。

接收數(shù)據(jù)的流程:從應(yīng)用代碼 -> 底層硬件(發(fā)送出去)。

以上就是發(fā)送和接收的主要函數(shù)接口,如果你只是簡(jiǎn)單的進(jìn)行通信,這幾個(gè)接口就夠你使用了。當(dāng)然,更高級(jí)的編程應(yīng)用還需要你進(jìn)一步掌握其中的內(nèi)容。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    887

    瀏覽量

    40318
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2756

    瀏覽量

    463841
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1237

    瀏覽量

    101447
  • mavlink
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    2595
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Triton編譯器支持的編程語(yǔ)言

    Triton編譯器支持的編程語(yǔ)言主要包括以下幾種: 一、主要編程語(yǔ)言 Python :Triton編譯器通過(guò)Python接口提供了對(duì)Triton語(yǔ)言和編譯器的訪問(wèn),使得用戶可以在Python環(huán)境中
    的頭像 發(fā)表于 12-24 17:33 ?364次閱讀

    BQ78412應(yīng)用程序編程接口

    電子發(fā)燒友網(wǎng)站提供《BQ78412應(yīng)用程序編程接口.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 14:46 ?0次下載
    BQ78412應(yīng)用程序<b class='flag-5'>編程</b><b class='flag-5'>接口</b>

    4G模組SD卡接口編程:深度學(xué)習(xí)

    今天我們需要深度學(xué)習(xí)的是4G模組SD卡接口編程,以我常用的模組Air724UG為例,分享給大家。
    的頭像 發(fā)表于 11-20 23:14 ?245次閱讀
    4G模組SD卡<b class='flag-5'>接口</b><b class='flag-5'>編程</b>:深度<b class='flag-5'>學(xué)習(xí)</b>

    什么是機(jī)器學(xué)習(xí)?通過(guò)機(jī)器學(xué)習(xí)方法能解決哪些問(wèn)題?

    來(lái)源:Master編程樹(shù)“機(jī)器學(xué)習(xí)”最初的研究動(dòng)機(jī)是讓計(jì)算機(jī)系統(tǒng)具有人的學(xué)習(xí)能力以便實(shí)現(xiàn)人工智能。因?yàn)闆](méi)有學(xué)習(xí)能力的系統(tǒng)很難被認(rèn)為是具有智能的。目前被廣泛采用的機(jī)器
    的頭像 發(fā)表于 11-16 01:07 ?432次閱讀
    什么是機(jī)器<b class='flag-5'>學(xué)習(xí)</b>?通過(guò)機(jī)器<b class='flag-5'>學(xué)習(xí)</b>方法能解決哪些問(wèn)題?

    通過(guò)JTAG接口對(duì)MSP430進(jìn)行編程

    電子發(fā)燒友網(wǎng)站提供《通過(guò)JTAG接口對(duì)MSP430進(jìn)行編程.pdf》資料免費(fèi)下載
    發(fā)表于 10-31 09:31 ?0次下載
    通過(guò)JTAG<b class='flag-5'>接口</b>對(duì)MSP430進(jìn)行<b class='flag-5'>編程</b>

    FPGA加速深度學(xué)習(xí)模型的案例

    :DE5Net_Conv_Accelerator 應(yīng)用場(chǎng)景 :面向深度學(xué)習(xí)的開(kāi)源項(xiàng)目,實(shí)現(xiàn)了AlexNet的第一層卷積運(yùn)算加速。 技術(shù)特點(diǎn) : 采用了Verilog語(yǔ)言進(jìn)行編程,與PCIe接口相集成,可以直接插入到
    的頭像 發(fā)表于 10-25 09:22 ?240次閱讀

    接口芯片的編程模型方法是什么

    接口芯片的編程模型方法是一個(gè)復(fù)雜的話題,涉及到硬件設(shè)計(jì)、軟件編程、通信協(xié)議等多個(gè)方面。 1. 接口芯片概述 接口芯片是用來(lái)連接不同硬件設(shè)備或
    的頭像 發(fā)表于 09-30 11:30 ?237次閱讀

    如何理解socket編程接口

    Socket編程接口是一種網(wǎng)絡(luò)編程的基本概念,它提供了一種在不同計(jì)算機(jī)之間進(jìn)行通信的方法。 Socket編程接口的基本概念 1.1 Sock
    的頭像 發(fā)表于 08-16 10:48 ?444次閱讀

    按照這樣學(xué)習(xí)C語(yǔ)言,成為卷王不是夢(mèng)!

    在計(jì)算機(jī)編程領(lǐng)域,C語(yǔ)言被譽(yù)為一種強(qiáng)大而靈活的編程語(yǔ)言,掌握好C語(yǔ)言不僅可以讓你輕松駕馭各種編程任務(wù),還能夠?yàn)槟愕穆殬I(yè)生涯打下堅(jiān)實(shí)的基礎(chǔ)。但要成為C語(yǔ)言的“卷王”,需要一定的學(xué)習(xí)方法和
    的頭像 發(fā)表于 07-06 08:04 ?327次閱讀
    按照這樣<b class='flag-5'>學(xué)習(xí)</b>C語(yǔ)言,成為卷王不是夢(mèng)!

    機(jī)器學(xué)習(xí)在數(shù)據(jù)分析中的應(yīng)用

    隨著大數(shù)據(jù)時(shí)代的到來(lái),數(shù)據(jù)量的爆炸性增長(zhǎng)對(duì)數(shù)據(jù)分析提出了更高的要求。機(jī)器學(xué)習(xí)作為一種強(qiáng)大的工具,通過(guò)訓(xùn)練模型從數(shù)據(jù)中學(xué)習(xí)規(guī)律,為企業(yè)和組織提供了更高效、更準(zhǔn)確的數(shù)據(jù)分析能力。本文將深入
    的頭像 發(fā)表于 07-02 11:22 ?643次閱讀

    帶開(kāi)放式電容器輸出的十六進(jìn)制逆變器SN54LS05 SN54S05 SN7405 SN74LS05 SN74S05數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《帶開(kāi)放式電容器輸出的十六進(jìn)制逆變器SN54LS05 SN54S05 SN7405 SN74LS05 SN74S05數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-09 11:12 ?0次下載
    帶開(kāi)放式電容器輸出的十六進(jìn)制逆變器SN54LS<b class='flag-5'>05</b> SN54S<b class='flag-5'>05</b> SN7405 SN74LS<b class='flag-5'>05</b> SN74S<b class='flag-5'>05</b>數(shù)據(jù)表

    MAVLink在應(yīng)用編程中的編程原理和思路

    嵌入式開(kāi)發(fā)過(guò)程中,UART、 CAN、 USB等通信基本離不開(kāi)通信協(xié)議。 下面給大家分享一種通信協(xié)議(MAVLink)在應(yīng)用編程中的編程原理和思路。
    發(fā)表于 03-08 12:45 ?934次閱讀
    <b class='flag-5'>MAVLink</b>在應(yīng)用<b class='flag-5'>編程</b>中的<b class='flag-5'>編程</b>原理和思路

    淺析MCU通信、存儲(chǔ)常用的簡(jiǎn)單校驗(yàn)算法

    UART有一個(gè)奇偶校驗(yàn),CAN通信有CRC校驗(yàn)。Modbus、MAVlink、USB等通信協(xié)議也有校驗(yàn)信息。
    的頭像 發(fā)表于 03-07 10:56 ?526次閱讀
    淺析MCU通信、存儲(chǔ)常用的簡(jiǎn)單校驗(yàn)算法

    全志D1s開(kāi)發(fā)板裸機(jī)開(kāi)發(fā)之壞境搭建

    環(huán)境搭建 開(kāi)發(fā)板介紹 張?zhí)祜w老師編寫的《RISC-V體系結(jié)構(gòu)編程與實(shí)踐》,里面的源碼是基于 QEMU 模擬器的,可以認(rèn)為它是一款虛擬的開(kāi)發(fā)板。如果需要在真實(shí)開(kāi)發(fā)板上學(xué)習(xí),可以使用百問(wèn)網(wǎng)
    發(fā)表于 03-06 13:54

    verilog與其他編程語(yǔ)言的接口機(jī)制

    Verilog是一種硬件描述語(yǔ)言,用于描述數(shù)字電路的行為和結(jié)構(gòu)。與其他編程語(yǔ)言相比,Verilog具有與硬件緊密結(jié)合的特點(diǎn),因此其接口機(jī)制也有一些與眾不同之處。本文將詳細(xì)介紹Verilog與其他編程
    的頭像 發(fā)表于 02-23 10:22 ?713次閱讀