PS:最近又涉及该项目,增加部分没写内容,记录下详细步骤。

上一篇文章讲到了怎么使用DJI mobile SDK,这次主要讲解DJI mobile SDK和DJI onboard SDK联合开发。

android APP那端向DJI onborad SDK端发数据和收数据我就不做详细介绍了,调一个函数即可,无需封装和解析协议,如下:

if (mFlightController == null) {Aircraft mAircraft2 = (Aircraft) DJISDKManager.getInstance().getProduct();if (mAircraft2 != null)mFlightController = mAircraft2.getFlightController();}
FlightController.OnboardSDKDeviceDataCallback receiveCallback = new FlightController.OnboardSDKDeviceDataCallback() {@Overridepublic void onReceive(byte[] bytes) {}};
mFlightController.setOnboardSDKDeviceDataCallback(receiveCallback);
if (mFlightController != null) {mFlightController.sendDataToOnboardSDKDevice(bean.getActivateByte(), null);

下面详细介绍DJI onborad SDK的使用,以M600 PRO为例:

1、首先申请DJI onborad SDK KEY,地址:https://developer.dji.com/cn/user/apps/

得到 APP ID 和 APP key。

2、如果要使用DJI onborad SDK,必须开启无人机的API控制,下载大疆调参软件(For 经纬系列,其他自行在官网产品下载查找地址)https://dl.djicdn.com/downloads/dji_assistant/20190527/DJI+Assistant+2+For+Matrice+2.0.8.exe
DJI Assistant 2开启API控制,将串口波特率调为230400,其余如果不需要,可以选择不发送。

3、激活你的key,将你电脑的UART串口(USB串口)与飞控的API口连接如下图

只需要接123口即可,不需要接电。

然后在大疆GITHUB上下载QT的激活程序https://github.com/dji-sdk/Onboard-SDK/releases

用QT编译生成后执行,该过程飞机遥控器必须打开,并且连上平板的DJI GO和平板联网,然后这样就可以激活你的KEY,

激活成功你的板载设备以后无需联网就可以使用该KEY了。

QT可执行程序,点击下载

4、激活你的板载设备

将你的设备和飞控SDK的API串口连接,和上面一样,然后在你的设备程序中打开串口,波特率230400,第一步你先要获得

SDK的版本

大疆协议链接https://developer.dji.com/onboard-sdk/documentation/protocol-doc/open-protocol.html

你先要读懂大疆的协议,还有一点好像他的CRC检验不太一样,具体可以从QT工程的源码中获取该函数,如下

/*
typedef signed char int8_t;
typedef unsigned char   uint8_t;
typedef short  int16_t;
typedef unsigned short  uint16_t;
typedef int  int32_t;
typedef unsigned   uint32_t;
*///! CRC16_IBM standard, polygon code 0x8005
const uint16_t crc_tab16[] = {0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601,0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0,0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81,0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941,0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01,0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0,0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081,0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240,0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00,0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0,0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981,0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41,0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700,0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0,0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281,0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441,0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01,0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1,0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80,0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541,0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101,0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0,0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481,0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40,0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801,0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1,0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581,0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341,0x4100, 0x81c1, 0x8081, 0x4040
};//! CRC32_Common standard, polygon code 0x04C11DB7
const uint32_t crc_tab32[] = {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};const uint16_t CRC_INIT   = 0x3AA3;uint16_t crc16Update(uint16_t crc, uint8_t ch)
{uint16_t tmp;uint16_t msg;msg = 0x00ff & static_cast<uint16_t>(ch);tmp = crc ^ msg;crc = (crc >> 8) ^ crc_tab16[tmp & 0xff];return crc;
}uint32_t crc32Update(uint32_t crc, uint8_t ch)
{uint32_t tmp;uint32_t msg;msg = 0x000000ffL & static_cast<uint32_t>(ch);tmp = crc ^ msg;crc = (crc >> 8) ^ crc_tab32[tmp & 0xff];return crc;
}uint16_t crc16Calc(const uint8_t* pMsg, size_t nLen)
{size_t   i;uint16_t wCRC = CRC_INIT;for (i = 0; i < nLen; i++){wCRC = crc16Update(wCRC, pMsg[i]);}return wCRC;
}uint32_t crc32Calc(const uint8_t* pMsg, size_t nLen)
{size_t   i;uint32_t wCRC = CRC_INIT;for (i = 0; i < nLen; i++){wCRC = crc32Update(wCRC, pMsg[i]);}return wCRC;
}

下面是板载设备激活流程,因为我的key和你不太一样,具体需要自己去读协议

//查询固件版本                 
//回传固件版本,解析版本号                        
//激活 (必须带ID和固件版本)                   
//回传激活成功

如果激活成功后,你就可以和moblie SDK进行通信了,不过你的数据要进行打包封装。接收亦是如此。

好了,基本流程就是这样,主要还是协议那块要自己摸索下。

大疆无人机二次开发进阶-DJI mobile SDK和DJI onboard SDK联合开发行业应用项目相关推荐

  1. 大疆无人机二次开发简介-引入DJI mobile SDK 4.8

    基于android studio 3.5 1.引入DJI mobile SDK 4.8和DJI UX SDK 4.8 部分build.gradle如下 apply plugin: 'com.andro ...

  2. 基于大疆无人机SDK二次开发

    基于大疆无人机SDK二次开发 近期公司项目需求,需要基于大疆无人机SDK开发一款手机 APP,用于配合后台实现对无人机的管理.当然大疆本身也给我们提供了管理平台-----大疆司空.通过大疆的官方 AP ...

  3. 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

  4. App开发日报 2015-05-15 大疆无人机IOS开发之搭建DJI Phantom和iOS视觉平台

    App开发日报 2015-05-15 @好东西传送门 出品, 过刊见 http://app.memect.com 订阅:给 hao@memect.com 发封空信, 标题: 订阅App开发日报 可点击 ...

  5. 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

  6. 大疆无人机安卓Mobile Sdk开发(一)简单介绍

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

  7. 大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>

    大疆无人机飞控开发 大疆无人机 SDK开发包 功能概述 飞行控制 相机 实时视频流 传感器数据 下载媒体文件 遥控器,电池和无线链路 连接应用程序和产品 v4版sdk 二次开发 注册成为DJI开发者 ...

  8. 大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<2>

    导读 上一篇文章因为时间原因介绍了一部分内容,如果已经完成上一篇内容的操作就可以进行下面功能方面的制作了. 自己开发的APP功能不是很多,但是已经将大疆无人机的常用功能进行了结合,同大家一起进行学习~ ...

  9. 大疆无人机安卓Mobile Sdk开发(四)读取飞机的图片和视频并下载

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

最新文章

  1. go标准库的学习-crypto/sha1
  2. 一张图看懂混合云数据同步一站式解决方案
  3. [Vue warn]: Computed property tabs was assigned to but it has no setter.
  4. Oracle之数据库设计概述
  5. php json获取get请求,PHP简单的Curl的Get请求和Curl的Post请求和file_get_contents的Get请求获取接口JSON数据...
  6. markdown备忘
  7. java的jtextarea_java中怎么在JTextArea中添加图片?
  8. [转]python进阶到高阶大全
  9. 中国数码电影摄影机行业市场供需与战略研究报告
  10. 浅谈如何提高自动化测试的稳定性和可维护性 (pytestallure)
  11. Retrofit源码解析之请求流程概述
  12. win7计算机怎么重置,win7系统快速重置的设置办法
  13. 利用stm32串口中断进行数码管显示
  14. linux常用网站(不定期更新)
  15. CATIA V5-6 R2017 支架类零件设计
  16. 设备屏幕亮度调节代码实现
  17. zxing 生成二维码,可设置logo、二维码颜色、白边大小
  18. SpringBoot系列:Spring Boot集成定时任务Quartz,java百度云短信发送
  19. 2C领域最后一个资本宠儿,快看成“超新Z世代”娱乐平台
  20. 【JavaScript】ES6 数组的扩展

热门文章

  1. ANR问题的分析与解决思路
  2. 教育知识和能力2--课堂教学
  3. 【针对产品说测试】之测试“用户登录”
  4. js在input框获取焦点展开,失去焦点隐藏案例
  5. 解读涉密资质新旧标准承接范围的变化
  6. 1101. 献给阿尔吉侬的花束 (bfs
  7. 云渲染动画价格一般多少?
  8. INTERSPEECH2023|达摩院语音实验室入选论文全况速览
  9. EasyDSS配置了域名/公网ip后一直会提示服务不存在的问题排查
  10. SuperMap GIS基础软件中数据库使用指南