在無(wú)人機(jī)飛控固件開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要實(shí)時(shí)輸出一些調(diào)試信息(如一些變量的值、狀態(tài)機(jī)切換提示等),在APM固件中有如下兩種常用的輸出調(diào)試信息的方法:
一、使用Mavlink的“STATUS TEXT”幀來(lái)發(fā)送調(diào)試信息
這個(gè)Mavlink幀的ID號(hào)為253,內(nèi)部包含了50個(gè)字節(jié)的定長(zhǎng)數(shù)據(jù)段,也就是說(shuō)我們使用這個(gè)幀最多一次只能輸出50個(gè)字節(jié)的字符。其調(diào)用方法如下:
gcs().send_text(MAV_SEVERITY_CRITICAL, "NFCY test! %.2f", 1.234f);
其中第一個(gè)參數(shù)定義的是要發(fā)送的數(shù)據(jù)的緊急程度,如果定義的是“MAV_SEVERITY_CRITICAL”,則要顯示的信息會(huì)同時(shí)在MissionPlanner的姿態(tài)窗口和消息窗口中顯示。這個(gè)函數(shù)后面兩個(gè)參數(shù)的用法與C語(yǔ)言中的printf是一樣的。
最終的顯示效果如下:
二、使用“hal.console->printf”來(lái)發(fā)送調(diào)試信息
相對(duì)于第一種方法,這種方法在效率和靈活性上更接近C語(yǔ)言的printf,其輸出直接發(fā)送到飛控USB虛擬出的串口上,因此一般直接用串口調(diào)試助手查看其輸出。其用法示例如下:
hal.console- >printf("\\n\\n NFCY test! %.2f \\n\\n", 1.234f)
最終的顯示效果如下:
由上圖可知,這種輸出方法更接近平常我們用的單片機(jī)串口調(diào)試方法,但是由于默認(rèn)情況下USB接口虛擬出的串口同時(shí)也輸出Mavlink幀(至少有1Hz的Mavlink心跳幀),二者混在一起,看起來(lái)比較麻煩。不過(guò)可以通過(guò)關(guān)閉Mavlink輸出來(lái)解決。
以上就是APM固件的兩種飛控調(diào)試信息的輸出方法,希望對(duì)大家有所幫助。
-
調(diào)試
+關(guān)注
關(guān)注
7文章
618瀏覽量
35219 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7634瀏覽量
143923 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
495瀏覽量
28655 -
無(wú)人機(jī)
+關(guān)注
關(guān)注
234文章
11031瀏覽量
191273 -
APM
+關(guān)注
關(guān)注
1文章
72瀏覽量
13664
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式開(kāi)發(fā)輸出調(diào)試信息的幾種方法

飛控疑難雜癥解決方法匯總
怎么實(shí)現(xiàn)stm32串口2來(lái)輸出調(diào)試信息?
有哪幾種方法可以實(shí)現(xiàn)STM32輸出調(diào)試信息呢
怎樣使用STM32CubeMX串口輸出調(diào)試信息呢
介紹兩種goahead的調(diào)試手段
嵌入式設(shè)備是怎樣通過(guò)semihost機(jī)制輸出調(diào)試信息到調(diào)試主機(jī)的
如何利用設(shè)置斷點(diǎn)和輸出日志這兩種方法去調(diào)試HarmonyOS App呢
嵌入式開(kāi)發(fā)為什么需要輸出調(diào)試信息?
兩種遠(yuǎn)程調(diào)試嵌入式系統(tǒng)的介紹

英創(chuàng)信息技術(shù)ARM9主板進(jìn)行連接調(diào)試的兩種方法
Linux開(kāi)發(fā)中如何同時(shí)輸出調(diào)試信息到終端及文件

評(píng)論