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() 即可。

相关推荐
kokunka7 小时前
【源码+注释】纯C++小游戏开发之射击小球游戏
开发语言·c++·游戏
John_ToDebug9 小时前
浏览器内核崩溃深度分析:从 MiniDump 堆栈到 BindOnce UAF 机制(未完待续...)
c++·chrome·windows
txinyu的博客10 小时前
解析muduo源码之 SocketsOps.h & SocketsOps.cc
c++
ctyshr11 小时前
C++编译期数学计算
开发语言·c++·算法
努力写代码的熊大11 小时前
c++异常和智能指针
java·开发语言·c++
John_ToDebug11 小时前
WebContent 与 WebView:深入解析浏览器渲染架构的双层设计
c++·chrome·ui
千秋乐。11 小时前
C++-string
开发语言·c++
孞㐑¥11 小时前
算法—队列+宽搜(bfs)+堆
开发语言·c++·经验分享·笔记·算法
yufuu9811 小时前
并行算法在STL中的应用
开发语言·c++·算法
charlie11451419112 小时前
嵌入式C++教程——ETL(Embedded Template Library)
开发语言·c++·笔记·学习·嵌入式·etl