PSDK如何获得电池的充电次数健康度及自放电天数?

Completed

Comments

7 comments

  • DJI Developer Support
    尊敬的开发者, 您好,感谢您联系DJI 大疆创新。 T_DjiFcSubscriptionSingleBatteryState结构体里面包含有maxCycleLimit最大循环次数,您提到是否指已循环次数,很抱歉,这个是没有的。 另外请问下健康度您具体是想要什么参数信息呢?自放电天数也是没有接口可以获取的。 感谢您对大疆产品的支持!祝您一切顺利! Best Regards, DJI 大疆创新SDK技术支持
    0
    Comment actions Permalink
  • kf

    谢谢您的回复,我想获取的健康度是那种类似百分比的数字。

    另,在编码过程中发现DjiFcSubscription_SubscribeTopic订阅BATTERY_SINGLE_INFO_INDEX2(1)时,由于当时没有连接无人机,我是把初始化部分注释掉的。但在各项订阅中,这两个电池电量信息都给我返回DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS,

     
    其他的比如速度、融合位置、四元数等则返回236。
     
    代码如下:
     
    djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION,
                                                      DJI_DATA_SUBSCRIPTION_TOPIC_10_HZ,
                                                      NULL);
        if (DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS != djiStat) {
            printf("无人机融合相对地面高度消息订阅失败\t\n");
        } else {
            printf("无人机融合相对地面高度消息订阅成功\t\n");
        }      

        djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_BATTERY_SINGLE_INFO_INDEX1, DJI_DATA_SUBSCRIPTION_TOPIC_50_HZ,
                                                   NULL);
        if (DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS != djiStat) {
            printf("电池1消息订阅失败\t\n");
        } else {
            printf("电池1消息订阅成功\t\n");
        }    djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_BATTERY_SINGLE_INFO_INDEX2, DJI_DATA_SUBSCRIPTION_TOPIC_50_HZ,
                                                   NULL);
        if (DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS != djiStat) {
            printf("电池2消息订阅失败\t\n");
        } else {
            printf("电池2消息订阅成功\t\n");
        }
        // djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_50_HZ,
                                                //    DjiTest_FcSubscriptionReceiveQuaternionCallback);
        djiStat = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_50_HZ,
                                                   NULL);
        if (DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS != djiStat) {
            printf("四元数消息订阅失败\t\n");
        } else {
            printf("四元数消息订阅成功\t\n");
        }
     
    ======================================
    输出消息如下:
    无人机飞行状态消息订阅失败
    无人机融合相对地面高度消息订阅失败
    电池1消息订阅成功
    电池2消息订阅成功
    四元数消息订阅失败
    融合位置坐标消息订阅失败
    速度消息订阅失败
    gps位置消息订阅失败
    gps详细消息订阅失败
    按任意键启动线程
     
    ===========================================
    不知道为什么。
     
     
    0
    Comment actions Permalink
  • DJI Developer Support
    尊敬的开发者, 您好,感谢您联系DJI 大疆创新。 >我想获取的健康度是那种类似百分比的数字。 请问您是指类似于电池寿命之类的信息是吗?我们可能要确认下这部分是否有提供。 订阅失败的话可能与您设置的订阅频率相关,您可以参照以下表格设置您机型对应的频率,您也可以把错误码打出来,可以看下具体是什么原因: https://developer.dji.com/doc/payload-sdk-tutorial/cn/function-set/basic-function/info-management.html 感谢您对大疆产品的支持!祝您一切顺利! Best Regards, DJI 大疆创新SDK技术支持
    0
    Comment actions Permalink
  • kf

    哦,我可能没说清楚:由于我当时是在测这一段代码,所以没有连接无人机,也没有做init初始化,所以那些显示订阅失败才是正常的,但是订阅电池1、2的信息时却给我反馈返回值是0,这引起了我的注意。

    0
    Comment actions Permalink
  • DJI Developer Support
    尊敬的开发者, 您好,感谢您联系DJI 大疆创新。 请问下您使用的机型和固件版本是?另外方便给我们看下您的终端输出吗? 感谢您对大疆产品的支持!祝您一切顺利! Best Regards, DJI 大疆创新SDK技术支持
    0
    Comment actions Permalink
  • kf

    机型是Matrice 350 RTK,manifold2。

    0
    Comment actions Permalink
  • DJI Developer Support
    尊敬的开发者, 您好,感谢您联系DJI 大疆创新。 好的,我们先确认下DJI_FC_SUBSCRIPTION_TOPIC_BATTERY_SINGLE_INFO_INDEX1和DJI_FC_SUBSCRIPTION_TOPIC_BATTERY_SINGLE_INFO_INDEX2订阅返回值的情况。 感谢您对大疆产品的支持!祝您一切顺利! Best Regards, DJI 大疆创新SDK技术支持
    0
    Comment actions Permalink

Please sign in to leave a comment.