哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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í)之路03 _XML中定義MSG并生成C代碼

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-07 16:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1寫在前面

如果你前面兩篇文章掌握了,說(shuō)明你已經(jīng)入門了。本文帶你掌握如何在XML文件中定義Message(MSG消息)并生成C代碼。

本文主要內(nèi)容:

如何在XML文件中定義Message(消息)

如何通過(guò)生成器工具生成MAVLink C代碼

提示:本文將結(jié)合上一篇文章提供下載的“MAVlink代碼生成工具包”來(lái)講述。

為了方便大家平時(shí)公交、地鐵、外出辦事也能用手機(jī)隨時(shí)隨地查看該教程,本文章收錄于【MAVLink學(xué)習(xí)之路】,在微信公眾號(hào)回復(fù)【MAVLink學(xué)習(xí)之路】即可查看。

2

XML文件中定義MSG

2.1 關(guān)于MSG

MAVLink的MSG消息定義在XML文件中,通過(guò)生成器工具(Mavenerate或Mavgen)生成MAVLink C代碼;

在MAVLink協(xié)議中,每一條MSG消息都具有一個(gè)ID,且ID具有唯一性。MSG消息ID其實(shí)就是對(duì)應(yīng)協(xié)議格式中msgid,如下圖:

簡(jiǎn)單來(lái)說(shuō):在xml中定義一條Message消息,通過(guò)生成器工具就能生成該Message對(duì)應(yīng)的C代碼(一條Message也可以理解成一條通信命令)。

提示:

在MAVLink V1版本中,消息ID有效數(shù)字的范圍為0到255。

其中0到149為公共消息ID(飛控系統(tǒng)共有消息,一般不建議用于自定義)。而150到240為用于自定義消息的ID范圍。

比如,打開(kāi)前面下載的工具包消息定義的文件夾(如下圖),可以看到:common.xml文件主要是一些公共消息ID范圍為:0到149。而其它xml文件是針對(duì)不同系統(tǒng)定義的消息,主要集中在150到240之間。

2.2 MSG的定義方法

MAVLink的MSG消息定義在XML文件中,所以遵循XML語(yǔ)法規(guī)則。語(yǔ)法很簡(jiǎn)單(只需要記住部分常用的就行),我們可以參考MAVLink定義好的xml文件。

解壓上一篇文章下載“MAVlink代碼生成工具包”,打開(kāi)(路徑MAVLink message_definitions v1.0下)common.xml文件,我們以“心跳”為例:

從上圖可以看出:“心跳”消息包含:消息ID、描述(注釋)以及各項(xiàng)參數(shù)(可以理解為一個(gè)函數(shù),及函數(shù)的參數(shù))。

1.標(biāo)簽

每條消息都被定義在這樣一個(gè)消息標(biāo)簽內(nèi)。

2.id=“0”

表示此消息的id或index編號(hào)為0。

3.name=“HEARTBEAT”

該ID編號(hào)對(duì)應(yīng)的名稱。

4.

對(duì)該消息的描述,是一個(gè)非常重要,但可選的領(lǐng)域(意思是可以不用定義),可以理解為代碼的注釋。

5.

對(duì)消息的一個(gè)字段進(jìn)行定義,它類似于C語(yǔ)言中的一個(gè)變量,可以是8,16,32和64位長(zhǎng)度(有符號(hào)或無(wú)符號(hào)),以及浮點(diǎn)類型等。

6.type=“uint8_t”

將此字段定義為8位無(wú)符號(hào)整數(shù)。數(shù)組的定義如下:type=“uint8_t[5]”??梢岳斫鉃橐粋€(gè)函數(shù)參數(shù)的數(shù)據(jù)類型。

7.name = “type”

該字段的名稱,可以理解為一個(gè)函數(shù)參數(shù)的名稱。

8.Type of the MAV

字段說(shuō)明,可以理解為函數(shù)參數(shù)的注釋。

上面文字描述可能理解起來(lái)比較困難,看下圖心跳消息對(duì)應(yīng)生成的C代碼:

以上舉例,只是提供其中一個(gè)函數(shù)接口,其實(shí)還會(huì)生成更多與該消息相關(guān)的接口、結(jié)構(gòu)體等。

2.3 enum的定義方法

上面2.2節(jié)在xml中定義消息明白了,這節(jié)enum(枚舉)的定義就很容易理解了,原理一樣。

枚舉和消息只是內(nèi)容有所差異,定義原理都類似。枚舉包含:枚舉名稱,成員(元素)名稱,成員值等。

枚舉的定義就不詳細(xì)描述出來(lái),提供枚舉xml定義和生成C代碼,相信你一看就能明白。

xml中定義的MAV_AUTOPILOT:

生成的C代碼:

提示:

關(guān)于消息定義,更多的內(nèi)容可以參看:

http://qgroundcontrol.org/mavlink/create_new_mavlink_message

3

通過(guò)生成器工具生成MAVLink C代碼

