Dji 订阅

步骤:

  1. 初始化飞控订阅
    初始化飞控订阅模块
cpp 复制代码
DjiFcSubscription_Init()
  1. 订阅主题
    订阅主题函数
cpp 复制代码
DjiFcSubscription_SubscribeTopic()

订阅四元数,可以使用回调函数,DJI_DATA_SUBSCRIPTION_TOPIC_50_HZ表示订阅的频率。

cpp 复制代码
djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_50_HZ, 
																DjiTest_FcSubscriptionReceiveQuaternionCallback);

订阅速度

cpp 复制代码
djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY, 
											DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ,  
											NULL);    
  1. 获得订阅数据信息
cpp 复制代码
djiStat =DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY,     
                                                 (uint8_t *) &velocity,
                                                 sizeof(T_DjiFcSubscriptionVelocity),
                                                 &timestamp);

Velocity:速度信息保存

cpp 复制代码
typedef struct Vector3f{
    dji_f32_t x; /*!< X-coordinate of the vector. */
    dji_f32_t y; /*!< Y-coordinate of the vector. */
    dji_f32_t z; /*!< Z-coordinate of the vector. */
} T_DjiVector3f;

typedef struct Velocity {
    T_DjiVector3f data;
    uint8_t health: 1;
    uint8_t reserve: 7;
} T_DjiFcSubscriptionVelocity;
  1. 取消订阅
cpp 复制代码
// 取消四元数订阅
djiStat = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION);
// 取消速度订阅
djiStat = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY);
// 取消GPS订阅
djiStat = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION);

这是单个取消订阅的函数。

只能针对某个特定的数据主题

适用于需要部分取消订阅的场景,而不是全部清空。

  1. 反初始化飞控订阅模块
cpp 复制代码
djiStat = DjiFcSubscription_DeInit();

这是一个全局去初始化函数,作用是取消所有订阅的飞控数据,并释放 DjiFcSubscription 相关的资源。

一般在程序退出或者模块不再使用时调用。

它比单独取消某些主题的订阅更彻底,相当于一键清空所有数据流。

整个飞控订阅模块不再使用,直接调用 DjiFcSubscription_DeInit() 即可。

相关推荐
I_belong_to_jesus7 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Rabitebla9 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
码客-ygluu14 小时前
一个通用游戏数据服务器
c++·架构
another heaven14 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
YLCHUP17 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
xiaoye-duck17 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
思麟呀18 小时前
背包DP(01背包+完全背包)
c++·算法
旖旎夜光19 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
ShineWinsu19 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
俊俊几年的21 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c