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

相关推荐
CHHH_HHH6 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11
十五年专注C++开发6 小时前
fatal error C1189: #error: WinSock.h has already been included 的解决方案
c++·socket·boost
旖-旎9 小时前
《LeetCode 53 最大子数组和 || LeetCode 918 环形子数组的最大和》
c++·算法·leetcode·动态规划
c2385610 小时前
《动态规划:从“傻傻穷举”到“过目不忘”的修仙之路》
c++·算法·动态规划
王老师青少年编程11 小时前
csp信奥赛C++高频考点专项训练:【二分答案】案例2:木材加工
c++·二分答案·csp·高频考点·信奥赛·木材加工
aaPIXa62212 小时前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
Augustzero12 小时前
`co_await` 按下暂停键之后:从零看懂 C++20 协程
c++·后端
知无不研13 小时前
c语言和c++中的静态关键字
开发语言·c++·静态关键字
思麟呀13 小时前
在C++基础上理解CSharp-7
java·jvm·c++·c#
2601_9498180913 小时前
Vector从入门到应用(C++ STL动态数组万字全解
开发语言·c++