上面第二章節(jié)在xml文件中定義好了MSG消息和enum枚舉,那么,就需要通過(guò)生成器工具生成我們最終需要的代碼(我主要講述生成C代碼)。

MAVLink項(xiàng)目提供有生成器有兩種:Mavgenerate(GUI)和Mavgen(命令行);

使用生成器工具前提需要搭建好環(huán)境,請(qǐng)參考:MAVLink學(xué)習(xí)之路02_工具下載、環(huán)境搭建

3.1 Mavgenerate生成C代碼

這個(gè)工具使用方法很簡(jiǎn)單,環(huán)境搭建好之后,解壓下載工具包,在當(dāng)前路徑下輸入命令“python mavgenerate.py”,或者雙擊mavgenerate.py即可打開(kāi):

3.2 Mavgen生成C代碼

Mavgen生成器是一個(gè)通過(guò)命令實(shí)現(xiàn)的工具,命令很簡(jiǎn)單,比如:python -m pymavlink.tools.mavgen --lang=C --wire-protocol=1.0 --output=generated/include/mavlink/v1.0 message_definitions/v1.0/common.xml 命令的具體描述請(qǐng)看下圖:

3.3 關(guān)于生成器幾點(diǎn)提示

1.Mavgen支持的語(yǔ)言及版本

2.路徑

因?yàn)槊钚猩善髦С窒鄬?duì)路徑,建議將xml文件拷貝到如下路徑:MAVLinkmessage_definitionsv1.0

3.命令語(yǔ)法和選項(xiàng)說(shuō)明

初學(xué)者不用深入理解,只需要知道如何生成C代碼即可(參考我上面提供的哪一條命令)。

關(guān)于生成器工具更多的內(nèi)容可以參考:

https://mavlink.io/en/getting_started/generate_libraries.html

