# RCSDK-Demo **Repository Path**: hilbertw/rcsdk-demo ## Basic Information - **Project Name**: RCSDK-Demo - **Description**: 云卓遥控器RCSDK-Demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2025-04-04 - **Last Updated**: 2025-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 更新日志 ``` v1.7.4 1.修复Bug *部分情况下在G系列遥控器中崩溃问题 v1.7.3 1.G12/G20数传管道修改为UDP(需要更新20250110及以后的Android系统版本) 2.修复Bug 部分情况下自定义遥控按钮工具类可能引发阻塞问题 v1.7.2 1.修复Bug 部分遥控器(H12Pro、G12、G20)偶尔信号显示错误问题 2.新增Key 915模块使能(支持G20) RemoteControllerKey.KeyModule915Enable v1.7.1 1.修复Bug v1.6.8 1.修复G12、G20数传管道内存泄漏问题 v1.6.6 1.G20遥控器 2.新增Key AirLinkKey.KeyRCSetReTxCount(配置地面端重传次数,提升链路可靠性,支持G12、G20) AirLinkKey.KeySkySetReTxCount(配置天空端重传次数,提升链路可靠性,支持G12、G20) AirLinkKey.KeySetAutoMCS(自适应MCS,可提升上行速度,支持G12、G20) v1.6.5 1.修复Bug H20遥控器获取不到信号百分比问题 v1.6.4 1.G12遥控器 2.修复Bug 部分情况下KeyManager会阻塞300ms的问题 v1.6.3 1.修复Bug 获取遥控器通道指令 v1.6.2 1.新增Key: AirLinkKey.KeyRCVersion(遥控器端无线模块版本号,目前支持H20,H30) AirLinkKey.KeySkyVersion(天空端端无线模块版本号,目前支持H20,H30) AirLinkKey.KeySkyMCUVersion(天空端MUC版本号,目前支持H30) AirLinkKey.KeyRawSignalQuality(原始信号数据,目前支持H16/H12Pro/H20/H30) 2.SDK版本号获取 3.修复H20波特率设置错误问题 4.底层请求逻辑优化* v1.5.2 1.C12无级变倍 C12::addZoomRatios C12::subtractZoomRatios 2.H20遥控器自定义按钮波轮控制默认反向 3.C12云台控制新增接口 同时控制俯仰偏航:C12::controlYawPitch(需要云台固件0.5及以上) v1.5.2 1.C12无级变倍 C12::addZoomRatios C12::subtractZoomRatios 2.H20遥控器自定义按钮波轮控制默认反向 3.C12云台控制新增接口 同时控制俯仰偏航:C12::controlYawPitch(需要云台固件0.5及以上) v1.5.0 1.新增SDK工具类获取遥控器型号方法 com.skydroid.rcsdk.utils.RCSDKUtils v1.4.9 1.修复部分情况下拍照阻塞的bug 2.修复H20串口0、串口1相反问题 3.H30数传通讯默认使用UDP通讯 v1.4.7 1.修复部分H16数传接收多次问题 2.C10Pro OSD设置 v1.4.5 1.C12云台相机 2.C10Pro云台相机(建议使用C10Pro类代替C10ProCamera类与C10ProGimbal类,C10Pro相机固件需要v0.2.7及以上才支持C10Pro类,v0.2.7以前使用C10ProCamera类与C10ProGimbal类) 3.新增遥控器自定义按钮事件工具类(详细使用方法请查阅相关代码:CustomRCButtonsActivity) 4.修复Bug disconnectRC崩溃问题等 v1.3.4 1.新增Key: AirLinkKey.KeyH20Bandwidth(设置/获取H20遥控器带宽) v1.3.3 1.EC10遥控器 v1.3.2 1.C20 LED开关 v1.3.1 1.优化TCP通讯重连机制 2.调整遥控器协议超时时间(100ms) v1.3.0 1.新增Key: RemoteControllerKey.KeyModel(获取遥控器固件型号) RemoteControllerKey.KeyVersion(获取遥控器固件版本号) 2.优化CPU占用 3.优化UDP通讯过滤规则 4.优化混淆规则,防止与其他第三方库冲突 v1.2.1 1.修复H20信号强度错误问题 2.C10/C10Pro/C20云台控制新增角度控制方法 3.调整C10/C10Pro/C20云台速度控制参数(请参考文档C10/C10Pro/C20云台控制章节) 4.支持串口双轴云台相机控制 v1.1.0 支持H20遥控器 v0.9.7 支持C20云台相机 v0.8.5 1.修复同时多个TCP连接时阻塞问题 2.修复PipelineManager,PayloadManager连接不上时无法关闭问题 v0.8.3 1.新增云卓配件管理(C10、三体相机等) 2.修复UDPPipeline连接状态错误问题 3.新增Key: AirLinkKey.KeyH16RawSignalQuality(获取H16原始信号值DBM) v0.7.1 支持H30遥控器 v0.6 支持H16遥控器 v0.1 发布第一版 ``` # Demo 工程 下载或者克隆Git上的Android示例代码工程:https://gitee.com/skydroid/rcsdk-demo 使用注意事项:
1.请确保其他应用(包含助手、地面站)处于停止关闭状态,避免端口占用导致数据链路失败;
2.获取摇杆杆量值,无法主动上报,请求一次获取一次,推荐至少100ms读取一次;
3.数传管道,未连接 接收机 时,数传管道 连接失败;


