女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(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寫(xiě)在前面

如果你前面兩篇文章掌握了,說(shuō)明你已經(jīng)入門(mén)了。本文帶你掌握如何在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、描述(注釋?zhuān)┮约案黜?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)的名稱(chēng)。

4.

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

5.

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

6.type=“uint8_t”

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

7.name = “type”

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

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)容有所差異,定義原理都類(lèi)似。枚舉包含:枚舉名稱(chēng),成員(元素)名稱(chēng),成員值等。

枚舉的定義就不詳細(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    瀏覽量

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

    關(guān)注

    1

    文章

    90

    瀏覽量

    14675
  • mavlink
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    2652
收藏 人收藏

    評(píng)論

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

    custom.c定義代碼無(wú)法自動(dòng)保存怎么解決?

    我在custom.c插入自定義代碼,當(dāng)我不保存就切換到其他文件時(shí),custom.c的自
    發(fā)表于 04-08 06:00

    如何使用UCANS32K146讀取MAVLINK

    /user-guides/autopilot/the-cube-module-overview 我想要UCANS32K146讀取飛控的所有診斷信息,被告知此信息是使用 MAVLINK 接口從飛控發(fā)送的。 是否有任何驅(qū)動(dòng)程序或示例代碼
    發(fā)表于 03-26 06:36

    A03-C1S12M(-1) A03-C1S12M(-1)

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)A03-C1S12M(-1)相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有A03-C1S12M(-1)的引腳圖、接線(xiàn)圖、封裝手冊(cè)、中文資料、英文資料,A03-C1S12M(-1)真值表,
    發(fā)表于 03-18 18:32
    A<b class='flag-5'>03-C</b>1S12M(-1) A<b class='flag-5'>03-C</b>1S12M(-1)

    創(chuàng)建了用于OpenVINO?推理的自定義C++和Python代碼,從C++代碼獲得的結(jié)果與Python代碼不同是為什么?

    創(chuàng)建了用于OpenVINO?推理的自定義 C++ 和 Python* 代碼。 在兩個(gè)推理過(guò)程中使用相同的圖像和模型。 從 C++ 代碼
    發(fā)表于 03-06 06:22

    STM32CubeMX用于STM32配置和初始化C代碼生成

    電子發(fā)燒友網(wǎng)站提供《STM32CubeMX用于STM32配置和初始化C代碼生成.pdf》資料免費(fèi)下載
    發(fā)表于 02-26 17:32 ?658次下載

    【ELF 2學(xué)習(xí)板試用】03 ASoC的Codec class

    ,便于后續(xù)代碼的開(kāi)發(fā)) 以elf2開(kāi)發(fā)板為例,codec為nau8822。codec nau8822的 snd_soc_component_driver定義如下 static const struct
    發(fā)表于 02-18 16:26

    單片機(jī)學(xué)習(xí)C51源代碼和Proteus仿真文件

    單片機(jī)學(xué)習(xí)C51源代碼和Proteus仿真文件.zip, 有各種例子
    發(fā)表于 02-10 13:46 ?1次下載

    Flexus X 實(shí)例 C#/.Net Core 結(jié)合(git 代碼管理、docker 自定義鏡像)快速發(fā)布部署 - 讓你的項(xiàng)目飛起來(lái)~

    與 Docker 容器化部署,實(shí)現(xiàn)代碼高效管理與無(wú)縫遷移。即刻行動(dòng),讓您的 Web 服務(wù)更加穩(wěn)定、高效,領(lǐng)跑數(shù)字化轉(zhuǎn)型之路! ???本實(shí)驗(yàn)深入演示了如何在 Ubuntu 環(huán)境,利用 Git 進(jìn)行版本控制管理
    的頭像 發(fā)表于 12-25 21:15 ?508次閱讀
    Flexus X 實(shí)例 <b class='flag-5'>C</b>#/.Net Core 結(jié)合(git <b class='flag-5'>代碼</b>管理、docker 自<b class='flag-5'>定義</b>鏡像)快速發(fā)布部署 - 讓你的項(xiàng)目飛起來(lái)~

    SRIO介紹及xilinx的vivado 2017.4中生成srio例程代碼解釋

    1. 概述 本文是用于記錄srio的學(xué)習(xí)情況,以及一些對(duì)xilinx的vivado 2017.4中生成srio例程代碼的解釋。 2. 參考文件 《pg007_srio_gen2》 3. SRIO協(xié)議
    的頭像 發(fā)表于 12-10 16:24 ?2345次閱讀
    SRIO介紹及xilinx的vivado 2017.4<b class='flag-5'>中生成</b>srio例程<b class='flag-5'>代碼</b>解釋

    如何自動(dòng)生成verilog代碼

    介紹幾種自動(dòng)生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?917次閱讀
    如何自動(dòng)<b class='flag-5'>生成</b>verilog<b class='flag-5'>代碼</b>

    代碼解析工具與自動(dòng)化流程圖生成解決方案

    ? 摘要:CasePlayer2是一款強(qiáng)大的源代碼解析工具,專(zhuān)門(mén)設(shè)計(jì)用于分析ANSI C、C、C++以及匯編語(yǔ)言源代碼,
    的頭像 發(fā)表于 10-10 13:40 ?765次閱讀

    深度學(xué)習(xí)的無(wú)監(jiān)督學(xué)習(xí)方法綜述

    應(yīng)用往往難以實(shí)現(xiàn)。因此,無(wú)監(jiān)督學(xué)習(xí)在深度學(xué)習(xí)扮演著越來(lái)越重要的角色。本文旨在綜述深度學(xué)習(xí)
    的頭像 發(fā)表于 07-09 10:50 ?1545次閱讀

    生成式AI的定義和特征

    行為,生成全新的、具有實(shí)際意義的數(shù)據(jù)或內(nèi)容。這種技術(shù)已經(jīng)在自然語(yǔ)言處理、圖像生成、音頻合成等多個(gè)領(lǐng)域展現(xiàn)出巨大的潛力和應(yīng)用價(jià)值。本文將詳細(xì)探討生成式AI的定義、特征類(lèi),
    的頭像 發(fā)表于 07-05 17:33 ?2442次閱讀

    workbench生成代碼出現(xiàn)fatal error stm32cubemx5.2.0.analyticsserver.xml:1:1:premature end of file什么原因?

    st workbench生成代碼出現(xiàn)fatal error stm32cubemx5.2.0.analyticsserver.xml:1:1:premature end of file什么原因
    發(fā)表于 07-03 08:14

    探討AI編寫(xiě)代碼技術(shù),以及提高代碼質(zhì)量的關(guān)鍵:靜態(tài)代碼分析工具Perforce Helix QAC &amp; Klocwork

    的過(guò)程,并回答這個(gè)問(wèn)題: AI會(huì)取代程序員嗎? 什么是AI代碼生成? 近年來(lái),生成式AI的應(yīng)用呈爆炸式增長(zhǎng),這主要因?yàn)楝F(xiàn)在有足夠的計(jì)算能力來(lái)運(yùn)行深度學(xué)習(xí)算法,而且訓(xùn)練機(jī)器
    的頭像 發(fā)表于 06-05 14:10 ?709次閱讀