发送调试的字符串/浮点数对

在软件开发期间通常需要输出单个重要的数字。
这时候就要用到MAVLink的NAMED_VALUE包。

Files

这个教程的代码可以从这里获取:

配置一个调试发布(debug publication)只需要这个代码片段,先加入头文件:

  1. #include <uORB/uORB.h>
  2. #include <uORB/topics/debug_key_value.h>

然后公告(advertise)调试值主题 (不同发布名称(published names)一个公告就足够了).把这个放到主循环的前面:

  1. /* advertise debug value */
  2. struct debug_key_value_s dbg = { .key = "velx", .value = 0.0f };
  3. orb_advert_t pub_dbg = orb_advertise(ORB_ID(debug_key_value), &dbg);

在主循环里的发送甚至更简单:

  1. dbg.value = position[0];
  2. orb_publish(ORB_ID(debug_key_value), pub_dbg, &dbg);

注意: 多个调试消息必须在它们各自的发布之间有足够的时间以供Mavlink处理它们。这意味着代码必须在发布多个调试消息之间等待,或者在每个函数调用迭代上交替消息。

在QGroundControl中的结果实时绘图:

发送调试的值 - 图1