查看: 1396|回复: 0

APM飞控固件的两种输出调试信息的方法

[复制链接]

351

主题

385

帖子

1091

积分

金牌飞友

Rank: 6Rank: 6

积分
1091
飞币
699
注册时间
2017-7-8
发表于 2023-3-10 08:08:56 | 显示全部楼层 |阅读模式
在无人机飞控固件开发过程中,我们经常需要实时输出一些调试信息(如一些变量的值、状态机切换提示等),在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\nNFCYtest! %.2f \n\n", 1.234f)
    最终的显示效果如下:

   

    由上图可知,这种输出方法更接近平常我们用的单片机串口调试方法,但是由于默认情况下USB接口虚拟出的串口同时也输出Mavlink帧(至少有1Hz的Mavlink心跳帧),二者混在一起,看起来比较麻烦。不过可以通过关闭Mavlink输出来解决。

    以上就是APM固件的两种飞控调试信息的输出方法,希望对大家有所帮助。
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表