聲明:本文內(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)投訴
  • 生成器
    +關(guān)注

    關(guān)注

    7

    文章

    322

    瀏覽量

    22791
  • C代碼
    +關(guān)注

    關(guān)注

    1

    文章

    90

    瀏覽量

    15227
  • mavlink
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2777
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在SE050C1中生成 ECC NIST p-521 密鑰對(duì)遇到的疑問(wèn)求解

    我正在嘗試使用即插即用中間件在 ESP32 的SE050C1中生成 NIST p-521 密鑰對(duì)。 我嘗試打開(kāi)一個(gè)安全會(huì)話嘗試生成密鑰,但我未能打開(kāi)一個(gè)安全會(huì)話 SCP
    發(fā)表于 04-20 06:50

    Onsemi NTLUS030N03C MOSFET 深度解析

    Onsemi NTLUS030N03C MOSFET 深度解析 在電子設(shè)計(jì)領(lǐng)域,MOSFET 作為關(guān)鍵的功率開(kāi)關(guān)元件,其性能和特性對(duì)電路設(shè)計(jì)的成敗起著至關(guān)重要的作用。今天我們來(lái)深入了解 Onsemi
    的頭像 發(fā)表于 04-14 09:25 ?389次閱讀

    onsemi NVMFS4C03N 和 NVMFS4C303N MOSFET 深度解析

    onsemi NVMFS4C03N 和 NVMFS4C303N MOSFET 深度解析 在電子設(shè)計(jì)領(lǐng)域,MOSFET 作為關(guān)鍵的功率器件,對(duì)于電路的性能和效率起著至關(guān)重要的作用。今天我們來(lái)深入探討
    的頭像 發(fā)表于 04-09 16:25 ?193次閱讀

    驅(qū)動(dòng)之路#20:Pinctrl 在手,引腳復(fù)用很順手

    ?歡迎關(guān)注,每周更新!? 本合集分享的是,我當(dāng)初學(xué)習(xí)Linux驅(qū)動(dòng)的來(lái)時(shí)路——《《驅(qū)動(dòng)之路》開(kāi)篇:自序pinctrl節(jié)點(diǎn)下(rk3576-pinctrl.dtsi),定義具體的引腳配置(復(fù)用
    的頭像 發(fā)表于 04-07 21:18 ?459次閱讀
    驅(qū)動(dòng)<b class='flag-5'>之路</b>#20:Pinctrl 在手,引腳復(fù)用很順手

    c語(yǔ)言中的代碼優(yōu)化

    變量。固然,在定義變量后不要超過(guò)變量的做用范圍,若是超過(guò)變量的范圍賦值,C編譯器并不報(bào)錯(cuò),但程序運(yùn)行結(jié)果卻錯(cuò)了,并且這樣的錯(cuò)誤很難發(fā)現(xiàn)。 在ICCAVR,能夠在Options設(shè)定
    發(fā)表于 01-12 09:45

    深入解析HVMA03F40C - ST10S Flyback Transformer

    深入解析HVMA03F40C - ST10S Flyback Transformer 引言 在電子工程領(lǐng)域,變壓器是眾多電路不可或缺的關(guān)鍵組件。今天,我們將詳細(xì)探討B(tài)ourns公司
    的頭像 發(fā)表于 12-22 16:50 ?628次閱讀

    C語(yǔ)言宏拼接運(yùn)算符典型使用

    C語(yǔ)言中,##運(yùn)算符(稱為[size=16.002px]標(biāo)記拼接運(yùn)算符)用于宏定義中將兩個(gè)標(biāo)記(token)拼接成一個(gè)新的標(biāo)記。它在預(yù)處理階段處理,常用于動(dòng)態(tài)生成變量名、函數(shù)名或類型名,以提高
    發(fā)表于 11-20 08:27

    使用Simulink自動(dòng)生成浮點(diǎn)運(yùn)算HDL代碼(Part 1)

    封裝在模塊,方便使用HDL Workflow Advisor Ctrl + E 勾選使用浮點(diǎn) 右擊模塊啟動(dòng)HDL Workflow Advisor 按照步驟即可生成HDL
    發(fā)表于 10-22 06:48

    使用 LinkBoy 將程序?qū)С鰹?C 語(yǔ)言代碼燒錄至 Arduino ESP32 開(kāi)發(fā)板

    以下是使用 LinkBoy 將程序?qū)С鰹?C 語(yǔ)言代碼燒錄至 Arduino ESP32 開(kāi)發(fā)板的詳細(xì)步驟指南: 一、準(zhǔn)備工作 ? 硬件需求: 項(xiàng)目 要求 開(kāi)發(fā)板 Arduino ESP32(支持
    發(fā)表于 10-16 12:41

    HarmonyOSAI編程編輯區(qū)代碼生成

    展示本輪生成代碼內(nèi)容,通過(guò)不同顏色體現(xiàn)與當(dāng)前代碼的對(duì)比差異。 綠色區(qū)域:新生成代碼內(nèi)容。
    發(fā)表于 08-20 15:24

    HarmonyOS AI輔助編程工具(CodeGenie)UI生成

    UI Generator基于BitFun Platform AI能力平臺(tái),用于快速生成可編譯、可運(yùn)行的HarmonyOS UI工程,支持基于已有UI布局文件(XML),快速生成
    發(fā)表于 07-10 11:51

    機(jī)智云配網(wǎng)教程 第二期:生成MCU代碼包與調(diào)試

    在上一期,我們介紹了機(jī)智云GAgent固件的燒錄過(guò)程,并在測(cè)試完成了機(jī)智云開(kāi)發(fā)者賬號(hào)的注冊(cè)及數(shù)據(jù)點(diǎn)的創(chuàng)建。接下來(lái),我將繼續(xù)為大家講解如何生成MCU代碼包。數(shù)據(jù)點(diǎn)創(chuàng)建登錄機(jī)智云開(kāi)發(fā)者
    的頭像 發(fā)表于 06-28 10:02 ?1023次閱讀
    機(jī)智云配網(wǎng)教程 第二期:<b class='flag-5'>生成</b>MCU<b class='flag-5'>代碼</b>包與調(diào)試

    XML介紹

    XML(可擴(kuò)展標(biāo)記語(yǔ)言)是一種用于描述數(shù)據(jù)的標(biāo)記語(yǔ)言,旨在提供一種通用的方式來(lái)傳輸和存儲(chǔ)數(shù)據(jù),特別是Web應(yīng)用程序中經(jīng)常使用的數(shù)據(jù)。XML并不預(yù)定義標(biāo)記。因此,XML更加靈活,并且可以
    發(fā)表于 06-23 08:03

    用CubeMX生成代碼時(shí)會(huì)將main.c文件的漢字變成亂碼,怎么解決?

    使用CubeMX生成代碼時(shí),經(jīng)常會(huì)遇到原main.c文件的漢字全部變成亂碼,如下圖所示: 將這些亂碼字符重新修改后,只要再次用CubeMX生成
    發(fā)表于 06-23 08:02

    如何在不使用USB控制器的情況下對(duì)CYPD2119-24LQXI自定義配置進(jìn)行編程?

    我想要編程(如果可能的話通過(guò) SWD)一個(gè)自定義但相當(dāng)基本的“Type-C 到 DP”AltMode 適配器功能,到安裝在自定義 PCB 上的CYPD2119-24LQXI設(shè)備上。 我已經(jīng)下載了
    發(fā)表于 05-13 06:35
    怀集县| 平舆县| 彭州市| 鲁山县| 新龙县| 美姑县| 大理市| 神木县| 宜川县| 台中县| 桃园县| 江华| 太原市| 车险| 吉木乃县| 肥东县| 营山县| 桃园县| 秀山| 平远县| 晋州市| 霍城县| 九寨沟县| 遂昌县| 蕲春县| 乌鲁木齐县| 高雄市| 华安县| 临武县| 和田市| 女性| 咸丰县| 从化市| 拜泉县| 砀山县| 乐业县| 南安市| 琼中| 泉州市| 蕲春县| 贵港市|