在無人機飛控固件開發過程中,我們經常需要實時輸出一些調試信息(如一些變量的值、狀態機切換提示等),在APM固件中有如下兩種常用的輸出調試信息的方法:
一、使用Mavlink的“STATUS TEXT”幀來發送調試信息
這個Mavlink幀的ID號為253,內部包含了50個字節的定長數據段,也就是說我們使用這個幀最多一次只能輸出50個字節的字符。其調用方法如下:
gcs().send_text(MAV_SEVERITY_CRITICAL, "NFCY test! %.2f", 1.234f);
其中第一個參數定義的是要發送的數據的緊急程度,如果定義的是“MAV_SEVERITY_CRITICAL”,則要顯示的信息會同時在MissionPlanner的姿態窗口和消息窗口中顯示。這個函數后面兩個參數的用法與C語言中的printf是一樣的。
最終的顯示效果如下:
二、使用“hal.console->printf”來發送調試信息
相對于第一種方法,這種方法在效率和靈活性上更接近C語言的printf,其輸出直接發送到飛控USB虛擬出的串口上,因此一般直接用串口調試助手查看其輸出。其用法示例如下:
hal.console- >printf("\\n\\n NFCY test! %.2f \\n\\n", 1.234f)
最終的顯示效果如下:
由上圖可知,這種輸出方法更接近平常我們用的單片機串口調試方法,但是由于默認情況下USB接口虛擬出的串口同時也輸出Mavlink幀(至少有1Hz的Mavlink心跳幀),二者混在一起,看起來比較麻煩。不過可以通過關閉Mavlink輸出來解決。
以上就是APM固件的兩種飛控調試信息的輸出方法,希望對大家有所幫助。
-
調試
+關注
關注
7文章
589瀏覽量
34065 -
C語言
+關注
關注
180文章
7614瀏覽量
137736 -
狀態機
+關注
關注
2文章
492瀏覽量
27652 -
無人機
+關注
關注
230文章
10515瀏覽量
182434 -
APM
+關注
關注
1文章
71瀏覽量
13046
發布評論請先 登錄
相關推薦
嵌入式開發輸出調試信息的幾種方法
![嵌入式開發<b class='flag-5'>輸出調試</b><b class='flag-5'>信息</b>的幾種<b class='flag-5'>方法</b>](https://file1.elecfans.com/web2/M00/8D/5F/wKgZomS57bmAASncAAA1-cPkSrw516.png)
如何利用設置斷點和輸出日志這兩種方法去調試HarmonyOS App呢
嵌入式開發為什么需要輸出調試信息?
兩種遠程調試嵌入式系統的介紹
![<b class='flag-5'>兩種</b>遠程<b class='flag-5'>調試</b>嵌入式系統的介紹](https://file1.elecfans.com//web2/M00/A7/42/wKgZomUMQ2KAE0yhAAAQucWCoXE051.gif)
評論