如下是H12Pro+S1pro+C12Pro的测试效果图: ![image](https://gitee.com/skydroid/rcsdk-demo/raw/master/image/rcsdk_demo_1.png) ![image](https://gitee.com/skydroid/rcsdk-demo/raw/master/image/rcsdk_demo_2.png) # RCSDK目前支持的遥控器产品 H12、H12Pro、H16/H16Pro、H30、H20、G12、G20 # RCSDK架构体系概述 移动应用程序一般通过下图所示的几个主要类来访问RCSDK: ![image](https://gitee.com/skydroid/rcsdk-demo/raw/master/image/rcsdk.png) - RCSDKManager: RCSDK工具包的入口类,管理RCSDK的初始化,反初始化,连接,以及监听硬件产品的连接事件。 - KeyManager: RCSDK使用了以Key为基础元素的参数设置和参数获取功能接口 - PipelineManager:与第三方设备数据传输的入口 - PayloadManager:控制云卓相关配件(C10、三体相机等)的入口 # 空白项目集成 SDK 本指引介绍如何将 RCSDK-Demo 中的 RCSDK包移植到用户的空白项目中 ``` 本指引中使用的 Android Studio 版本为 Android Studio Chipmunk | 2021.2.1 Patch 1 SDK所需权限 Kotlin版本为:1.6.10 混淆 -keep class com.skydroid.**{*;} ``` - ### 导入SDK AAR包 ``` rcsdk-v1.7.4.aar h16_airlink.aar //H16图传模块 minSdk 24 ``` - ### 修改build.gradle(app) 文件 在 dependencies 项里添加SDK包 ``` implementation files("libs/rcsdk-v1.7.4.aar") implementation files('libs/h16_airlink.aar')//可选,H16遥控器图传模块,如果不是H16遥控器,无需导入,该模块minSdk为24 ``` - ### 修改 AndroidManifest.xml 文件 参照 Demo 的 AndroidManifest.xml添加SDK 需要的最基础权限 ``` ``` - ### 初始化RCSDK 在使用SDK各组件之前初始化context信息; 初始化一次即可; 推荐在Application中初始化; ``` RCSDKManager.initSDK(this,object :SDKManagerCallBack{ override fun onRcConnectFail(e: SkyException?) { //连接失败 } override fun onRcConnected() { //设备连接 } override fun onRcDisconnect() { //设备断开连接 } }) ``` - ### 连接遥控器 ``` RCSDKManager.connectToRC() ``` - ### 断开遥控器 注意:不使用时需要断开连接,否则会一直占用端口 ``` RCSDKManager.disconnectRC() ``` # KeyManager 遥控器参数设置、获取功能接口 - ### SET ``` //设置遥控器控制模式 KeyManager.set(RemoteControllerKey.KeyControlMode, ControlMode.JP) { e -> if (e == null){ log("设置摇杆模式成功") //success }else{ log("设置摇杆模式失败:${e}") } //fail } ``` - ### GET ``` 获取遥控器控制模式 KeyManager.get(RemoteControllerKey.KeyControlMode,object : CompletionCallbackWith { override fun onSuccess(result: ControlMode?) { //获取成功 log(result) } override fun onFailure(e: SkyException?) { //获取失败 log(e) } }) ``` - ### ACTION ``` 遥控器对频 KeyManager.action(RemoteControllerKey.KeyRequestPairing){ e -> if (e == null){ log("对频成功") //success }else{ log("对频失败:${e}") //fail } } ``` - ### LISTEN ``` var keySignalQualityListener = KeyListener{ oldValue, newValue -> Log.e(TAG,"信号强度:${oldValue},${newValue}") } //监听H12Pro信号强度 (取值范围: 0-100%) KeyManager.listen(AirLinkKey.KeySignalQuality,keySignalQualityListener) //取消监听H12Pro信号强度 KeyManager.cancelListen(keySignalQualityListener) ``` # PipelineManager 与第三方设备通讯接口 - ### 与第三方设备(例如飞控)通讯 ``` //创建通讯管道 pipeline = PipelineManager.createPipeline() pipeline?.let { //设置监听 it.onCommListener = object : CommListener{ override fun onConnectSuccess() { log("管道连接成功") } override fun onConnectFail(e: SkyException?) { log("管道连接失败${e}") } override fun onDisconnect() { log("管道断开连接") } override fun onReadData(data: ByteArray?) { //第三方设备发送的数据 } } //连接通讯管道 PipelineManager.connectPipeline(it) } //发送数据到第三方设备 pipeline?.let { it.writeData(bytes) } //断开通讯管道 pipeline?.let { PipelineManager.disconnectPipeline(it) } ``` 自定义创建通讯管道方法 ``` //根据遥控器类型创建通讯管道 PipelineManager.createPipeline(DeviceType.H12Pro) //创建自定义串口通讯管道 PipelineManager.createSerialPipeline("/dev/ttyHS1",921600) //创建UDP通讯管道 //参数1:本地端口号;参数2:远程接收端IP;参数3:远程接收端端口号 PipelineManager.createUDPPipeline(14550,"192.168.144.10",14550) //创建TCP通讯管道 PipelineManager.createTCPPipeline("192.168.144.101",14550) //创建串口0通讯管道 PipelineManager.createPipeline(Uart.UART0) //创建串口1通讯管道 PipelineManager.createPipeline(Uart.UART1) //创建G12G20通讯管道(适用于G12、G20) PipelineManager.createG12G20Pipeline() ``` # Key ### RemoteControllerKey - ##### 遥控器摇杆模式 ``` /** * 遥控器摇杆模式 * 访问方式 * SET,GET * 支持ALL */ val KeyControlMode: KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H12摇杆通道设置 ``` /** * H12通道 * 访问方式 * SET,GET * 支持H12 */ val KeyH12ChannelSettings: KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### 摇杆通道设置 ``` /** * 通道设置 * 访问方式 * SET,GET * 支持H12Pro/H16/H30/H20/G12/G20 */ val KeyChannelSettings: KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### 遥控器对频 ``` /** * 遥控器对频 * 访问方式 * ACTION * 支持ALL */ val KeyRequestPairing: KeyInfo = KeyInfo.Builder() .canAction(true) ``` - ##### 遥控器序列号 ``` /** * 遥控器序列号 * 访问方式 * GET * 支持ALL */ val KeySerialNumber: KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### 遥控器摇杆感量 ``` /** * 遥控器摇杆感量 * 访问方式 * GET * 支持H12/H12Pro/H30/H20/G12/G20 */ val KeyChannels: KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### H16遥控器摇杆感量 ``` /** * H16遥控器摇杆感量 * 访问方式 * LISTEN * 支持H16 */ val KeyH16Channels: KeyInfo = KeyInfo.Builder() .canListen(true) ``` - ##### 教练模式 ``` /** * 教练模式 * 访问方式 * SET,GET * 支持H12Pro/H16/H30 */ val KeyCoachMode: KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### 自定义数据 ``` /** * 自定义数据 200byte * 访问方式 * GET,SET * 支持ALL */ val KeyCustomData: KeyInfo = KeyInfo.Builder() .canGet(true) .canSet(true) ``` - ##### 遥控器型号 ``` /** * 遥控器型号 * 访问方式 * GET * 支持ALL */ val KeyModel:KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### 遥控器版本 ``` /** * 遥控器版本 * 访问方式 * GET * 支持ALL */ val KeyVersion:KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### 915模块使能 ``` /** * 控制915模块使能 * 访问方式 * SET,GET * 支持G20 */ val KeyModule915Enable:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` ### AirLinkKey - ##### 图传接收机串口0波特率 ``` /** * 图传接收机串口0波特率 * 访问方式 * SET,GET * 支持H12Pro/G12/G20 */ val KeyUart0BaudRate:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H12Pro图传接收机RC通道失控保护值 ``` /** * 图传接收机RC通道失控保护值 * 访问方式 * SET,GET * 支持H12Pro */ val KeyLostSBUSValues:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### 图传接收机信号质量(原始数据) ``` /** * 图传接收机信号质量(原始数据) * 访问方式 * LISTEN * 支持H16/H12Pro/H20/H30/G12/G20 */ val KeyRawSignalQuality:KeyInfo = KeyInfo.Builder() .canListen(true) ``` - ##### 图传接收机信号质量 ``` /** * 图传接收机信号质量 * 访问方式 * LISTEN * 支持H12Pro/H16/H30/H20/G12/G20 */ val KeySignalQuality:KeyInfo = KeyInfo.Builder() .canListen(true) ``` - ##### H12图传接收机信号质量 ``` /** * H12图传接收机信号质量 * 访问方式 * GET * 仅支持H12 */ val KeyH12SignalQuality:KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### H12接收机选项设置 ``` /** * 接收机选项设置 * 访问方式 * SET,GET * 仅支持H12 */ val KeyReceiverOptions: KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H16图传接收机串口0波特率 ``` /** * H16图传接收机串口0波特率 * 访问方式 * SET,GET * 仅支持H16 */ val KeyH16Uart0BaudRate:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H16图传接收机串口1波特率 ``` /** * H16图传接收机串口1波特率 * 访问方式 * SET,GET * 仅支持H16 */ val KeyH16Uart1BaudRate:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H16图传接收机信号质量 从1.1.0版本起,推荐使用KeySignalQuality ``` /** * H16图传接收机信号质量 * 访问方式 * LISTEN * 仅支持H16 */ val KeyH16SignalQuality:KeyInfo = KeyInfo.Builder() .canListen(true) ``` - ##### H16图传接收机信号质量(原始数据) ``` /** * H16图传接收机信号质量(原始数据) * 访问方式 * LISTEN * 仅支持H16 */ val KeyH16RawSignalQuality:KeyInfo = KeyInfo.Builder() .canListen(true) ``` - ##### H30图传接收机信号质量 从1.1.0版本起,推荐使用KeySignalQuality ``` /** * H30图传接收机信号质量 * 访问方式 * LISTEN * 仅支持H30 */ val KeyH30SignalQuality:KeyInfo = KeyInfo.Builder() .canListen(true) ``` - ##### H30图传接收机串口波特率 ``` /** * H30图传接收机串口波特率 * 访问方式 * SET,GET * 仅支持H30 */ val KeyH30UartBaudRate:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H20图传接收机串口0波特率 ``` /** * H20图传接收机串口0波特率 * 访问方式 * SET,GET * 仅支持H20 */ val KeyH20Uart0BaudRate:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H20图传接收机串口1波特率 ``` /** * H20图传接收机串口1波特率 * 访问方式 * SET,GET * 仅支持H20 */ val KeyH20Uart1BaudRate:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### H20图传接收机串口1波特率 ``` /** * H20带宽设置 * 访问方式 * SET,GET * 仅支持H20 * Bandwidth.ul:上行带宽 * Bandwidth.dl:下行带宽 */ val KeyH20Bandwidth:KeyInfo = KeyInfo.Builder() .canSet(true) .canGet(true) ``` - ##### 遥控器无线模块版本 ``` /** * 遥控器无线模块版本 * 访问方式 * GET * 支持G12/G20/H30/H20 */ val KeyRCVersion:KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### 天空端无线模块版本 ``` /** * 天空端无线模块版本 * 访问方式 * GET * 支持G12/G20/H30/H20 */ val KeySkyVersion:KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### 天空端MCU版本 ``` /** * 天空端MCU版本 * 访问方式 * GET * 支持H30 */ val KeySkyMCUVersion:KeyInfo = KeyInfo.Builder() .canGet(true) ``` - ##### 地面端重传次数 ``` /** * 地面端设置重传次数,默认6次,重启后失效(恢复默认6次) * 设置范围:0-500 0:表示重传到对,保证了链路的可靠性 * 访问方式 * SET * 支持G12/G20 */ val KeyRCSetReTxCount:KeyInfo = KeyInfo.Builder() .canSet(true) ``` - ##### 天空端重传次数 ``` /** * 天空端设置重传次数,默认6次,重启后失效(恢复默认6次) * 设置范围:0-500 0:表示重传到对,保证了链路的可靠性 * 访问方式 * SET * 支持G12/G20 */ val KeySkySetReTxCount:KeyInfo = KeyInfo.Builder() .canSet(true) ``` - ##### 自适应MCS ``` /** * 自适应MCS * 开启后可提提升上行速度,重启后失效 * 适用于上传文件,上传前开启,上传完成关闭 * 访问方式 * SET * 支持G12/G20 */ val KeySetAutoMCS:KeyInfo = KeyInfo.Builder() .canSet(true) ``` # PayloadManager 云卓相关配件通讯接口 ``` //C10相机控制 val c10 = PayloadManager.getTCPPayload(PayloadType.C10, "192.168.144.108", 5000) as C10? //内部已经实现重连机制,无需再实现 if (c10 != null) { c10.setCommListener(object : CommListener { override fun onConnectSuccess() { log("C10连接成功") } override fun onConnectFail(e: SkyException) { } override fun onDisconnect() { log("C10断开连接") } override fun onReadData(bytes: ByteArray) { } }) //连接C10相机 PayloadManager.connectPayload(c10) } //控制C10一键回中 c10.akey(AKey.MID) //断开C10相机连接 PayloadManager.disconnectPayload(c10) ``` ### 三体相机(串口版)控制 ``` //获取三体相机(串口版) //获取实例后需要调用连接方法才能控制 val threeBodyCamera = PayloadManager.getSerialPortPayload(PayloadType.THREE_BODY_CAMERA, "/dev/ttyHS0", 4000000) as ThreeBodyCamera? //拍照 threeBodyCamera?.snapshot() //开始录像 threeBodyCamera?.toggleReCord(true) //结束录像 threeBodyCamera?.toggleReCord(false) //切换LED threeBodyCamera?.toggleLED() //同步时间(要在收到帧数据后再调用才有效) threeBodyCamera?.setTime(System.currentTimeMillis()) ``` ### 双轴云台相机(串口版)控制 ``` val dualAxisGimbalCamera = PayloadManager.getSerialPortPayload(PayloadType.DUAL_AXIS_GIMBAL_CAMERA,"/dev/ttyHS0",4000000) as DualAxisGimbalCamera //一键控制 //向下 dualAxisGimbalCamera?.akey(AKey.DOWN) //回中 dualAxisGimbalCamera?.akey(AKey.MID) //向上 dualAxisGimbalCamera?.akey(AKey.TOP) //控制俯仰 //向上 dualAxisGimbalCamera?.controlPitch(true) //向下 dualAxisGimbalCamera?.controlPitch(false) //同步时间(要在收到帧数据后再调用才有效) dualAxisGimbalCamera?.setTime(System.currentTimeMillis()) ``` ### 三体相机(网口版)控制 ``` //获取三体相机(网口版) //获取实例后需要调用连接方法才能控制 val threeBodyCamera2 = PayloadManager.getTCPPayload(PayloadType.THREE_BODY_CAMERA2, "192.168.144.108", 5001) as ThreeBodyCamera2? //切换LED threeBodyCamera2?.toggleLED() threeBodyCamera2?.toggleLED(boolean) ``` ### C10云台相机控制 ``` //获取C10云台相机 //获取实例后需要调用连接方法才能控制 val c10 = PayloadManager.getTCPPayload(PayloadType.C10, "192.168.144.108", 5000) as C10? //一键控制 //向下 c10?.akey(AKey.DOWN) //回中 c10?.akey(AKey.MID) //向上 c10?.akey(AKey.TOP) //拍照 c10?.takePicture() //开始录像 c10?.startRecordVideo() //停止录像 c10?.stopRecordVideo() //速度控制偏航,-9.9 ~ +9.9,单位°/s 负数向左,正数向右 c10?.controlYaw(1f) //速度控制俯仰,-9.9 ~ +9.9,单位°/s 负数向下,正数向上 c10?.controlPitch(-1f) //控制偏航角度, -150.00 ~ +150.00,单位° c10?.gotoYaw(30f) //控制俯仰角度,-90.00 ~ +90.00,单位° c10?.gotoPitch(-90f) ``` ### C20相机控制 ``` //获取C20相机 //获取实例后需要调用连接方法才能控制 val c20Camera = PayloadManager.getTCPPayload(PayloadType.C20_CAMERA, "192.168.144.108", 8100) as C20Camera? //拍照 c20Camera?.takePicture() //开始录像 c20Camera?.startRecordVideo() //停止录像 c20Camera?.stopRecordVideo() //变倍变焦 //开始变倍 c20Camera?.startZoomIn() c20Camera?.startZoomOut() //开始变焦 c20Camera?.startFucusFar() c20Camera?.startFucusNear() //停止变倍变焦 c20Camera?.stopZoomOrFucus() //日夜模式 //设置 c20Camera?.setDayNightMode() //查询 c20Camera?.getDayNightMode() //翻转 //设置 c20Camera?.setFlip() //查询 c20Camera?.setFlip() 更多接口详情查看 com.skydroid.rcsdk.common.payload.C20Camera ``` ### C20云台控制 ``` //获取C20云台 //获取实例后需要调用连接方法才能控制 val c20Gimbal = PayloadManager.getTCPPayload(PayloadType.C20_GIMBAL, "192.168.144.108", 5000) as C20Gimbal? //一键控制 //向下 c20Gimbal?.akey(AKey.DOWN) //回中 c20Gimbal?.akey(AKey.MID) //向上 c20Gimbal?.akey(AKey.TOP) //速度控制偏航,-9.9 ~ +9.9,单位°/s 负数向左,正数向右 c20Gimbal?.controlYaw(1f) //速度控制俯仰,-9.9 ~ +9.9,单位°/s 负数向下,正数向上 c20Gimbal?.controlPitch(-1f) //控制偏航角度, -150.00 ~ +150.00,单位° c20Gimbal?.gotoYaw(30f) //控制俯仰角度,-90.00 ~ +90.00,单位° c20Gimbal?.gotoPitch(-90f) //切换LED c20Gimbal?.toggleLED() c20Gimbal?.toggleLED(boolean) ``` ### C10Pro相机控制(0.2.7以下固件) ``` //获取C10Pro相机 //获取实例后需要调用连接方法才能控制 val c10ProCamera = PayloadManager.getUDPPayload(PayloadType.C10PRO_CAMERA,12580,"192.168.144.108",12580) as C10ProCamera? //拍照 c10ProCamera?.takePicture() 命令示例:"AT+AZ -p2\r\n" //开始录像 c10ProCamera?.startRecordVideo() 命令示例:"AT+AZ -p0\r\n" //停止录像 c10ProCamera?.stopRecordVideo() 命令示例:"AT+AZ -p1\r\n" //同步时间 c10ProCamera?.setTime() //获取版本号 c10ProCamera?.getVersion() 命令示例:"AT+INFO\r\n" //设置LED(针对新款三体相机有效) c10ProCamera?.setLED() 命令示例:开 "AT+LED -e1\r\n";关 "AT+LED -e0\r\n" 更多接口详情查看 com.skydroid.rcsdk.common.payload.C10ProCamera ``` ### C10Pro云台控制(0.2.7以下固件) ``` //获取C10Pro云台 //获取实例后需要调用连接方法才能控制 val c10ProGimbal = PayloadManager.getUDPPayload(PayloadType.C10PRO_GIMBAL, 5000, "192.168.144.108", 5000) as C10ProGimbal? //一键控制 //向下 c10ProGimbal?.akey(AKey.DOWN) //回中 c10ProGimbal?.akey(AKey.MID) //向上 c10ProGimbal?.akey(AKey.TOP) //速度控制偏航,-9.9 ~ +9.9,单位°/s 负数向左,正数向右 c10ProGimbal?.controlYaw(3f) 命令示例:"#TPUG2wGSY1E75" c10ProGimbal?.controlYaw(-3f) 命令示例:"#TPUG2wGSYE276" //速度控制俯仰,-9.9 ~ +9.9,单位°/s 负数向下,正数向上 c10ProGimbal?.controlPitch(3f) 命令示例:"#TPUG2wGSP1E6C" c10ProGimbal?.controlPitch(-3f) 命令示例:"#TPUG2wGSPE26D" //控制偏航角度, -150.00 ~ +150.00,单位° c10ProGimbal?.gotoYaw(30f) //控制俯仰角度,-90.00 ~ +90.00,单位° c10ProGimbal?.gotoPitch(-90f) ``` ### C10Pro云台相机控制(0.2.7及以上固件) ``` //获取C10Pro云台相机 //获取实例后需要调用连接方法才能控制 c10p = PayloadManager.getUDPPayload(PayloadType.C10PRO,5000,"192.168.144.108",5000) as C12? //一键控制 //向下 c10p?.akey(AKey.DOWN) //回中 c10p?.akey(AKey.MID) //向上 c10p?.akey(AKey.TOP) //速度控制偏航,-9.9 ~ +9.9,单位°/s 负数向左,正数向右 c10p?.controlYaw(3f) 命令示例:"#TPUG2wGSY1E75" c10p?.controlYaw(-3f) 命令示例:"#TPUG2wGSYE276" //速度控制俯仰,-9.9 ~ +9.9,单位°/s 负数向下,正数向上 c10p?.controlPitch(3f) 命令示例:"#TPUG2wGSP1E6C" c10p?.controlPitch(-3f) 命令示例:"#TPUG2wGSPE26D" //控制偏航角度, -150.00 ~ +150.00,单位° c10p?.gotoYaw(30f) //控制俯仰角度,-90.00 ~ +90.00,单位° c10p?.gotoPitch(-90f) //拍照 c10p?.takePicture(callBack:CompletionCallback?) 命令示例:"#TPUD2wCAP013E" //开始录像 c10p?.startRecordVideo(callBack:CompletionCallback?) 命令示例:"#TPUD2wREC0144" //结束录像 c10p?.stopRecordVideo(callBack:CompletionCallback?) 命令示例:"#TPUD2wREC0043" //获取录像状态 c10p?.getRecordVideoState(callBack: CompletionCallbackWith) 命令示例:"#TPUD2rREC003E" //同步时间(需要在出图后设置才有效) c10p?.setTime(time:Long,callBack:CompletionCallback?) //设置osd显示/关闭 c10p?.setOSD(boolean: Boolean,callBack: CompletionCallback?) //获取相机版本号 c10p?.getCameraVersion(callBack: CompletionCallbackWith) 命令示例:"#TPUD2rVER0051" //LED开关(针对新款三体相机有效) c10p?.setLed(onOrOff:Boolean,callBack: CompletionCallback?) ``` ### C12云台相机控制 ``` //获取C12云台相机 //获取实例后需要调用连接方法才能控制 c12 = PayloadManager.getUDPPayload(PayloadType.C12,5000,"192.168.144.108",5000) as C12? //一键控制 //向下 c12?.akey(AKey.DOWN) //回中 c12?.akey(AKey.MID) //向上 c12?.akey(AKey.TOP) //速度控制偏航,-9.9 ~ +9.9,单位°/s 负数向左,正数向右 c12?.controlYaw(1f) //速度控制俯仰,-9.9 ~ +9.9,单位°/s 负数向下,正数向上 c12?.controlPitch(-1f) //控制偏航角度, -150.00 ~ +150.00,单位° c12?.gotoYaw(30f) //控制俯仰角度,-90.00 ~ +90.00,单位° c12?.gotoPitch(-90f) //设置倍率 0-4 0:原图,1-4:变倍 c12?.setZoomRatios(value:Int,callBack: CompletionCallback?) //设置伪彩 // WHITE_HOT,白热 // SEPIA,辉金 // IRONBOW,铁红 // RAINBOW,彩虹 // NIGHT,微光 // AURORA,极光 // RED_HOT,红热 // JUNGLE,从林 // MEDICAL,医疗 // BLACK_HOT,黑热 // GLORY_HOT;金红 c12?.setThermalPalette(palette: ThermalPalette, callBack: CompletionCallback?) //拍照 c12?.takePicture(callBack:CompletionCallback?) //开始录像 c12?.startRecordVideo(callBack:CompletionCallback?) //结束录像 c12?.stopRecordVideo(callBack:CompletionCallback?) //获取录像状态 c12?.getRecordVideoState(callBack: CompletionCallbackWith) //同步时间(需要在出图后设置才有效) c12?.setTime(time:Long,callBack:CompletionCallback?) //获取相机版本号 c12?.getCameraVersion(callBack: CompletionCallbackWith) ``` # 工具类 #### 自定义遥控器按钮(遥控器通道自定义/波轮控制/摇杆控制) com.skydroid.rcsdk.common.button.ButtonHelper ``` 详细使用方法参考 CustomRCButtonsActivity ``` #### RCSDKUitls com.skydroid.rcsdk.utils.RCSDKUitls ``` getDeviceType 获取遥控器型号 getVersion 获取SDK版本号 ```