合并分支 'dev_00.00.02.06' 到 'dev'
0.0.2.6 更新云台内容,并且更新了滤波 查看合并请求 !4
正在显示
48 个修改的文件
包含
1539 行增加
和
2023 行删除
.vscode/settings.json
0 → 100644
| 1 | +{ | ||
| 2 | + "files.associations": { | ||
| 3 | + "typeinfo": "c", | ||
| 4 | + "streamproc.h": "c", | ||
| 5 | + "jzsdk_code.h": "c", | ||
| 6 | + "camera.h": "c", | ||
| 7 | + "ui_control.h": "c", | ||
| 8 | + "baseconfig.h": "c", | ||
| 9 | + "jzsdklib.h": "c", | ||
| 10 | + "uartconnection.h": "c", | ||
| 11 | + "taskmanagement.h": "c", | ||
| 12 | + "gimbal_param.h": "c", | ||
| 13 | + "serialproc.h": "c", | ||
| 14 | + "version_choose.h": "c", | ||
| 15 | + "megaphone.h": "c", | ||
| 16 | + "uart_config.h": "c", | ||
| 17 | + "jzsdk_uart_input.h": "c", | ||
| 18 | + "jzsdk_inscode.h": "c", | ||
| 19 | + "psdk_ui_io.h": "c", | ||
| 20 | + "lighting_inandout.h": "c" | ||
| 21 | + }, | ||
| 22 | + "Codegeex.GenerationPreference": "automatic" | ||
| 23 | +} |
| @@ -22,6 +22,7 @@ extern "C" { | @@ -22,6 +22,7 @@ extern "C" { | ||
| 22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
| 23 | 23 | ||
| 24 | #include "JZsdk_CommonFuntion/JZsdkCommonFuntion.h" | 24 | #include "JZsdk_CommonFuntion/JZsdkCommonFuntion.h" |
| 25 | +#include "JZsdk_TaskManagement/TaskManagement.h" | ||
| 25 | /* Exported types ------------------------------------------------------------*/ | 26 | /* Exported types ------------------------------------------------------------*/ |
| 26 | 27 | ||
| 27 | /* Exported functions --------------------------------------------------------*/ | 28 | /* Exported functions --------------------------------------------------------*/ |
| @@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
| 8 | #include "version_choose.h" | 8 | #include "version_choose.h" |
| 9 | #include "ircut.h" | 9 | #include "ircut.h" |
| 10 | #include "Megaphone/Megaphone.h" | 10 | #include "Megaphone/Megaphone.h" |
| 11 | -#include "Gimbal_InAndOut.h" | 11 | +#include "Gimbal/Gimbal.h" |
| 12 | 12 | ||
| 13 | #include "JZsdk_uart/JZsdk_Uart_Input.h" | 13 | #include "JZsdk_uart/JZsdk_Uart_Input.h" |
| 14 | #include "BaseConfig.h" | 14 | #include "BaseConfig.h" |
| @@ -76,7 +76,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | @@ -76,7 +76,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | ||
| 76 | //先关闭播放 | 76 | //先关闭播放 |
| 77 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); | 77 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); |
| 78 | 78 | ||
| 79 | - | ||
| 80 | //修改滤波 | 79 | //修改滤波 |
| 81 | AudioDeal_FilterReset(0x01); | 80 | AudioDeal_FilterReset(0x01); |
| 82 | } | 81 | } |
| @@ -85,7 +84,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | @@ -85,7 +84,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | ||
| 85 | //先关闭播放 | 84 | //先关闭播放 |
| 86 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); | 85 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); |
| 87 | 86 | ||
| 88 | - | ||
| 89 | //修改滤波 | 87 | //修改滤波 |
| 90 | AudioDeal_FilterReset(0x00); | 88 | AudioDeal_FilterReset(0x00); |
| 91 | } | 89 | } |
| @@ -292,10 +290,10 @@ T_JZsdkReturnCode Main_APP_Psdk() | @@ -292,10 +290,10 @@ T_JZsdkReturnCode Main_APP_Psdk() | ||
| 292 | 290 | ||
| 293 | //灯类初始化 | 291 | //灯类初始化 |
| 294 | Lighting_Init(); | 292 | Lighting_Init(); |
| 295 | - | 293 | +#if SIDE_LASER_STATUS_ON |
| 296 | //侧边激光初始化 | 294 | //侧边激光初始化 |
| 297 | SideLaser_Init(); | 295 | SideLaser_Init(); |
| 298 | - | 296 | +#endif |
| 299 | delayMs(1000); | 297 | delayMs(1000); |
| 300 | 298 | ||
| 301 | //消息订阅初始化 | 299 | //消息订阅初始化 |
| @@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
| 19 | #define MAJOR_VERSION 0x00 | 19 | #define MAJOR_VERSION 0x00 |
| 20 | #define MINOR_VERSION 0x00 | 20 | #define MINOR_VERSION 0x00 |
| 21 | #define MODIFY_VERSION 0x02 | 21 | #define MODIFY_VERSION 0x02 |
| 22 | -#define DEBUG_VERSION 0x04 | 22 | +#define DEBUG_VERSION 0x06 |
| 23 | 23 | ||
| 24 | //禁止修改行 滤波方式 | 24 | //禁止修改行 滤波方式 |
| 25 | #define FILTERING_TYPE HIGH_PASS_FILTERING | 25 | #define FILTERING_TYPE HIGH_PASS_FILTERING |
| @@ -55,6 +55,7 @@ | @@ -55,6 +55,7 @@ | ||
| 55 | //是否开启红外相机功能 | 55 | //是否开启红外相机功能 |
| 56 | #ifdef MACRO_IRC_MODULE | 56 | #ifdef MACRO_IRC_MODULE |
| 57 | #define IRC_CONFIG_STATUS VERSION_SWITCH_ON | 57 | #define IRC_CONFIG_STATUS VERSION_SWITCH_ON |
| 58 | + #define IRC_CONFIG_STATUS_ON | ||
| 58 | #else | 59 | #else |
| 59 | #define IRC_CONFIG_STATUS VERSION_SWITCH_OFF | 60 | #define IRC_CONFIG_STATUS VERSION_SWITCH_OFF |
| 60 | #endif | 61 | #endif |
| @@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
| 11 | #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" | 11 | #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" |
| 12 | #include "JZsdk_uart/Uart_Config.h" | 12 | #include "JZsdk_uart/Uart_Config.h" |
| 13 | #include "JZsdk_uart/JZsdk_Uart_Send/JZsdk_Uart_Send.h" | 13 | #include "JZsdk_uart/JZsdk_Uart_Send/JZsdk_Uart_Send.h" |
| 14 | -#include "Gimbal_InAndOut.h" | 14 | +#include "Gimbal/Gimbal.h" |
| 15 | 15 | ||
| 16 | // 记录串口是否有被使用,方便ui_contrl进行信息反馈 | 16 | // 记录串口是否有被使用,方便ui_contrl进行信息反馈 |
| 17 | struct UartDev_UseFlag | 17 | struct UartDev_UseFlag |
| @@ -25,6 +25,7 @@ | @@ -25,6 +25,7 @@ | ||
| 25 | //音频库索引值,用于管理所有的音频库信息 | 25 | //音频库索引值,用于管理所有的音频库信息 |
| 26 | struct AudioDealInfo *AudioDeakInfo_index = NULL; | 26 | struct AudioDealInfo *AudioDeakInfo_index = NULL; |
| 27 | T_JZsdkReturnCode g_AudioDealPauseFlag = JZ_FLAGCODE_OFF; | 27 | T_JZsdkReturnCode g_AudioDealPauseFlag = JZ_FLAGCODE_OFF; |
| 28 | +static int Audiodeal_status = JZ_FLAGCODE_OFF; | ||
| 28 | 29 | ||
| 29 | T_JZsdkReturnCode AudioDeal_Init() | 30 | T_JZsdkReturnCode AudioDeal_Init() |
| 30 | { | 31 | { |
| @@ -68,6 +69,8 @@ T_JZsdkReturnCode AudioDeal_Init() | @@ -68,6 +69,8 @@ T_JZsdkReturnCode AudioDeal_Init() | ||
| 68 | AudioDeakInfo_index->FilterInfo = NULL; | 69 | AudioDeakInfo_index->FilterInfo = NULL; |
| 69 | FF_Filter_Init(AudioDeakInfo_index, 0x00); | 70 | FF_Filter_Init(AudioDeakInfo_index, 0x00); |
| 70 | 71 | ||
| 72 | + Audiodeal_status = JZ_FLAGCODE_ON; | ||
| 73 | + | ||
| 71 | JZSDK_LOG_INFO("MODULE_AUDIODEL_INIT_COMPLETE"); | 74 | JZSDK_LOG_INFO("MODULE_AUDIODEL_INIT_COMPLETE"); |
| 72 | } | 75 | } |
| 73 | 76 | ||
| @@ -85,7 +88,11 @@ T_JZsdkReturnCode AudioDeal_FilterReset(int mode) | @@ -85,7 +88,11 @@ T_JZsdkReturnCode AudioDeal_FilterReset(int mode) | ||
| 85 | * *********************************************/ | 88 | * *********************************************/ |
| 86 | T_JZsdkReturnCode AudioDeal_ResampleRest(unsigned int in_sampleRate, AVChannelLayout in_ch_layout, enum AVSampleFormat in_format) | 89 | T_JZsdkReturnCode AudioDeal_ResampleRest(unsigned int in_sampleRate, AVChannelLayout in_ch_layout, enum AVSampleFormat in_format) |
| 87 | { | 90 | { |
| 91 | + Audiodeal_status = JZ_FLAGCODE_OFF; | ||
| 92 | + | ||
| 88 | FF_Resample_Reset(AudioDeakInfo_index ,in_sampleRate, in_ch_layout, in_format); | 93 | FF_Resample_Reset(AudioDeakInfo_index ,in_sampleRate, in_ch_layout, in_format); |
| 94 | + | ||
| 95 | + Audiodeal_status = JZ_FLAGCODE_ON; | ||
| 89 | } | 96 | } |
| 90 | 97 | ||
| 91 | /*************************************************************************************************************************************************** | 98 | /*************************************************************************************************************************************************** |
| @@ -108,6 +115,12 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer, | @@ -108,6 +115,12 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer, | ||
| 108 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | 115 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
| 109 | } | 116 | } |
| 110 | 117 | ||
| 118 | + while (Audiodeal_status != JZ_FLAGCODE_ON) | ||
| 119 | + { | ||
| 120 | + delayMs(1); | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + | ||
| 111 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 | 124 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 |
| 112 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; | 125 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; |
| 113 | 126 | ||
| @@ -136,6 +149,11 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput_WithoutReply(int In_Bitrate, unsigned c | @@ -136,6 +149,11 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput_WithoutReply(int In_Bitrate, unsigned c | ||
| 136 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | 149 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
| 137 | } | 150 | } |
| 138 | 151 | ||
| 152 | + while (Audiodeal_status != JZ_FLAGCODE_ON) | ||
| 153 | + { | ||
| 154 | + delayMs(1); | ||
| 155 | + } | ||
| 156 | + | ||
| 139 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 | 157 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 |
| 140 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; | 158 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; |
| 141 | 159 | ||
| @@ -159,6 +177,11 @@ T_JZsdkReturnCode AudioDeal_Mp3DataInput(int In_Bitrate, unsigned char *buffer, | @@ -159,6 +177,11 @@ T_JZsdkReturnCode AudioDeal_Mp3DataInput(int In_Bitrate, unsigned char *buffer, | ||
| 159 | JZSDK_LOG_ERROR("音频处理器未注册"); | 177 | JZSDK_LOG_ERROR("音频处理器未注册"); |
| 160 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | 178 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
| 161 | } | 179 | } |
| 180 | + | ||
| 181 | + while (Audiodeal_status != JZ_FLAGCODE_ON) | ||
| 182 | + { | ||
| 183 | + delayMs(1); | ||
| 184 | + } | ||
| 162 | 185 | ||
| 163 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 | 186 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 |
| 164 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; | 187 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; |
| @@ -193,6 +216,11 @@ T_JZsdkReturnCode AudioFile_Stream_DataInput(AVFrame *frame) | @@ -193,6 +216,11 @@ T_JZsdkReturnCode AudioFile_Stream_DataInput(AVFrame *frame) | ||
| 193 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | 216 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
| 194 | } | 217 | } |
| 195 | 218 | ||
| 219 | + while (Audiodeal_status != JZ_FLAGCODE_ON) | ||
| 220 | + { | ||
| 221 | + delayMs(1); | ||
| 222 | + } | ||
| 223 | + | ||
| 196 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 | 224 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 |
| 197 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; | 225 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; |
| 198 | 226 |
| @@ -311,7 +311,7 @@ T_JZsdkReturnCode FF_Filter_Init(struct AudioDealInfo *AD_Info, int mode) | @@ -311,7 +311,7 @@ T_JZsdkReturnCode FF_Filter_Init(struct AudioDealInfo *AD_Info, int mode) | ||
| 311 | } | 311 | } |
| 312 | else if (mode == 0x01) | 312 | else if (mode == 0x01) |
| 313 | { | 313 | { |
| 314 | - ret =FF_Filter_ParamInit(AD_Info, Filter_M30); | 314 | + ret =FF_Filter_ParamInit(AD_Info, Filter_M30_1); |
| 315 | } | 315 | } |
| 316 | else | 316 | else |
| 317 | { | 317 | { |
| @@ -219,7 +219,42 @@ t=h(或Hz)和t=q的主要区别在于它们如何指定滤波器的带宽。 | @@ -219,7 +219,42 @@ t=h(或Hz)和t=q的主要区别在于它们如何指定滤波器的带宽。 | ||
| 219 | equalizer=f=4000:t=q:w=2.0:g=0, \ | 219 | equalizer=f=4000:t=q:w=2.0:g=0, \ |
| 220 | equalizer=f=8000:t=q:w=2.0:g=0, \ | 220 | equalizer=f=8000:t=q:w=2.0:g=0, \ |
| 221 | equalizer=f=16000:t=q:w=2.0:g=0" | 221 | equalizer=f=16000:t=q:w=2.0:g=0" |
| 222 | + | ||
| 223 | + | ||
| 224 | + | ||
| 225 | + | ||
| 226 | + | ||
| 227 | +/****** | ||
| 228 | + * | ||
| 229 | + * | ||
| 230 | + * loudnorm 标准化音量滤波器 | ||
| 231 | + * I= 最大响度 | ||
| 232 | + * LRA 响度范围 值越小 范围越小 | ||
| 233 | + * TP 音量的最大值 | ||
| 234 | + * | ||
| 235 | + * 用于将音频都调节到一个音量大小 | ||
| 236 | + * | ||
| 237 | + * | ||
| 238 | + * 降低音量的动态范围,用于减少发热 | ||
| 239 | + * | ||
| 240 | + * *********/ | ||
| 241 | + | ||
| 222 | //旧式机115 | 242 | //旧式机115 |
| 243 | +/* | ||
| 244 | +2 37 | ||
| 245 | +4 39 | ||
| 246 | +6 41 | ||
| 247 | +8 43 | ||
| 248 | +11 45 | ||
| 249 | +14 47 | ||
| 250 | +17 49 | ||
| 251 | +21 50 | ||
| 252 | +22 52 | ||
| 253 | +25 55 | ||
| 254 | +27 54 | ||
| 255 | +31 55 | ||
| 256 | +40 57 | ||
| 257 | +*/ | ||
| 223 | #define Filter_No10 "equalizer=f=31:t=q:w=2.0:g=-48, \ | 258 | #define Filter_No10 "equalizer=f=31:t=q:w=2.0:g=-48, \ |
| 224 | equalizer=f=62:t=q:w=2.0:g=-48, \ | 259 | equalizer=f=62:t=q:w=2.0:g=-48, \ |
| 225 | equalizer=f=125:t=q:w=2.0:g=-48, \ | 260 | equalizer=f=125:t=q:w=2.0:g=-48, \ |
| @@ -231,20 +266,224 @@ t=h(或Hz)和t=q的主要区别在于它们如何指定滤波器的带宽。 | @@ -231,20 +266,224 @@ t=h(或Hz)和t=q的主要区别在于它们如何指定滤波器的带宽。 | ||
| 231 | equalizer=f=8000:t=q:w=2.0:g=0, \ | 266 | equalizer=f=8000:t=q:w=2.0:g=0, \ |
| 232 | equalizer=f=16000:t=q:w=2.0:g=0" | 267 | equalizer=f=16000:t=q:w=2.0:g=0" |
| 233 | 268 | ||
| 234 | - | ||
| 235 | -#define Filter_M30 "equalizer=f=31:t=q:w=2.0:g=-48, \ | 269 | +//半小时49度 但是音量掉到107了 |
| 270 | +/* | ||
| 271 | +00 35 | ||
| 272 | +4 37 | ||
| 273 | +8 39 | ||
| 274 | +13 41 | ||
| 275 | +18 43 | ||
| 276 | +27 45 | ||
| 277 | +36 47 | ||
| 278 | +52 49 | ||
| 279 | +60 49 | ||
| 280 | +*/ | ||
| 281 | +#define Filter_No11 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 236 | equalizer=f=62:t=q:w=2.0:g=-48, \ | 282 | equalizer=f=62:t=q:w=2.0:g=-48, \ |
| 237 | equalizer=f=125:t=q:w=2.0:g=-48, \ | 283 | equalizer=f=125:t=q:w=2.0:g=-48, \ |
| 238 | equalizer=f=250:t=q:w=2.0:g=-32, \ | 284 | equalizer=f=250:t=q:w=2.0:g=-32, \ |
| 239 | equalizer=f=500:t=q:w=2.0:g=-24, \ | 285 | equalizer=f=500:t=q:w=2.0:g=-24, \ |
| 240 | equalizer=f=1000:t=q:w=2.0:g=-12, \ | 286 | equalizer=f=1000:t=q:w=2.0:g=-12, \ |
| 241 | equalizer=f=2000:t=q:w=2.0:g=0, \ | 287 | equalizer=f=2000:t=q:w=2.0:g=0, \ |
| 242 | - equalizer=f=4000:t=q:w=2.0:g=0, \ | ||
| 243 | - equalizer=f=8000:t=q:w=2.0:g=0, \ | ||
| 244 | - equalizer=f=16000:t=q:w=2.0:g=0, \ | ||
| 245 | - anequalizer=c0 f=3250 w=750 g=-48 t=2|c1 f=3250 w=750 g=-48 t=2" | 288 | + equalizer=f=4000:t=q:w=2.0:g=-16, \ |
| 289 | + equalizer=f=8000:t=q:w=2.0:g=-24, \ | ||
| 290 | + equalizer=f=16000:t=q:w=2.0:g=-32" | ||
| 291 | + | ||
| 292 | +//113.3 | ||
| 293 | +#define Filter_No12 "equalizer=f=31:t=q:w=2.0:g=-42, \ | ||
| 294 | + equalizer=f=62:t=q:w=2.0:g=-42, \ | ||
| 295 | + equalizer=f=125:t=q:w=2.0:g=-42, \ | ||
| 296 | + equalizer=f=250:t=q:w=2.0:g=-28, \ | ||
| 297 | + equalizer=f=500:t=q:w=2.0:g=-16, \ | ||
| 298 | + equalizer=f=1000:t=q:w=2.0:g=0, \ | ||
| 299 | + equalizer=f=2000:t=q:w=2.0:g=0, \ | ||
| 300 | + equalizer=f=4000:t=q:w=2.0:g=-2, \ | ||
| 301 | + equalizer=f=8000:t=q:w=2.0:g=-4, \ | ||
| 302 | + equalizer=f=16000:t=q:w=2.0:g=-8" | ||
| 303 | + | ||
| 304 | +//115.6 降低两端 提高中段音量 | ||
| 305 | +/* | ||
| 306 | +00 35 | ||
| 307 | +01 37 | ||
| 308 | +03 39 | ||
| 309 | +04 41 | ||
| 310 | +05 43 | ||
| 311 | +06 45 | ||
| 312 | +07 47 | ||
| 313 | +09 49 发热过于严重 | ||
| 314 | +*/ | ||
| 315 | +#define Filter_No13 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 316 | + equalizer=f=62:t=q:w=2.0:g=-48, \ | ||
| 317 | + equalizer=f=125:t=q:w=2.0:g=-48, \ | ||
| 318 | + equalizer=f=250:t=q:w=2.0:g=-32, \ | ||
| 319 | + equalizer=f=500:t=q:w=2.0:g=-24, \ | ||
| 320 | + equalizer=f=1000:t=q:w=2.0:g=+8, \ | ||
| 321 | + equalizer=f=2000:t=q:w=2.0:g=+8, \ | ||
| 322 | + equalizer=f=4000:t=q:w=2.0:g=-4, \ | ||
| 323 | + equalizer=f=8000:t=q:w=2.0:g=-8, \ | ||
| 324 | + equalizer=f=16000:t=q:w=2.0:g=-12" | ||
| 325 | + | ||
| 326 | +//111 降低中频 提高低频 | ||
| 327 | +#define Filter_No14 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 328 | + equalizer=f=62:t=q:w=2.0:g=-48, \ | ||
| 329 | + equalizer=f=125:t=q:w=2.0:g=-48, \ | ||
| 330 | + equalizer=f=250:t=q:w=2.0:g=-18, \ | ||
| 331 | + equalizer=f=500:t=q:w=2.0:g=-12, \ | ||
| 332 | + equalizer=f=1000:t=q:w=2.0:g=-12, \ | ||
| 333 | + equalizer=f=2000:t=q:w=2.0:g=-10, \ | ||
| 334 | + equalizer=f=4000:t=q:w=2.0:g=-2, \ | ||
| 335 | + equalizer=f=8000:t=q:w=2.0:g=-4, \ | ||
| 336 | + equalizer=f=16000:t=q:w=2.0:g=-8" | ||
| 246 | 337 | ||
| 247 | -#define FILTER_PARAM Filter_No10 | 338 | +//112.1 14基础上补偿一点中频 |
| 339 | +#define Filter_No15 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 340 | + equalizer=f=62:t=q:w=2.0:g=-48, \ | ||
| 341 | + equalizer=f=125:t=q:w=2.0:g=-48, \ | ||
| 342 | + equalizer=f=250:t=q:w=2.0:g=-18, \ | ||
| 343 | + equalizer=f=500:t=q:w=2.0:g=-12, \ | ||
| 344 | + equalizer=f=1000:t=q:w=2.0:g=-8, \ | ||
| 345 | + equalizer=f=2000:t=q:w=2.0:g=-6, \ | ||
| 346 | + equalizer=f=4000:t=q:w=2.0:g=-2, \ | ||
| 347 | + equalizer=f=8000:t=q:w=2.0:g=-4, \ | ||
| 348 | + equalizer=f=16000:t=q:w=2.0:g=-8" | ||
| 349 | + | ||
| 350 | +//112.5 15基础上补偿一点低频 | ||
| 351 | +#define Filter_No16 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 352 | + equalizer=f=62:t=q:w=2.0:g=-48, \ | ||
| 353 | + equalizer=f=125:t=q:w=2.0:g=-32, \ | ||
| 354 | + equalizer=f=250:t=q:w=2.0:g=-12, \ | ||
| 355 | + equalizer=f=500:t=q:w=2.0:g=-6, \ | ||
| 356 | + equalizer=f=1000:t=q:w=2.0:g=-8, \ | ||
| 357 | + equalizer=f=2000:t=q:w=2.0:g=-6, \ | ||
| 358 | + equalizer=f=4000:t=q:w=2.0:g=-2, \ | ||
| 359 | + equalizer=f=8000:t=q:w=2.0:g=-4, \ | ||
| 360 | + equalizer=f=16000:t=q:w=2.0:g=-8" | ||
| 361 | + | ||
| 362 | +//117 10的基础上,降低中频,补偿高频 | ||
| 363 | +#define Filter_No17 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 364 | + equalizer=f=62:t=q:w=2.0:g=-48, \ | ||
| 365 | + equalizer=f=125:t=q:w=2.0:g=-48, \ | ||
| 366 | + equalizer=f=250:t=q:w=2.0:g=-32, \ | ||
| 367 | + equalizer=f=500:t=q:w=2.0:g=-24, \ | ||
| 368 | + equalizer=f=1000:t=q:w=2.0:g=-12, \ | ||
| 369 | + equalizer=f=2000:t=q:w=2.0:g=-8, \ | ||
| 370 | + equalizer=f=4000:t=q:w=2.0:g=+8, \ | ||
| 371 | + equalizer=f=8000:t=q:w=2.0:g=+4, \ | ||
| 372 | + equalizer=f=16000:t=q:w=2.0:g=+2" | ||
| 373 | + | ||
| 374 | +//115 17的基础上,减少中高频补偿 | ||
| 375 | +#define Filter_No18 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 376 | + equalizer=f=62:t=q:w=2.0:g=-48, \ | ||
| 377 | + equalizer=f=125:t=q:w=2.0:g=-48, \ | ||
| 378 | + equalizer=f=250:t=q:w=2.0:g=-32, \ | ||
| 379 | + equalizer=f=500:t=q:w=2.0:g=-24, \ | ||
| 380 | + equalizer=f=1000:t=q:w=2.0:g=-12, \ | ||
| 381 | + equalizer=f=2000:t=q:w=2.0:g=-8, \ | ||
| 382 | + equalizer=f=4000:t=q:w=2.0:g=+2, \ | ||
| 383 | + equalizer=f=8000:t=q:w=2.0:g=+4, \ | ||
| 384 | + equalizer=f=16000:t=q:w=2.0:g=+2" | ||
| 385 | + | ||
| 386 | +//114.6 18的基础上,减少中高频补偿 | ||
| 387 | +/* | ||
| 388 | +00 35 | ||
| 389 | +2 37 | ||
| 390 | +6 39 | ||
| 391 | +8 41 | ||
| 392 | +11 43 | ||
| 393 | +14 45 | ||
| 394 | +20 47 | ||
| 395 | +24 49 | ||
| 396 | +30 50 | ||
| 397 | +31 49 | ||
| 398 | +33 50 | ||
| 399 | +39 52 | ||
| 400 | +51 54 | ||
| 401 | +56 55 | ||
| 402 | +57 54 | ||
| 403 | +63 54 | ||
| 404 | +*/ | ||
| 405 | +#define Filter_No19 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 406 | + equalizer=f=62:t=q:w=2.0:g=-48, \ | ||
| 407 | + equalizer=f=125:t=q:w=2.0:g=-48, \ | ||
| 408 | + equalizer=f=250:t=q:w=2.0:g=-32, \ | ||
| 409 | + equalizer=f=500:t=q:w=2.0:g=-24, \ | ||
| 410 | + equalizer=f=1000:t=q:w=2.0:g=-12, \ | ||
| 411 | + equalizer=f=2000:t=q:w=2.0:g=-8, \ | ||
| 412 | + equalizer=f=4000:t=q:w=2.0:g=+1, \ | ||
| 413 | + equalizer=f=8000:t=q:w=2.0:g=+2, \ | ||
| 414 | + equalizer=f=16000:t=q:w=2.0:g=+2" | ||
| 415 | + | ||
| 416 | +// 19的基础上,补偿低频 比10号方案尖一点 | ||
| 417 | +/* | ||
| 418 | +0 35 | ||
| 419 | +3 37 | ||
| 420 | +5 39 | ||
| 421 | +7 41 | ||
| 422 | +10 43 | ||
| 423 | +14 45 | ||
| 424 | +18 47 | ||
| 425 | +23 49 | ||
| 426 | +27 50 | ||
| 427 | +34 52 | ||
| 428 | +35 50 | ||
| 429 | +36 52 | ||
| 430 | +42 54 | ||
| 431 | +55 55 | ||
| 432 | +63 55 | ||
| 433 | +*/ | ||
| 434 | +#define Filter_No20 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 435 | + equalizer=f=62:t=q:w=2.0:g=-36, \ | ||
| 436 | + equalizer=f=125:t=q:w=2.0:g=-30, \ | ||
| 437 | + equalizer=f=250:t=q:w=2.0:g=-26, \ | ||
| 438 | + equalizer=f=500:t=q:w=2.0:g=-20, \ | ||
| 439 | + equalizer=f=1000:t=q:w=2.0:g=-12, \ | ||
| 440 | + equalizer=f=2000:t=q:w=2.0:g=-8, \ | ||
| 441 | + equalizer=f=4000:t=q:w=2.0:g=+1, \ | ||
| 442 | + equalizer=f=8000:t=q:w=2.0:g=+2, \ | ||
| 443 | + equalizer=f=16000:t=q:w=2.0:g=+2" | ||
| 444 | + | ||
| 445 | +// 20的基础上,补偿中低频 | ||
| 446 | +/* | ||
| 447 | +0 35 | ||
| 448 | +3 37 | ||
| 449 | +5 39 | ||
| 450 | +7 41 | ||
| 451 | +11 43 | ||
| 452 | +13 45 | ||
| 453 | +14 47 | ||
| 454 | +17 49 | ||
| 455 | +19 50 | ||
| 456 | +20 52 | ||
| 457 | +22 50 | ||
| 458 | +23 52 | ||
| 459 | +26 54 | ||
| 460 | +27 55 | ||
| 461 | +*/ | ||
| 462 | +#define Filter_No21 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 463 | + equalizer=f=62:t=q:w=2.0:g=-36, \ | ||
| 464 | + equalizer=f=125:t=q:w=2.0:g=-30, \ | ||
| 465 | + equalizer=f=250:t=q:w=2.0:g=-24, \ | ||
| 466 | + equalizer=f=500:t=q:w=2.0:g=-16, \ | ||
| 467 | + equalizer=f=1000:t=q:w=2.0:g=-12, \ | ||
| 468 | + equalizer=f=2000:t=q:w=2.0:g=-8, \ | ||
| 469 | + equalizer=f=4000:t=q:w=2.0:g=+1, \ | ||
| 470 | + equalizer=f=8000:t=q:w=2.0:g=+2, \ | ||
| 471 | + equalizer=f=16000:t=q:w=2.0:g=+2" | ||
| 472 | + | ||
| 473 | +#define Filter_M30_1 "equalizer=f=31:t=q:w=2.0:g=-48, \ | ||
| 474 | + equalizer=f=62:t=q:w=2.0:g=-36, \ | ||
| 475 | + equalizer=f=125:t=q:w=2.0:g=-30, \ | ||
| 476 | + equalizer=f=250:t=q:w=2.0:g=-24, \ | ||
| 477 | + equalizer=f=500:t=q:w=2.0:g=-16, \ | ||
| 478 | + equalizer=f=1000:t=q:w=2.0:g=-12, \ | ||
| 479 | + equalizer=f=2000:t=q:w=2.0:g=-8, \ | ||
| 480 | + equalizer=f=4000:t=q:w=2.0:g=+1, \ | ||
| 481 | + equalizer=f=8000:t=q:w=2.0:g=+4, \ | ||
| 482 | + equalizer=f=16000:t=q:w=2.0:g=+3, \ | ||
| 483 | + anequalizer=c0 f=4000 w=1400 g=-22 t=0|c1 f=4000 w=1400 g=-22 t=0, \ | ||
| 484 | + anequalizer=c0 f=3700 w=1400 g=-22 t=0|c1 f=3700 w=1400 g=-22 t=0" | ||
| 485 | + | ||
| 486 | +#define FILTER_PARAM Filter_No20 | ||
| 248 | 487 | ||
| 249 | /* Exported types ------------------------------------------------------------*/ | 488 | /* Exported types ------------------------------------------------------------*/ |
| 250 | 489 |
| @@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
| 7 | #include "version_choose.h" | 7 | #include "version_choose.h" |
| 8 | #include "BaseConfig.h" | 8 | #include "BaseConfig.h" |
| 9 | #include "../SerialNumberProc/SerialProc.h" | 9 | #include "../SerialNumberProc/SerialProc.h" |
| 10 | -#include "Gimbal/Gimbal_InAndOut.h" | 10 | +#include "Gimbal/Gimbal.h" |
| 11 | #include "UI_control/Psdk_UI_io.h" | 11 | #include "UI_control/Psdk_UI_io.h" |
| 12 | 12 | ||
| 13 | #if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON | 13 | #if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON |
Module/Gimbal/Gimbal.c
0 → 100644
| 1 | +/* | ||
| 2 | + * @Author: ookk303 | ||
| 3 | + * @Date: 2024-08-23 17:46:53 | ||
| 4 | + * @LastEditors: Do not edit | ||
| 5 | + * @LastEditTime: 2024-08-28 15:26:17 | ||
| 6 | + * @Description: | ||
| 7 | + * @FilePath: \JZSDK_Linux\Module\Gimbal\Gimbal.c | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +#include <stdio.h> | ||
| 11 | +#include <pthread.h> | ||
| 12 | +#include <math.h> | ||
| 13 | +#include "JZsdkLib.h" | ||
| 14 | +#include "Gimbal/Gimbal_Param.h" | ||
| 15 | +#include "Gimbal/Gimbal.h" | ||
| 16 | +#include "Gimbal/Gimbal_DataDeal/Gimbal_DataDeal.h" | ||
| 17 | +#include "Gimbal/Gimbal_MotorFineTuning/MotorFineTuning.h" | ||
| 18 | +#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
| 19 | + | ||
| 20 | +#include "BaseConfig.h" | ||
| 21 | + | ||
| 22 | + | ||
| 23 | +//数值角度记录 | ||
| 24 | +static int Gimbal_PitchAngle = 0; //俯仰角度 //控制云台上相机相对于水平面的上下移动。 | ||
| 25 | +static int Gimbal_YawAngle = 0; //偏航角度 //个角度控制云台上相机相对于水平面的上下移动。 | ||
| 26 | +static int Gimbal_RollAngle = 0; //滚转角度 //控制云台上相机围绕其前后轴(即与相机镜头方向平行的轴)的旋转。 | ||
| 27 | + | ||
| 28 | +//微调角度 | ||
| 29 | +static int g_MotorFineTuningPitch = 0; //pitch微调值 | ||
| 30 | +static int g_MotorFineTuningYaw = 0; //yaw微调值 | ||
| 31 | +static int g_MotorFineTuningRoll = 0; //roll微调值 | ||
| 32 | + | ||
| 33 | +//飞机自身角度 | ||
| 34 | +static int Gimbal_UavSelfPitch = 0; | ||
| 35 | + | ||
| 36 | +//实际角度 (数值角度+飞机自身角度+微调角度) | ||
| 37 | +static int Gimbal_RealPitchAngle = 0; | ||
| 38 | + | ||
| 39 | +static int g_Gimbal_Linkage; //云台联动标志位 | ||
| 40 | + | ||
| 41 | +static int g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_OFF; //云台状态,用于判断云台是否已经初始化完毕 | ||
| 42 | + | ||
| 43 | +static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, int UAV_pitch); | ||
| 44 | + | ||
| 45 | +/************************** | ||
| 46 | + * | ||
| 47 | + * | ||
| 48 | + * 云台角度发送线程 | ||
| 49 | + * | ||
| 50 | + * | ||
| 51 | + * ***************************/ | ||
| 52 | +static void *Gimbal_SendAngleTask(void *arg) | ||
| 53 | +{ | ||
| 54 | + int Old_angle = 0; //上一次变化的角度 | ||
| 55 | + int Old_UAV_self_angle; //上一次飞机的角度 | ||
| 56 | + int Old_PitchFineTuning; //上一次微调的角度 | ||
| 57 | + | ||
| 58 | + JZSDK_LOG_INFO("云台角度发送初始化完成"); | ||
| 59 | + | ||
| 60 | + int test_value =0; | ||
| 61 | + | ||
| 62 | + while (1) | ||
| 63 | + { | ||
| 64 | + if (Gimbal_PitchAngle != Old_angle //云台角度发生了变化 | ||
| 65 | + || Gimbal_UavSelfPitch != Old_UAV_self_angle //飞机自身角度发生了变化 | ||
| 66 | + || g_MotorFineTuningPitch != Old_PitchFineTuning //微调角度发生了变化 | ||
| 67 | + ) | ||
| 68 | + { | ||
| 69 | + Old_angle = Gimbal_PitchAngle; | ||
| 70 | + Old_UAV_self_angle = Gimbal_UavSelfPitch; | ||
| 71 | + Old_PitchFineTuning = g_MotorFineTuningPitch; | ||
| 72 | + Gimbal_Set_RealPitchAngle(Old_angle, Old_PitchFineTuning, Old_UAV_self_angle); | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + //1s检测200次舵机角度 | ||
| 76 | + delayMs(1000/200); | ||
| 77 | + } | ||
| 78 | +} | ||
| 79 | + | ||
| 80 | +//发送线程初始化 | ||
| 81 | +static T_JZsdkReturnCode Gimbal_SendAngleTask_Init() | ||
| 82 | +{ | ||
| 83 | + pthread_t WriteDataTask; | ||
| 84 | + pthread_attr_t task_attribute; //线程属性 | ||
| 85 | + pthread_attr_init(&task_attribute); //初始化线程属性 | ||
| 86 | + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | ||
| 87 | + int opus_Protection = pthread_create(&WriteDataTask,&task_attribute,Gimbal_SendAngleTask,NULL); //线程 | ||
| 88 | + if(opus_Protection != 0) | ||
| 89 | + { | ||
| 90 | + JZSDK_LOG_ERROR("角度发送线程初始化失败!"); | ||
| 91 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + JZSDK_LOG_INFO("MODULE_GIMBAL_INIT_COMPLETE"); | ||
| 95 | +} | ||
| 96 | + | ||
| 97 | +//初始化舵机部分 | ||
| 98 | +static T_JZsdkReturnCode Gimal_MotorInit() | ||
| 99 | +{ | ||
| 100 | + //角度发送线程初始化 | ||
| 101 | + Gimbal_SendAngleTask_Init(); | ||
| 102 | + | ||
| 103 | + //数据处理初始化 | ||
| 104 | + Gimbal_DataDeal_init(); | ||
| 105 | + | ||
| 106 | +} | ||
| 107 | + | ||
| 108 | +//初始化云台模块 | ||
| 109 | +T_JZsdkReturnCode Gimbal_Init() | ||
| 110 | +{ | ||
| 111 | + //舵机初始化 | ||
| 112 | + Gimal_MotorInit(); | ||
| 113 | + | ||
| 114 | + //云台微调初始化 | ||
| 115 | + MotorFineTuning_Init(&g_MotorFineTuningPitch, &g_MotorFineTuningYaw, &g_MotorFineTuningRoll); | ||
| 116 | + | ||
| 117 | + //云台flag打开 | ||
| 118 | + g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_ON; | ||
| 119 | + | ||
| 120 | + JZSDK_LOG_INFO("JZsdk_Gimbal_Module_init"); | ||
| 121 | +} | ||
| 122 | + | ||
| 123 | +//设置云台俯仰角度 | ||
| 124 | +T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle) | ||
| 125 | +{ | ||
| 126 | + //禁止打印 | ||
| 127 | + //printf("设置云台俯仰角度\n"); | ||
| 128 | + | ||
| 129 | + //云台未初始化 | ||
| 130 | + if (g_JZsdk_GimbalStatusFlag != JZ_FLAGCODE_ON) | ||
| 131 | + { | ||
| 132 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + if (angle < MIN_PITCH || angle > MAX_PITCH || (MIN_PITCH == MAX_PITCH)) | ||
| 136 | + { | ||
| 137 | + printf("云台俯仰输入值范围出错:%d\n", angle); | ||
| 138 | + return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + Gimbal_PitchAngle = angle; | ||
| 142 | + | ||
| 143 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 144 | +} | ||
| 145 | + | ||
| 146 | +//设置云台航向角度 | ||
| 147 | +T_JZsdkReturnCode Gimbal_Set_YawAngle(int angle) | ||
| 148 | +{ | ||
| 149 | + printf("没有航向角度\n"); | ||
| 150 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 151 | +} | ||
| 152 | + | ||
| 153 | +//设置云台转向角度 | ||
| 154 | +T_JZsdkReturnCode Gimbal_Set_RollAngle(int angle) | ||
| 155 | +{ | ||
| 156 | + printf("没有转向角度\n"); | ||
| 157 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 158 | +} | ||
| 159 | + | ||
| 160 | +/******************* | ||
| 161 | + * | ||
| 162 | + * 设置Pitch_云台范围的最大最小值 | ||
| 163 | + * flag 0 pitch 1 yaw 2 roll | ||
| 164 | + * | ||
| 165 | + * *************************/ | ||
| 166 | +T_JZsdkReturnCode Gimbal_SetGimbalRange(int flag, int value) | ||
| 167 | +{ | ||
| 168 | + JZSDK_LOG_INFO("设置云台范围最大最小值 flag:%d 0x%x", flag, value); | ||
| 169 | + | ||
| 170 | + switch (flag) | ||
| 171 | + { | ||
| 172 | + case 0: | ||
| 173 | + return Gimbal_DataDeal_SetPitchRange(value); | ||
| 174 | + break; | ||
| 175 | + | ||
| 176 | + default: | ||
| 177 | + break; | ||
| 178 | + } | ||
| 179 | + | ||
| 180 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 181 | +} | ||
| 182 | + | ||
| 183 | +//查询云台微调值 | ||
| 184 | +T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTuningPitch, int *FineTuningYaw, int *FineTuningRoll) | ||
| 185 | +{ | ||
| 186 | + JZSDK_LOG_DEBUG("查询云台微调值"); | ||
| 187 | + | ||
| 188 | +//组合机需要去获取另外一个设备的值 | ||
| 189 | +#if DEVICE_VERSION == JZ_H1T | ||
| 190 | + //1、刷新微调值 | ||
| 191 | + JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(UART_DEV_1, 0); | ||
| 192 | + | ||
| 193 | + delayMs(10); | ||
| 194 | +#endif | ||
| 195 | + | ||
| 196 | + if (FineTuningPitch != NULL) | ||
| 197 | + { | ||
| 198 | + *FineTuningPitch = g_MotorFineTuningPitch; | ||
| 199 | + } | ||
| 200 | + | ||
| 201 | + if (FineTuningYaw != NULL) | ||
| 202 | + { | ||
| 203 | + *FineTuningYaw = g_MotorFineTuningYaw; | ||
| 204 | + } | ||
| 205 | + | ||
| 206 | + if (FineTuningRoll != NULL) | ||
| 207 | + { | ||
| 208 | + *FineTuningRoll = g_MotorFineTuningRoll; | ||
| 209 | + } | ||
| 210 | + | ||
| 211 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 212 | +} | ||
| 213 | + | ||
| 214 | +//收到云台微调值 | ||
| 215 | +T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch, int yaw, int roll) | ||
| 216 | +{ | ||
| 217 | + printf("收到云台pitch云台微调值\n"); | ||
| 218 | + | ||
| 219 | +//组合机需要记录另外一个设备的值 | ||
| 220 | +#if DEVICE_VERSION == JZ_H1T | ||
| 221 | + g_MotorFineTuningPitch = pitch; | ||
| 222 | +#else | ||
| 223 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 224 | +#endif | ||
| 225 | + | ||
| 226 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 227 | +} | ||
| 228 | + | ||
| 229 | + | ||
| 230 | +//设置pitch云台微调值 | ||
| 231 | +T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch) | ||
| 232 | +{ | ||
| 233 | + JZSDK_LOG_INFO("设置云台pitch云台微调值\n"); | ||
| 234 | + T_JZsdkReturnCode ret; | ||
| 235 | + | ||
| 236 | + if (pitch == 0) | ||
| 237 | + { | ||
| 238 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 239 | + } | ||
| 240 | + | ||
| 241 | + //设置本地微调值 | ||
| 242 | + g_MotorFineTuningPitch = g_MotorFineTuningPitch + pitch; | ||
| 243 | + | ||
| 244 | + //组合机是发到另外一个设备 | ||
| 245 | +#if DEVICE_VERSION == JZ_H1T | ||
| 246 | + JZsdk_Uart_Send_SetGimbalFineTuningPitch(UART_DEV_1, g_MotorFineTuningPitch); | ||
| 247 | +#else | ||
| 248 | + //存储到文件 | ||
| 249 | + MotorFineTuning_WritePitch(g_MotorFineTuningPitch); | ||
| 250 | +#endif | ||
| 251 | + | ||
| 252 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 253 | +} | ||
| 254 | + | ||
| 255 | +//设置yaw云台微调值 | ||
| 256 | +T_JZsdkReturnCode Gimbal_Set_YawFineTuning(int yaw) | ||
| 257 | +{ | ||
| 258 | + JZSDK_LOG_INFO("设置云台yaw云台微调值\n"); | ||
| 259 | + T_JZsdkReturnCode ret; | ||
| 260 | + | ||
| 261 | + if (yaw == 0) | ||
| 262 | + { | ||
| 263 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 264 | + } | ||
| 265 | + | ||
| 266 | + g_MotorFineTuningYaw = g_MotorFineTuningYaw + yaw; | ||
| 267 | + | ||
| 268 | + //微调后重设角度 | ||
| 269 | +} | ||
| 270 | + | ||
| 271 | +//设置roll云台微调值 | ||
| 272 | +T_JZsdkReturnCode Gimbal_Set_RollFineTuning(int pitch, int yaw, int roll) | ||
| 273 | +{ | ||
| 274 | + JZSDK_LOG_INFO("设置云台pitch云台微调值\n"); | ||
| 275 | + T_JZsdkReturnCode ret; | ||
| 276 | + | ||
| 277 | + | ||
| 278 | + if (roll == 0) | ||
| 279 | + { | ||
| 280 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 281 | + } | ||
| 282 | + | ||
| 283 | + g_MotorFineTuningRoll = g_MotorFineTuningRoll + roll; | ||
| 284 | + | ||
| 285 | + //微调后重设角度 | ||
| 286 | +} | ||
| 287 | + | ||
| 288 | + | ||
| 289 | +//设置云台联动 | ||
| 290 | +T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value) | ||
| 291 | +{ | ||
| 292 | + JZSDK_LOG_INFO("设置云台联动\n"); | ||
| 293 | + | ||
| 294 | + g_Gimbal_Linkage = value; | ||
| 295 | + | ||
| 296 | +#if DEVICE_VERSION == JZ_H1T | ||
| 297 | + JZsdk_Uart_Send_Set_GimbalLinkageControl(UART_DEV_1, 0, value); | ||
| 298 | +#else | ||
| 299 | + //暂时没做接口 | ||
| 300 | +#endif | ||
| 301 | + | ||
| 302 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 303 | + | ||
| 304 | +} | ||
| 305 | + | ||
| 306 | +//查询云台联动 | ||
| 307 | +T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value) | ||
| 308 | +{ | ||
| 309 | + JZSDK_LOG_INFO("查询云台联动值\n"); | ||
| 310 | + | ||
| 311 | +#if DEVICE_VERSION == JZ_H1T | ||
| 312 | + //1、刷新云台联动值 | ||
| 313 | + JZsdk_Uart_Send_CheckStatus_GimbalLinkage(UART_DEV_1, 0); | ||
| 314 | + | ||
| 315 | + delayMs(10); | ||
| 316 | + | ||
| 317 | + //2、回复云台联动值 | ||
| 318 | + *value = g_Gimbal_Linkage; | ||
| 319 | +#else | ||
| 320 | + //暂时没做接口 | ||
| 321 | +#endif | ||
| 322 | + | ||
| 323 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 324 | +} | ||
| 325 | + | ||
| 326 | +//收到云台联动值 | ||
| 327 | +T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage) | ||
| 328 | +{ | ||
| 329 | + JZSDK_LOG_INFO("收到云台联动值\n"); | ||
| 330 | + | ||
| 331 | + g_Gimbal_Linkage = GimbalLinkage; | ||
| 332 | + | ||
| 333 | +#if DEVICE_VERSION == JZ_H1T | ||
| 334 | + //无操作 | ||
| 335 | + //毕竟是t60s返回来的值 | ||
| 336 | +#else | ||
| 337 | + //暂时没做接口 | ||
| 338 | +#endif | ||
| 339 | + | ||
| 340 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 341 | +} | ||
| 342 | + | ||
| 343 | +/********* | ||
| 344 | + * | ||
| 345 | + * 查询云台角度 | ||
| 346 | + * | ||
| 347 | +**********/ | ||
| 348 | +T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle) | ||
| 349 | +{ | ||
| 350 | +//组合机刷新查询角度 | ||
| 351 | +#if DEVICE_VERSION == JZ_H1T | ||
| 352 | + JZsdk_Uart_Send_CheckStatus_GimbalAngle(UART_DEV_1, 0); | ||
| 353 | + | ||
| 354 | + //给点延时问题不大 | ||
| 355 | + delayMs(5); | ||
| 356 | +#else | ||
| 357 | + //直接获取即可 | ||
| 358 | +#endif | ||
| 359 | + | ||
| 360 | + //2、获取一次本地云台角度 | ||
| 361 | + if (PitchAngle != NULL) | ||
| 362 | + { | ||
| 363 | + *PitchAngle = Gimbal_PitchAngle; | ||
| 364 | + } | ||
| 365 | + | ||
| 366 | + if (YawAngle != NULL) | ||
| 367 | + { | ||
| 368 | + *YawAngle = Gimbal_YawAngle; | ||
| 369 | + } | ||
| 370 | + | ||
| 371 | + if (RollAngle != NULL) | ||
| 372 | + { | ||
| 373 | + *RollAngle = Gimbal_RollAngle; | ||
| 374 | + } | ||
| 375 | + | ||
| 376 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 377 | +} | ||
| 378 | + | ||
| 379 | + | ||
| 380 | +//获得云台值 | ||
| 381 | +T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch) | ||
| 382 | +{ | ||
| 383 | + //目前 U3和 H1T会接受到云台返回值 | ||
| 384 | + if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 385 | + { | ||
| 386 | + //不做处理,避免出现什么问题 | ||
| 387 | + } | ||
| 388 | + else if (DEVICE_VERSION == JZ_H1T) | ||
| 389 | + { | ||
| 390 | + //Gimbal_PitchAngle = Pitch; | ||
| 391 | + //这里暂时不处理,避免多次把5a帧返还给串口1设备 | ||
| 392 | + //但是会导致4g接收不到最新的角度 | ||
| 393 | + } | ||
| 394 | + else | ||
| 395 | + { | ||
| 396 | + //不处理,避免出现什么问题 | ||
| 397 | + } | ||
| 398 | + | ||
| 399 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 400 | +} | ||
| 401 | + | ||
| 402 | +/************************************************************** | ||
| 403 | + * | ||
| 404 | + * | ||
| 405 | + * 飞机特殊控制云台方法 | ||
| 406 | + * | ||
| 407 | + * | ||
| 408 | +***************************************************************/ | ||
| 409 | +//1、飞机自身角度控制云台 | ||
| 410 | +T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch) | ||
| 411 | +{ | ||
| 412 | + if (Gimbal_UavSelfPitch == Pitch) | ||
| 413 | + { | ||
| 414 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 415 | + } | ||
| 416 | + | ||
| 417 | + Gimbal_UavSelfPitch = Pitch; | ||
| 418 | + | ||
| 419 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 420 | + | ||
| 421 | +} | ||
| 422 | + | ||
| 423 | +//2、滑动条 换算 云台角度 | ||
| 424 | +int Gimbal_PitchScaleMode(int value) | ||
| 425 | +{ | ||
| 426 | + int step = (abs(MAX_PITCH) + abs(MIN_PITCH)) / 100; | ||
| 427 | + | ||
| 428 | + int angle = 0; | ||
| 429 | + | ||
| 430 | + angle = value * step + MIN_PITCH; | ||
| 431 | + | ||
| 432 | + return angle; | ||
| 433 | +} | ||
| 434 | + | ||
| 435 | +//3、拨轮控制云台 | ||
| 436 | +T_JZsdkReturnCode Gimbal_PitchRotationMode(int value) | ||
| 437 | +{ | ||
| 438 | + int angle; | ||
| 439 | + | ||
| 440 | + //JZSDK_LOG_DEBUG("拨轮控制"); | ||
| 441 | + if (MAX_PITCH == MIN_PITCH) | ||
| 442 | + { | ||
| 443 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 444 | + } | ||
| 445 | + | ||
| 446 | + | ||
| 447 | + angle = Gimbal_PitchAngle + value; | ||
| 448 | + if (angle > MAX_PITCH) | ||
| 449 | + { | ||
| 450 | + angle = MAX_PITCH; | ||
| 451 | + } | ||
| 452 | + else if (angle < MIN_PITCH) | ||
| 453 | + { | ||
| 454 | + angle = MIN_PITCH; | ||
| 455 | + } | ||
| 456 | + | ||
| 457 | + if (angle == Gimbal_PitchAngle) | ||
| 458 | + { | ||
| 459 | + //printf("拨轮控制无效\n"); | ||
| 460 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 461 | + } | ||
| 462 | + | ||
| 463 | + Gimbal_Set_PitchAngle(angle); | ||
| 464 | + | ||
| 465 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 466 | +} | ||
| 467 | + | ||
| 468 | +//输入角度,回复滑动条值 | ||
| 469 | +int Gimbal_ReplyPitchToUAVScale(int angle) | ||
| 470 | +{ | ||
| 471 | + int value; | ||
| 472 | + | ||
| 473 | + int step = (abs(MAX_PITCH) + abs(MIN_PITCH)) / 100; | ||
| 474 | + value = (angle - MIN_PITCH)/step; | ||
| 475 | + | ||
| 476 | + return value; | ||
| 477 | +} | ||
| 478 | + | ||
| 479 | + | ||
| 480 | +//设置云台俯仰角度 | ||
| 481 | +static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, int UAV_pitch) | ||
| 482 | +{ | ||
| 483 | + int temp_angle = 0; | ||
| 484 | + | ||
| 485 | +//组合机不用堆叠角度 | ||
| 486 | +#if DEVICE_VERSION == JZ_H1T | ||
| 487 | + temp_angle = pitch; | ||
| 488 | + Gimbal_RealPitchAngle = temp_angle; | ||
| 489 | +#else | ||
| 490 | + //叠加飞机角度和微调角度 | ||
| 491 | + temp_angle = pitch - UAV_pitch + FineTuningP; | ||
| 492 | + | ||
| 493 | + if (temp_angle < MIN_PITCH) | ||
| 494 | + { | ||
| 495 | + temp_angle = MIN_PITCH; | ||
| 496 | + } | ||
| 497 | + | ||
| 498 | + if (temp_angle > MAX_PITCH) | ||
| 499 | + { | ||
| 500 | + temp_angle = MAX_PITCH; | ||
| 501 | + } | ||
| 502 | + | ||
| 503 | + Gimbal_RealPitchAngle = temp_angle; | ||
| 504 | +#endif | ||
| 505 | + | ||
| 506 | + //printf("设置真实俯仰角度\n"); //禁止打印 | ||
| 507 | + | ||
| 508 | + Gimbal_DataDeal_SetRealAngle(temp_angle); | ||
| 509 | + | ||
| 510 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 511 | +} | ||
| 512 | + | ||
| 513 | + | ||
| 514 | + | ||
| 515 | +T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag() | ||
| 516 | +{ | ||
| 517 | + return g_JZsdk_GimbalStatusFlag; | ||
| 518 | +} | ||
| 519 | + | ||
| 520 | + | ||
| 521 | +int Gimbal_Get_PitchAngle() | ||
| 522 | +{ | ||
| 523 | + return Gimbal_PitchAngle; | ||
| 524 | +} | ||
| 525 | + | ||
| 526 | +int Gimbal_Get_PitchFineTuning() | ||
| 527 | +{ | ||
| 528 | + return g_MotorFineTuningPitch; | ||
| 529 | +} | ||
| 530 | + | ||
| 531 | +int Gimbal_Get_PitchRealPitchAngle() | ||
| 532 | +{ | ||
| 533 | + return Gimbal_RealPitchAngle; | ||
| 534 | +} |
| 1 | /** | 1 | /** |
| 2 | ******************************************************************** | 2 | ******************************************************************** |
| 3 | - * @file GIMBAL_INPUTANDOUTPUT.h | ||
| 4 | - * GIMBAL_INPUTANDOUTPUT的头文件 | 3 | + * @file GIMBAL.h |
| 4 | + * GIMBAL.h 的头文件 | ||
| 5 | * | 5 | * |
| 6 | ********************************************************************* | 6 | ********************************************************************* |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
| 10 | -#ifndef GIMBAL_INPUTANDOUTPUT_H | ||
| 11 | -#define GIMBAL_INPUTANDOUTPUT_H | 10 | +#ifndef GIMBAL_H |
| 11 | +#define GIMBAL_H | ||
| 12 | 12 | ||
| 13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
| 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
| @@ -23,26 +23,35 @@ extern "C" { | @@ -23,26 +23,35 @@ extern "C" { | ||
| 23 | /* Exported types ------------------------------------------------------------*/ | 23 | /* Exported types ------------------------------------------------------------*/ |
| 24 | 24 | ||
| 25 | /* Exported functions --------------------------------------------------------*/ | 25 | /* Exported functions --------------------------------------------------------*/ |
| 26 | -int Gimbal_Init(); | 26 | +T_JZsdkReturnCode Gimbal_Init(); |
| 27 | +T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag(); | ||
| 28 | + | ||
| 29 | + | ||
| 27 | T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle); | 30 | T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle); |
| 28 | -int Gimbal_Get_PitchAngle(); | ||
| 29 | -T_JZsdkReturnCode Gimbal_SetGimbalRange(int value); | ||
| 30 | -T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch); | ||
| 31 | -T_JZsdkReturnCode Gimbal_Get_GimbalFineTuning(int *Pitch); | ||
| 32 | -T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int DeviceName ,int pitch); | ||
| 33 | -T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTunigPitch, int *FineTunigYaw); | ||
| 34 | -T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch); | ||
| 35 | -int Gimbal_Get_PitchFineTuning(); | 31 | +T_JZsdkReturnCode Gimbal_Set_YawAngle(int angle); |
| 32 | +T_JZsdkReturnCode Gimbal_Set_RollAngle(int angle); | ||
| 33 | + | ||
| 34 | +T_JZsdkReturnCode Gimbal_SetGimbalRange(int flag, int value); | ||
| 35 | +T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTuningPitch, int *FineTuningYaw, int *FineTuningRoll); | ||
| 36 | +T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch, int yaw, int roll); | ||
| 37 | +T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch); | ||
| 38 | +T_JZsdkReturnCode Gimbal_Set_YawFineTuning(int yaw); | ||
| 39 | +T_JZsdkReturnCode Gimbal_Set_RollFineTuning(int pitch, int yaw, int roll); | ||
| 36 | T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value); | 40 | T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value); |
| 37 | T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value); | 41 | T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value); |
| 38 | T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage); | 42 | T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage); |
| 39 | -T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle); | 43 | +T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle); |
| 44 | +T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch); | ||
| 45 | + | ||
| 40 | 46 | ||
| 41 | T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch); | 47 | T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch); |
| 42 | int Gimbal_PitchScaleMode(int value); | 48 | int Gimbal_PitchScaleMode(int value); |
| 43 | T_JZsdkReturnCode Gimbal_PitchRotationMode(int value); | 49 | T_JZsdkReturnCode Gimbal_PitchRotationMode(int value); |
| 44 | int Gimbal_ReplyPitchToUAVScale(int angle); | 50 | int Gimbal_ReplyPitchToUAVScale(int angle); |
| 45 | -int Get_JZsdk_GimbalStatusFlag(); | 51 | + |
| 52 | + | ||
| 53 | +int Gimbal_Get_PitchAngle(); | ||
| 54 | +int Gimbal_Get_PitchFineTuning(); | ||
| 46 | int Gimbal_Get_PitchRealPitchAngle(); | 55 | int Gimbal_Get_PitchRealPitchAngle(); |
| 47 | 56 | ||
| 48 | #ifdef __cplusplus | 57 | #ifdef __cplusplus |
| 1 | +#include <stdio.h> | ||
| 2 | +#include <stdlib.h> | ||
| 3 | +#include <string.h> | ||
| 4 | + | ||
| 5 | +#include "JZsdkLib.h" | ||
| 6 | +#include "BaseConfig.h" | ||
| 7 | + | ||
| 8 | +#include "JZsdk_uart/UartConnection/UartConnection.h" | ||
| 9 | +#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
| 10 | + | ||
| 11 | +#include "JZsdk_TaskManagement/TaskManagement.h" | ||
| 12 | +#include "Gimbal_SpecialUart/Gimbal_SpecialUart.h" | ||
| 13 | + | ||
| 14 | +#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
| 15 | + #include <wiringPi.h> | ||
| 16 | +#endif | ||
| 17 | + | ||
| 18 | + | ||
| 19 | +/****************** | ||
| 20 | + * | ||
| 21 | + | ||
| 22 | + * | ||
| 23 | + * **************/ | ||
| 24 | +T_JZsdkReturnCode Gimbal_DataDeal_init() | ||
| 25 | +{ | ||
| 26 | +//由于150s 150t 开发时还没有帧协议,所以是一个独特的控制类型 | ||
| 27 | +#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
| 28 | + | ||
| 29 | + int Uart_fd = 0; | ||
| 30 | + | ||
| 31 | + //1、串口初始化 | ||
| 32 | + Uart_fd = UartConnection_UartEnabled(GIMBAL_UART_NUM, GIMBAL_UART_BITRATE); | ||
| 33 | + | ||
| 34 | + //2、串口接收初始化 | ||
| 35 | + Gimbal_SpecialUart_UartReceive_Init(Uart_fd); | ||
| 36 | + | ||
| 37 | +//不需特地初始化 | ||
| 38 | +#elif DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_C1 | ||
| 39 | + // 不用去特地初始化t60的云台 | ||
| 40 | +#elif DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 \ | ||
| 41 | + || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == TF_A1 | ||
| 42 | + //设置0度 | ||
| 43 | + | ||
| 44 | +#else | ||
| 45 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 46 | +#endif | ||
| 47 | + | ||
| 48 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 49 | +} | ||
| 50 | + | ||
| 51 | +T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle) | ||
| 52 | +{ | ||
| 53 | + int angle_PWM = 0; | ||
| 54 | + | ||
| 55 | +#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
| 56 | + //调整为PWM值 1000~2000 | ||
| 57 | + | ||
| 58 | + //完整计算公式 | ||
| 59 | + //angle_PWM= PITCH_PWM_MIN +(-angle)*(PITCH_PWM_MAX-PITCH_PWM_MIN)/(abs(MAX_PITCH)+abs(MIN_PITCH)); | ||
| 60 | + //简化为 | ||
| 61 | + angle_PWM= PITCH_PWM_MIN +(angle)*(PITCH_PWM_MAX-PITCH_PWM_MIN)/MIN_PITCH; | ||
| 62 | + | ||
| 63 | + unsigned char send_angle[]={0x5a,0x00,0x00,0xa5}; | ||
| 64 | + send_angle[1]=(unsigned char )(angle_PWM); | ||
| 65 | + send_angle[2]=(unsigned char )(angle_PWM>>8); | ||
| 66 | + | ||
| 67 | + Gimbal_SpecialUart_UartSend(send_angle, 4); | ||
| 68 | +#elif DEVICE_VERSION == JZ_H10 | ||
| 69 | + int base = 200; | ||
| 70 | + //完整计算公式 | ||
| 71 | + //angle_PWM = base + angle*195/((abs(MAX_PITCH)+abs(MIN_PITCH))) | ||
| 72 | + | ||
| 73 | + //简化为 | ||
| 74 | + angle_PWM = base + angle*195/MIN_PITCH; | ||
| 75 | + | ||
| 76 | + //上调15度 | ||
| 77 | + //angle_PWM = 200 -angle*195/900 -150*195/900; //上调15度 | ||
| 78 | +#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
| 79 | + pwmWrite(18,angle_PWM); | ||
| 80 | +#endif | ||
| 81 | + | ||
| 82 | +#elif DEVICE_VERSION == JZ_H10T | ||
| 83 | + //因为PWM写的时候是按90度写的,所以分母是900,不是设定的600 | ||
| 84 | + PWM_num = ( angle * (V3S_H10T_angle_PWM_MAX-V3S_H10T_angle_PWM_MIN) /900 ) + V3S_H10T_angle_PWM_MAX; | ||
| 85 | + | ||
| 86 | + if (PWM_num > PITCH_PWM_MAX) | ||
| 87 | + { | ||
| 88 | + PWM_num = PITCH_PWM_MAX; | ||
| 89 | + } | ||
| 90 | + if (PWM_num < PITCH_PWM_MIN) | ||
| 91 | + { | ||
| 92 | + PWM_num = PITCH_PWM_MIN; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + Ircut_PWM_control(PWM_num); | ||
| 96 | + | ||
| 97 | +#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \ | ||
| 98 | + || DEVICE_VERSION == TF_A1 | ||
| 99 | + | ||
| 100 | + //发送角度给串口2 | ||
| 101 | + JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_2, angle); | ||
| 102 | + | ||
| 103 | +#elif DEVICE_VERSION == JZ_H1T | ||
| 104 | + | ||
| 105 | + //发送角度给串口1 | ||
| 106 | + JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_1, angle); | ||
| 107 | + | ||
| 108 | +#else | ||
| 109 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 110 | +#endif | ||
| 111 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 112 | +} | ||
| 113 | + | ||
| 114 | + | ||
| 115 | +T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range) | ||
| 116 | +{ | ||
| 117 | + if (Range != 0xFF && Range != 0x00) | ||
| 118 | + { | ||
| 119 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | +#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
| 123 | + uint8_t set_min_motor[]={0x4A,0x00,0x00,0xA4}; | ||
| 124 | + uint8_t set_max_motor[]={0x6A,0x00,0x00,0xA6}; | ||
| 125 | + | ||
| 126 | + if (Range == 0xFF) | ||
| 127 | + { | ||
| 128 | + Gimbal_SpecialUart_UartSend(set_max_motor, 4); | ||
| 129 | + } | ||
| 130 | + else if (Range == 0x00) | ||
| 131 | + { | ||
| 132 | + Gimbal_SpecialUart_UartSend(set_min_motor, 4); | ||
| 133 | + } | ||
| 134 | +#elif DEVICE_VERSION == JZ_H10 | ||
| 135 | + | ||
| 136 | + //还没想好怎么弄 | ||
| 137 | + | ||
| 138 | +#elif DEVICE_VERSION == JZ_H10T | ||
| 139 | + | ||
| 140 | + //还没想好怎么弄 | ||
| 141 | + | ||
| 142 | +#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \ | ||
| 143 | + || DEVICE_VERSION == TF_A1 | ||
| 144 | + | ||
| 145 | + if (Range == 0xFF) | ||
| 146 | + { | ||
| 147 | + JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
| 148 | + } | ||
| 149 | + else if (Range == 0x00) | ||
| 150 | + { | ||
| 151 | + JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | +#elif DEVICE_VERSION == JZ_H1T | ||
| 155 | + | ||
| 156 | + //好像没必要弄 | ||
| 157 | + | ||
| 158 | +#else | ||
| 159 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 160 | +#endif | ||
| 161 | + | ||
| 162 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 163 | +} | ||
| 164 | + |
| 1 | +/* | ||
| 2 | + * @Author: ookk303 | ||
| 3 | + * @Date: 2024-08-28 14:58:07 | ||
| 4 | + * @LastEditors: Do not edit | ||
| 5 | + * @LastEditTime: 2024-08-28 15:03:34 | ||
| 6 | + * @Description: | ||
| 7 | + * @FilePath: \JZSDK_Linux\Module\Gimbal\Gimbal_DataDeal\Gimbal_Gimbal_DataDeal | ||
| 8 | + */ | ||
| 1 | /** | 9 | /** |
| 2 | ******************************************************************** | 10 | ******************************************************************** |
| 3 | - * @file GIMBAL_H3_H10.h | ||
| 4 | - * H3板子的h10云台头文件 | 11 | + * @file Gimbal_DataDeal.h |
| 12 | + * Gimbal_DataDeal.h 的头文件 | ||
| 5 | * | 13 | * |
| 6 | ********************************************************************* | 14 | ********************************************************************* |
| 7 | */ | 15 | */ |
| 8 | 16 | ||
| 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 17 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
| 10 | -#ifndef GIMBAL_H3_H10_H | ||
| 11 | -#define GIMBAL_H3_H10_H | 18 | +#ifndef GIMBAL_DATADEAL_H |
| 19 | +#define GIMBAL_DATADEAL_H | ||
| 12 | 20 | ||
| 13 | /* Includes ------------------------------------------------------------------*/ | 21 | /* Includes ------------------------------------------------------------------*/ |
| 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
| @@ -23,12 +31,11 @@ extern "C" { | @@ -23,12 +31,11 @@ extern "C" { | ||
| 23 | /* Exported types ------------------------------------------------------------*/ | 31 | /* Exported types ------------------------------------------------------------*/ |
| 24 | 32 | ||
| 25 | /* Exported functions --------------------------------------------------------*/ | 33 | /* Exported functions --------------------------------------------------------*/ |
| 26 | -int Gimbal_H3_H10_set_angle(int angle); | ||
| 27 | -void Gimbal_H3_H10_init_motor(void); | ||
| 28 | -int Gimbal_H3_H10_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
| 29 | -//云台微调 | ||
| 30 | -T_JZsdkReturnCode Gimbal_H3_H10_set_PitchFineTuning(int Pitch); | ||
| 31 | 34 | ||
| 35 | +T_JZsdkReturnCode Gimbal_DataDeal_init(); //初始化 | ||
| 36 | +T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle); | ||
| 37 | +T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range); | ||
| 38 | +T_JZsdkReturnCode Read_MotorFineTuning_Pitch(int *value); | ||
| 32 | 39 | ||
| 33 | #ifdef __cplusplus | 40 | #ifdef __cplusplus |
| 34 | } | 41 | } |
| 1 | -/* Includes ------------------------------------------------------------------*/ | ||
| 2 | -#include <stdio.h> | ||
| 3 | -#include <pthread.h> | ||
| 4 | -#include <stdlib.h> | ||
| 5 | - | ||
| 6 | -#include "Gimbal_H3_H10.h" | ||
| 7 | -#include "version_choose.h" | ||
| 8 | - | ||
| 9 | -#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
| 10 | - #include <wiringPi.h> | ||
| 11 | -#endif | ||
| 12 | - | ||
| 13 | - | ||
| 14 | -/* Private constants ---------------------------------------------------------*/ | ||
| 15 | -#define MOTOR_FILE_PATH "/root/motor" | ||
| 16 | -#define H3_H10_angle_PWM_MIN 1000 | ||
| 17 | -#define H3_H10_angle_PWM_MAX 2000 | ||
| 18 | - | ||
| 19 | -#define H3_H10_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
| 20 | - | ||
| 21 | -/* Private types -------------------------------------------------------------*/ | ||
| 22 | - | ||
| 23 | -/* Private functions declaration ---------------------------------------------*/ | ||
| 24 | -#define MOTOR 18 | ||
| 25 | - | ||
| 26 | -static int H3_H10_motor_precise_adjustment_pitch =0;//默认H3微调值为0 | ||
| 27 | - | ||
| 28 | -static void *Gimbal_H3_H10_Motor_control(void *arg); | ||
| 29 | -static int H3_H10_Read_MotorAdjustmentPitch(void); | ||
| 30 | -static void H3_H10_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
| 31 | - | ||
| 32 | -int Gimbal_H3_H10_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
| 33 | -{ | ||
| 34 | - *AdjustmentPitch = H3_H10_motor_precise_adjustment_pitch; | ||
| 35 | -} | ||
| 36 | - | ||
| 37 | -void Gimbal_H3_H10_init_motor(void) | ||
| 38 | -{ | ||
| 39 | - H3_H10_motor_precise_adjustment_pitch = H3_H10_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
| 40 | - Gimbal_H3_H10_set_angle(0); | ||
| 41 | -} | ||
| 42 | - | ||
| 43 | - | ||
| 44 | -int Gimbal_H3_H10_set_angle(int angle) | ||
| 45 | -{ | ||
| 46 | - printf("H3_H10_angle:%d\n",angle); | ||
| 47 | - | ||
| 48 | - //每43.5对饮20度 | ||
| 49 | - int num = 200 -angle*195/900; //正常 | ||
| 50 | - //int num = 200 -angle*195/900 -150*195/900; //上调15度 | ||
| 51 | -#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
| 52 | - | ||
| 53 | - pwmWrite(MOTOR,num); | ||
| 54 | -#endif | ||
| 55 | -} | ||
| 56 | - | ||
| 57 | -//云台微调 | ||
| 58 | -T_JZsdkReturnCode Gimbal_H3_H10_set_PitchFineTuning(int Pitch) | ||
| 59 | -{ | ||
| 60 | - //微调的角度值 提高Pitch | ||
| 61 | - H3_H10_motor_precise_adjustment_pitch += Pitch; | ||
| 62 | - | ||
| 63 | - //写入本地文件 | ||
| 64 | - H3_H10_Write_MotorAdjustmentPitch(H3_H10_motor_precise_adjustment_pitch); | ||
| 65 | - | ||
| 66 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 67 | - | ||
| 68 | -} | ||
| 69 | - | ||
| 70 | -//从文件中读出电机微调值 | ||
| 71 | -static int H3_H10_Read_MotorAdjustmentPitch(void) | ||
| 72 | -{ | ||
| 73 | - FILE *motor_file; | ||
| 74 | - int MotorAdjustmentPitch = 0; | ||
| 75 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
| 76 | - if (motor_file == NULL) | ||
| 77 | - { | ||
| 78 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 79 | - if (motor_file == NULL) | ||
| 80 | - { | ||
| 81 | - return 0; | ||
| 82 | - } | ||
| 83 | - } | ||
| 84 | - else | ||
| 85 | - { | ||
| 86 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
| 87 | - if (ret != 0) { | ||
| 88 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
| 89 | - } | ||
| 90 | - | ||
| 91 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
| 92 | - if (ret != sizeof(unsigned int)) { | ||
| 93 | - printf("Read motor weitiao error.\r\n"); | ||
| 94 | - } | ||
| 95 | - else{ | ||
| 96 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 97 | - } | ||
| 98 | - } | ||
| 99 | - fclose(motor_file); | ||
| 100 | - | ||
| 101 | - return MotorAdjustmentPitch; | ||
| 102 | -} | ||
| 103 | - | ||
| 104 | -//写入电机微调值刀文件中 | ||
| 105 | -static void H3_H10_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
| 106 | -{ | ||
| 107 | - //写入文件 | ||
| 108 | - FILE *motor_file; | ||
| 109 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 110 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
| 111 | - if (ret != sizeof(unsigned int)) { | ||
| 112 | - printf("Write motor weitiao error.\r\n"); | ||
| 113 | - } | ||
| 114 | - else{ | ||
| 115 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 116 | - } | ||
| 117 | - | ||
| 118 | - fclose(motor_file); | ||
| 119 | -} | ||
| 120 | - | ||
| 121 | - |
| 1 | -/* Includes ------------------------------------------------------------------*/ | ||
| 2 | -#include <stdio.h> | ||
| 3 | -#include <stdlib.h> | ||
| 4 | -#include <string.h> | ||
| 5 | - | ||
| 6 | -#include <pthread.h> | ||
| 7 | - | ||
| 8 | -#include "Gimbal_H3_H150ST_UartDeal.h" | ||
| 9 | -#include "Gimbal_H3_H150ST.h" | ||
| 10 | -#include "BaseConfig.h" | ||
| 11 | - | ||
| 12 | -#include "JZsdk_uart/UartConnection/UartConnection.h" | ||
| 13 | -#include "JZsdk_TaskManagement/TaskManagement.h" | ||
| 14 | - | ||
| 15 | - | ||
| 16 | -/* Private constants ---------------------------------------------------------*/ | ||
| 17 | -#define MOTOR_FILE_PATH "/root/motor" | ||
| 18 | -#define H3_H150ST_angle_PWM_MIN 1000 | ||
| 19 | -#define H3_H150ST_angle_PWM_MAX 2000 | ||
| 20 | - | ||
| 21 | -#define H3_H150ST_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
| 22 | - | ||
| 23 | -/* Private types -------------------------------------------------------------*/ | ||
| 24 | - | ||
| 25 | -/* Private functions declaration ---------------------------------------------*/ | ||
| 26 | - | ||
| 27 | -static int H3_H150ST_motor_precise_adjustment_pitch =0;//默认H3微调值为0 | ||
| 28 | - | ||
| 29 | -static void *H3_H150ST_Motor_control(void *arg); | ||
| 30 | -static void H3_H150ST_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
| 31 | -static int H3_H150ST_Read_MotorAdjustmentPitch(); | ||
| 32 | - | ||
| 33 | -T_JZsdkReturnCode Gimbal_H3_H150ST_init_motor() | ||
| 34 | -{ | ||
| 35 | - int Uart_fd = 0; | ||
| 36 | - //1、串口初始化 | ||
| 37 | - Uart_fd = UartConnection_UartEnabled(GIMBAL_UART_NUM, GIMBAL_UART_BITRATE); | ||
| 38 | - | ||
| 39 | - //2、串口接收初始化 | ||
| 40 | - Gimbal_H3_H150ST_UartDeal_Receive(Uart_fd); | ||
| 41 | - | ||
| 42 | - //从文件中读出电机微调值 | ||
| 43 | - H3_H150ST_motor_precise_adjustment_pitch = H3_H150ST_Read_MotorAdjustmentPitch(); | ||
| 44 | -} | ||
| 45 | - | ||
| 46 | -/********** | ||
| 47 | - * | ||
| 48 | - * 发送任务函数 | ||
| 49 | - * | ||
| 50 | - * ***********/ | ||
| 51 | -static void JZsdk_Uart_UartSend_Task(void *data) | ||
| 52 | -{ | ||
| 53 | - Gimbal_H3_H150ST_UartDeal_UartSend(data, 4); | ||
| 54 | -} | ||
| 55 | - | ||
| 56 | -/**************** | ||
| 57 | - * | ||
| 58 | - * | ||
| 59 | - * 发送函数 | ||
| 60 | - * | ||
| 61 | - * ****************/ | ||
| 62 | -T_JZsdkReturnCode H150ST_UartSend(unsigned char *data, int num) | ||
| 63 | -{ | ||
| 64 | - unsigned char *str = (unsigned char*)malloc(sizeof(data)); | ||
| 65 | - memcpy(str, data, sizeof(data)); | ||
| 66 | - | ||
| 67 | - T_JZsdkReturnCode ret = TaskManagement_SubmitTask(JZsdk_Uart_UartSend_Task, (void *)str); | ||
| 68 | - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
| 69 | - { | ||
| 70 | - free(str); | ||
| 71 | - return ret; | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 75 | -} | ||
| 76 | - | ||
| 77 | - | ||
| 78 | -//设置角度 | ||
| 79 | -int H3_H150ST_Gimbal_SetAngle(int angle) | ||
| 80 | -{ | ||
| 81 | - //调整为PWM值 1000~2000 | ||
| 82 | - int angle_PWM = 0; | ||
| 83 | - | ||
| 84 | - if(angle>=0){ | ||
| 85 | - angle_PWM = H3_H150ST_angle_PWM_MIN; | ||
| 86 | - } | ||
| 87 | - else if(angle<=-900){ | ||
| 88 | - angle_PWM = H3_H150ST_angle_PWM_MAX; | ||
| 89 | - } | ||
| 90 | - else if(angle<0 && angle>-900) | ||
| 91 | - { | ||
| 92 | - angle_PWM= H3_H150ST_angle_PWM_MIN +(-angle)*(H3_H150ST_angle_PWM_MAX-H3_H150ST_angle_PWM_MIN)/900; | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - char send_angle[]={0x5a,0x00,0x00,0xa5}; | ||
| 96 | - send_angle[1]=(char )(angle_PWM); | ||
| 97 | - send_angle[2]=(char )(angle_PWM>>8); | ||
| 98 | - | ||
| 99 | - H150ST_UartSend(send_angle, 4); | ||
| 100 | -} | ||
| 101 | - | ||
| 102 | - | ||
| 103 | - | ||
| 104 | -//H150ST云台范围 | ||
| 105 | -T_JZsdkReturnCode H3_H150ST_SetGimbalRange(int Range) | ||
| 106 | -{ | ||
| 107 | - uint8_t set_min_motor[]={0x4A,0x00,0x00,0xA4}; | ||
| 108 | - uint8_t set_max_motor[]={0x6A,0x00,0x00,0xA6}; | ||
| 109 | - | ||
| 110 | - if (Range == 0xFF) | ||
| 111 | - { | ||
| 112 | - printf("设置H150ST云台最大值\n"); | ||
| 113 | - Gimbal_H3_H150ST_UartDeal_UartSend(set_max_motor, 4); | ||
| 114 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 115 | - } | ||
| 116 | - else if (Range == 0x00) | ||
| 117 | - { | ||
| 118 | - printf("设置H150ST云台最小值\n"); | ||
| 119 | - Gimbal_H3_H150ST_UartDeal_UartSend(set_min_motor, 4); | ||
| 120 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 121 | - } | ||
| 122 | - | ||
| 123 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 124 | -} | ||
| 125 | - | ||
| 126 | -//云台微调 | ||
| 127 | -T_JZsdkReturnCode Gimbal_H3_H150ST_set_PitchFineTuning(int Pitch) | ||
| 128 | -{ | ||
| 129 | - //微调的角度值 提高Pitch | ||
| 130 | - H3_H150ST_motor_precise_adjustment_pitch += Pitch; | ||
| 131 | - | ||
| 132 | - //写入本地文件 | ||
| 133 | - H3_H150ST_Write_MotorAdjustmentPitch(H3_H150ST_motor_precise_adjustment_pitch); | ||
| 134 | - | ||
| 135 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 136 | - | ||
| 137 | -} | ||
| 138 | - | ||
| 139 | -//微调向上 | ||
| 140 | -void H3_H150ST_gimbal_up(void) | ||
| 141 | -{ | ||
| 142 | - //微调的pwm值 提高5 | ||
| 143 | - H3_H150ST_motor_precise_adjustment_pitch = H3_H150ST_motor_precise_adjustment_pitch + H3_H150ST_MOTOR_ADJUSTMENT; | ||
| 144 | - | ||
| 145 | - //写入本地文件 | ||
| 146 | - H3_H150ST_Write_MotorAdjustmentPitch(H3_H150ST_motor_precise_adjustment_pitch); | ||
| 147 | -} | ||
| 148 | - | ||
| 149 | -//向下微调 | ||
| 150 | -void H3_H150ST_gimbal_down(void) | ||
| 151 | -{ | ||
| 152 | - //微调的pwm值 减少5 | ||
| 153 | - H3_H150ST_motor_precise_adjustment_pitch = H3_H150ST_motor_precise_adjustment_pitch - H3_H150ST_MOTOR_ADJUSTMENT; | ||
| 154 | - | ||
| 155 | - //写入本地文件 | ||
| 156 | - H3_H150ST_Write_MotorAdjustmentPitch(H3_H150ST_motor_precise_adjustment_pitch); | ||
| 157 | -} | ||
| 158 | - | ||
| 159 | -//查询云台微调值 | ||
| 160 | -int Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
| 161 | -{ | ||
| 162 | - *AdjustmentPitch = H3_H150ST_motor_precise_adjustment_pitch; | ||
| 163 | -} | ||
| 164 | - | ||
| 165 | -//从文件中读出电机微调值 | ||
| 166 | -static int H3_H150ST_Read_MotorAdjustmentPitch() | ||
| 167 | -{ | ||
| 168 | - FILE *motor_file; | ||
| 169 | - int MotorAdjustmentPitch = 0; | ||
| 170 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
| 171 | - if (motor_file == NULL) | ||
| 172 | - { | ||
| 173 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 174 | - if (motor_file == NULL) | ||
| 175 | - { | ||
| 176 | - return 0; | ||
| 177 | - } | ||
| 178 | - } | ||
| 179 | - else | ||
| 180 | - { | ||
| 181 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
| 182 | - if (ret != 0) { | ||
| 183 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
| 184 | - } | ||
| 185 | - | ||
| 186 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
| 187 | - if (ret != sizeof(unsigned int)) { | ||
| 188 | - printf("Read motor weitiao error.\r\n"); | ||
| 189 | - } | ||
| 190 | - else{ | ||
| 191 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 192 | - } | ||
| 193 | - } | ||
| 194 | - fclose(motor_file); | ||
| 195 | - | ||
| 196 | - return MotorAdjustmentPitch; | ||
| 197 | -} | ||
| 198 | - | ||
| 199 | -//写入电机微调值刀文件中 | ||
| 200 | -static void H3_H150ST_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
| 201 | -{ | ||
| 202 | - //写入文件 | ||
| 203 | - FILE *motor_file; | ||
| 204 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 205 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
| 206 | - if (ret != sizeof(unsigned int)) { | ||
| 207 | - printf("Write motor weitiao error.\r\n"); | ||
| 208 | - } | ||
| 209 | - else{ | ||
| 210 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 211 | - } | ||
| 212 | - | ||
| 213 | - fclose(motor_file); | ||
| 214 | -} | ||
| 215 | - | ||
| 216 | - |
| 1 | -/** | ||
| 2 | - ******************************************************************** | ||
| 3 | - * @file GIMBAL_H3.h | ||
| 4 | - * GIMBAL_H3的头文件 | ||
| 5 | - * | ||
| 6 | - ********************************************************************* | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
| 10 | -#ifndef GIMBAL_H3_H150ST_H | ||
| 11 | -#define GIMBAL_H3_H150ST_H | ||
| 12 | - | ||
| 13 | -/* Includes ------------------------------------------------------------------*/ | ||
| 14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
| 15 | - | ||
| 16 | -#ifdef __cplusplus | ||
| 17 | -extern "C" { | ||
| 18 | -#endif | ||
| 19 | - | ||
| 20 | -/* Exported constants --------------------------------------------------------*/ | ||
| 21 | -/* 常亮定义*/ | ||
| 22 | - | ||
| 23 | -/* Exported types ------------------------------------------------------------*/ | ||
| 24 | - | ||
| 25 | -/* Exported functions --------------------------------------------------------*/ | ||
| 26 | -int H3_H150ST_Gimbal_SetAngle(int angle); | ||
| 27 | -int Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
| 28 | -T_JZsdkReturnCode Gimbal_H3_H150ST_init_motor(); | ||
| 29 | -T_JZsdkReturnCode H3_H150ST_SetGimbalRange(int Range); | ||
| 30 | -T_JZsdkReturnCode Gimbal_H3_H150ST_set_PitchFineTuning(int Pitch); | ||
| 31 | - | ||
| 32 | - | ||
| 33 | -#ifdef __cplusplus | ||
| 34 | -} | ||
| 35 | -#endif | ||
| 36 | - | ||
| 37 | -#endif |
Module/Gimbal/Gimbal_InAndOut.c
已删除
100644 → 0
| 1 | -#include <stdio.h> | ||
| 2 | -#include <string.h> | ||
| 3 | -#include <stdlib.h> | ||
| 4 | -#include <pthread.h> | ||
| 5 | - | ||
| 6 | -#include "version_choose.h" | ||
| 7 | -#include "Gimbal_H3/Gimbal_H3.h" | ||
| 8 | -#include "Gimbal_V3S/Gimbal_V3S.h" | ||
| 9 | -#include "Gimbal_InAndOut.h" | ||
| 10 | -#include "JZsdkLib.h" | ||
| 11 | - | ||
| 12 | -#include "Psdk_UI_io.h" | ||
| 13 | - | ||
| 14 | -//数值角度记录 | ||
| 15 | -#if DEVICE_VERSION == TF_A1 | ||
| 16 | - static int Gimbal_PitchAngle = 0; | ||
| 17 | - static int Gimbal_YawAngle = 0; | ||
| 18 | -#else | ||
| 19 | - static int Gimbal_PitchAngle = 0; | ||
| 20 | - static int Gimbal_YawAngle = 0; | ||
| 21 | -#endif | ||
| 22 | - | ||
| 23 | - | ||
| 24 | -//微调角度 | ||
| 25 | -static int Gimbal_PitchFineTuning = 0; | ||
| 26 | -static int Gimbal_YawFineTuning = 0; | ||
| 27 | - | ||
| 28 | -//飞机自身角度 | ||
| 29 | -static int Gimbal_UavSelfPitch = 0; | ||
| 30 | - | ||
| 31 | -//实际角度 (数值角度+飞机自身角度+微调角度) | ||
| 32 | -static int Gimbal_RealPitchAngle = 0; | ||
| 33 | - | ||
| 34 | -static int Gimbal_LinkageNum; | ||
| 35 | - | ||
| 36 | -static int Gimbal_SendAngleTask_Init(); | ||
| 37 | - | ||
| 38 | -static int g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_OFF; | ||
| 39 | - | ||
| 40 | -/** | ||
| 41 | - * | ||
| 42 | - * 获取gimbal模块状态标志位 | ||
| 43 | - * | ||
| 44 | - * **/ | ||
| 45 | -int Get_JZsdk_GimbalStatusFlag() | ||
| 46 | -{ | ||
| 47 | - return g_JZsdk_GimbalStatusFlag; | ||
| 48 | -} | ||
| 49 | - | ||
| 50 | -/* | ||
| 51 | -* Gimbal模块初始化 | ||
| 52 | -*/ | ||
| 53 | - | ||
| 54 | -int Gimbal_Init() | ||
| 55 | -{ | ||
| 56 | - //发送角度线程初始化 | ||
| 57 | - Gimbal_SendAngleTask_Init(); | ||
| 58 | - | ||
| 59 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 60 | - { | ||
| 61 | - //云台初始化 | ||
| 62 | - Gimbal_H3_H150ST_init_motor(); | ||
| 63 | - } | ||
| 64 | - else if (DEVICE_VERSION == JZ_H10) | ||
| 65 | - { | ||
| 66 | - //注:h3_h10的电机引脚已在引脚初始化中完成 | ||
| 67 | - Gimbal_H3_H10_init_motor(); | ||
| 68 | - } | ||
| 69 | - else if (DEVICE_VERSION == JZ_H10T) | ||
| 70 | - { | ||
| 71 | - //注:h3_h10的电机引脚已在引脚初始化中完成 | ||
| 72 | - Gimbal_V3S_H10T_init_motor(); | ||
| 73 | - } | ||
| 74 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 75 | - { | ||
| 76 | - Gimbal_V3S_U3_init_motor(); | ||
| 77 | - } | ||
| 78 | - else if (DEVICE_VERSION == JZ_H1T) | ||
| 79 | - { | ||
| 80 | - Gimbal_V3S_H1T_init_motor(); | ||
| 81 | - } | ||
| 82 | - else if (DEVICE_VERSION == TF_A1) | ||
| 83 | - { | ||
| 84 | - Gimbal_V3S_TFA1_init_motor(); | ||
| 85 | - } | ||
| 86 | - else if (DEVICE_VERSION == JZ_C1) | ||
| 87 | - { | ||
| 88 | - JZSDK_LOG_INFO("C1云台初始化"); | ||
| 89 | - } | ||
| 90 | - else | ||
| 91 | - { | ||
| 92 | - return -1; | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - //读取微调值 | ||
| 96 | - Gimbal_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning, &Gimbal_YawFineTuning); | ||
| 97 | - | ||
| 98 | - //云台flag打开 | ||
| 99 | - g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_ON; | ||
| 100 | - | ||
| 101 | - printf("云台初始化完毕\n"); | ||
| 102 | - | ||
| 103 | -} | ||
| 104 | - | ||
| 105 | -//设置云台俯仰角度 | ||
| 106 | -T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle) | ||
| 107 | -{ | ||
| 108 | - //printf("设置云台俯仰角度\n"); | ||
| 109 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 110 | - { | ||
| 111 | - //1、判断输入范围是否正确 | ||
| 112 | - if ((angle < -900) || (angle > 0)) | ||
| 113 | - { | ||
| 114 | - printf("H150s/H150t的云台俯仰输入值范围出错:%d\n", angle); | ||
| 115 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
| 116 | - } | ||
| 117 | - } | ||
| 118 | - else if (DEVICE_VERSION == JZ_H10) | ||
| 119 | - { | ||
| 120 | - //1、判断输入范围是否正确 | ||
| 121 | - if ((angle < -600) || (angle > 0)) | ||
| 122 | - //if ((angle < -800) || (angle > 0)) | ||
| 123 | - { | ||
| 124 | - printf("H10的云台俯仰输入值范围出错:%d\n", angle); | ||
| 125 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
| 126 | - } | ||
| 127 | - | ||
| 128 | - } | ||
| 129 | - else if (DEVICE_VERSION == JZ_H10T) | ||
| 130 | - { | ||
| 131 | - //1、判断输入范围是否正确 | ||
| 132 | - if ((angle < -600) || (angle > 0)) | ||
| 133 | - { | ||
| 134 | - printf("H10T的云台俯仰输入值范围出错:%d\n", angle); | ||
| 135 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
| 136 | - } | ||
| 137 | - | ||
| 138 | - } | ||
| 139 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 140 | - { | ||
| 141 | - //1、判断输入范围是否正确 | ||
| 142 | - if ((angle < -900) || (angle > 0)) | ||
| 143 | - { | ||
| 144 | - printf("U3的云台俯仰输入值范围出错:%d\n", angle); | ||
| 145 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
| 146 | - } | ||
| 147 | - | ||
| 148 | - } | ||
| 149 | - else if (DEVICE_VERSION == TF_A1) | ||
| 150 | - { | ||
| 151 | - //1、判断输入范围是否正确 | ||
| 152 | - if ((angle < -900) || (angle > 0)) | ||
| 153 | - { | ||
| 154 | - printf("TFA1的云台俯仰输入值范围出错:%d\n", angle); | ||
| 155 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
| 156 | - } | ||
| 157 | - | ||
| 158 | - } | ||
| 159 | - else if (DEVICE_VERSION == JZ_H1T) | ||
| 160 | - { | ||
| 161 | - //1、判断输入范围是否正确 | ||
| 162 | - if ((angle < -900) || (angle > 300)) | ||
| 163 | - { | ||
| 164 | - printf("H1T的云台俯仰输入值范围出错:%d\n", angle); | ||
| 165 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
| 166 | - } | ||
| 167 | - | ||
| 168 | - } | ||
| 169 | - | ||
| 170 | - else | ||
| 171 | - { | ||
| 172 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 173 | - } | ||
| 174 | - | ||
| 175 | - Gimbal_PitchAngle = angle; | ||
| 176 | - | ||
| 177 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 178 | -} | ||
| 179 | - | ||
| 180 | -//设置云台航向角度 | ||
| 181 | -int Gimbal_Set_YawAngle(int angle) | ||
| 182 | -{ | ||
| 183 | - | ||
| 184 | - printf("没有航向角度\n"); | ||
| 185 | - return -1; | ||
| 186 | - | ||
| 187 | -} | ||
| 188 | - | ||
| 189 | -//设置云台范围的最大最小值 | ||
| 190 | -T_JZsdkReturnCode Gimbal_SetGimbalRange(int value) | ||
| 191 | -{ | ||
| 192 | - printf("设置云台范围最大最小值\n"); | ||
| 193 | - | ||
| 194 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 195 | - { | ||
| 196 | - return H3_H150ST_SetGimbalRange(value); | ||
| 197 | - } | ||
| 198 | - | ||
| 199 | - | ||
| 200 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 201 | - { | ||
| 202 | - return V3S_U3_SetGimbalRange(value); | ||
| 203 | - } | ||
| 204 | - | ||
| 205 | - if (DEVICE_VERSION == TF_A1) | ||
| 206 | - { | ||
| 207 | - return V3S_TFA1_SetGimbalRange(value); | ||
| 208 | - } | ||
| 209 | - | ||
| 210 | - if (DEVICE_VERSION == JZ_H1T) | ||
| 211 | - { | ||
| 212 | - /* code */ | ||
| 213 | - } | ||
| 214 | - | ||
| 215 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 216 | -} | ||
| 217 | - | ||
| 218 | -//查询云台微调值 | ||
| 219 | -T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTunigPitch, int *FineTunigYaw) | ||
| 220 | -{ | ||
| 221 | - printf("查询云台微调值\n"); | ||
| 222 | - | ||
| 223 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 224 | - { | ||
| 225 | - //1、获取微调值 | ||
| 226 | - Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
| 227 | - | ||
| 228 | - //2、回复微调值 | ||
| 229 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
| 230 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
| 231 | - | ||
| 232 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 233 | - } | ||
| 234 | - | ||
| 235 | - | ||
| 236 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 237 | - { | ||
| 238 | - //1、获取微调值 | ||
| 239 | - Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
| 240 | - | ||
| 241 | - //2、回复微调值 | ||
| 242 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
| 243 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
| 244 | - | ||
| 245 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 246 | - } | ||
| 247 | - | ||
| 248 | - if (DEVICE_VERSION == TF_A1) | ||
| 249 | - { | ||
| 250 | - //1、获取微调值 | ||
| 251 | - Gimbal_V3S_TFA1_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
| 252 | - | ||
| 253 | - //2、回复微调值 | ||
| 254 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
| 255 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
| 256 | - | ||
| 257 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 258 | - } | ||
| 259 | - | ||
| 260 | - if (DEVICE_VERSION == JZ_H1T) | ||
| 261 | - { | ||
| 262 | - //1、刷新微调值 | ||
| 263 | - Gimbal_V3S_H1T_CheckStatus_GimbalFineTuning(); | ||
| 264 | - | ||
| 265 | - delayMs(10); | ||
| 266 | - | ||
| 267 | - //2、回复微调值 | ||
| 268 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
| 269 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
| 270 | - | ||
| 271 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 272 | - } | ||
| 273 | - | ||
| 274 | - if (DEVICE_VERSION == JZ_H10) | ||
| 275 | - { | ||
| 276 | - //1、获取微调值 | ||
| 277 | - Gimbal_H3_H10_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
| 278 | - | ||
| 279 | - //2、回复微调值 | ||
| 280 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
| 281 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
| 282 | - | ||
| 283 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 284 | - } | ||
| 285 | - | ||
| 286 | - if (DEVICE_VERSION == JZ_H10T) | ||
| 287 | - { | ||
| 288 | - //1、获取微调值 | ||
| 289 | - Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
| 290 | - | ||
| 291 | - //2、回复微调值 | ||
| 292 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
| 293 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
| 294 | - | ||
| 295 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 296 | - } | ||
| 297 | - | ||
| 298 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 299 | -} | ||
| 300 | - | ||
| 301 | -//收到云台pitch微调值 | ||
| 302 | -T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch) | ||
| 303 | -{ | ||
| 304 | - printf("收到云台pitch云台微调值\n"); | ||
| 305 | - | ||
| 306 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 307 | - { | ||
| 308 | - //无操作 | ||
| 309 | - } | ||
| 310 | - | ||
| 311 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 312 | - { | ||
| 313 | - //无操作 | ||
| 314 | - } | ||
| 315 | - | ||
| 316 | - if (DEVICE_VERSION == JZ_H1T) | ||
| 317 | - { | ||
| 318 | - Gimbal_PitchFineTuning = pitch; | ||
| 319 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 320 | - } | ||
| 321 | - | ||
| 322 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 323 | -} | ||
| 324 | - | ||
| 325 | -//设置云台pitch微调值 | ||
| 326 | -T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int DeviceName ,int pitch) | ||
| 327 | -{ | ||
| 328 | - printf("设置云台pitch云台微调值\n"); | ||
| 329 | - T_JZsdkReturnCode ret; | ||
| 330 | - | ||
| 331 | - //原值+修改值 | ||
| 332 | - Gimbal_PitchFineTuning = Gimbal_PitchFineTuning + pitch; | ||
| 333 | - | ||
| 334 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 335 | - { | ||
| 336 | - ret = Gimbal_H3_H150ST_set_PitchFineTuning(pitch); | ||
| 337 | - } | ||
| 338 | - | ||
| 339 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 340 | - { | ||
| 341 | - ret = Gimbal_V3S_U3_set_PitchFineTuning(pitch); | ||
| 342 | - } | ||
| 343 | - | ||
| 344 | - else if (DEVICE_VERSION == TF_A1) | ||
| 345 | - { | ||
| 346 | - ret = Gimbal_V3S_TFA1_set_PitchFineTuning(pitch); | ||
| 347 | - } | ||
| 348 | - | ||
| 349 | - else if (DEVICE_VERSION == JZ_H1T) | ||
| 350 | - { | ||
| 351 | - ret = Gimbal_V3S_H1T_set_PitchFineTuning(pitch); | ||
| 352 | - } | ||
| 353 | - | ||
| 354 | - else if (DEVICE_VERSION == JZ_H10) | ||
| 355 | - { | ||
| 356 | - ret = Gimbal_H3_H10_set_PitchFineTuning(pitch); | ||
| 357 | - } | ||
| 358 | - | ||
| 359 | - else if (DEVICE_VERSION == JZ_H10T) | ||
| 360 | - { | ||
| 361 | - ret = Gimbal_V3S_H10T_set_PitchFineTuning(pitch); | ||
| 362 | - } | ||
| 363 | - else | ||
| 364 | - { | ||
| 365 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 366 | - } | ||
| 367 | - | ||
| 368 | - //微调后重设角度 | ||
| 369 | - Gimbal_Set_PitchAngle(Gimbal_PitchAngle); | ||
| 370 | - | ||
| 371 | - return ret; | ||
| 372 | -} | ||
| 373 | - | ||
| 374 | -//设置云台联动 | ||
| 375 | -T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value) | ||
| 376 | -{ | ||
| 377 | - printf("设置云台联动\n"); | ||
| 378 | - | ||
| 379 | - Gimbal_LinkageNum = value; | ||
| 380 | - | ||
| 381 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 382 | - { | ||
| 383 | - //没这玩意 | ||
| 384 | - } | ||
| 385 | - | ||
| 386 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 387 | - { | ||
| 388 | - //没这玩意 | ||
| 389 | - } | ||
| 390 | - | ||
| 391 | - if (DEVICE_VERSION == JZ_H1T) | ||
| 392 | - { | ||
| 393 | - Gimbal_V3S_H1T_Set_GimbalLinkageControl(Gimbal_LinkageNum); | ||
| 394 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 395 | - } | ||
| 396 | - | ||
| 397 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 398 | - | ||
| 399 | -} | ||
| 400 | - | ||
| 401 | -//查询云台联动 | ||
| 402 | -T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value) | ||
| 403 | -{ | ||
| 404 | - printf("查询云台联动值\n"); | ||
| 405 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 406 | - { | ||
| 407 | - | ||
| 408 | - } | ||
| 409 | - | ||
| 410 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 411 | - { | ||
| 412 | - | ||
| 413 | - } | ||
| 414 | - | ||
| 415 | - if (DEVICE_VERSION == JZ_H1T) | ||
| 416 | - { | ||
| 417 | - //1、刷新云台联动值 | ||
| 418 | - Gimbal_V3S_H1T_CheckStatus_GimbalLinkage(); | ||
| 419 | - | ||
| 420 | - delayMs(10); | ||
| 421 | - | ||
| 422 | - //2、回复云台联动值 | ||
| 423 | - *value = Gimbal_LinkageNum; | ||
| 424 | - | ||
| 425 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 426 | - } | ||
| 427 | - | ||
| 428 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 429 | -} | ||
| 430 | - | ||
| 431 | -//收到云台联动值 | ||
| 432 | -T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage) | ||
| 433 | -{ | ||
| 434 | - printf("收到云台联动值\n"); | ||
| 435 | - | ||
| 436 | - Gimbal_LinkageNum = GimbalLinkage; | ||
| 437 | - | ||
| 438 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 439 | - { | ||
| 440 | - | ||
| 441 | - } | ||
| 442 | - | ||
| 443 | - | ||
| 444 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 445 | - { | ||
| 446 | - | ||
| 447 | - } | ||
| 448 | - | ||
| 449 | - if (DEVICE_VERSION == JZ_H1T) | ||
| 450 | - { | ||
| 451 | - //无操作 | ||
| 452 | - //毕竟是t60s返回来的值 | ||
| 453 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 454 | - } | ||
| 455 | - | ||
| 456 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 457 | -} | ||
| 458 | - | ||
| 459 | - | ||
| 460 | -//获取数值角度 | ||
| 461 | -T_JZsdkReturnCode Gimbal_Get_Angle(int *PitchAngle, int *YawAngle) | ||
| 462 | -{ | ||
| 463 | - *PitchAngle = Gimbal_PitchAngle; | ||
| 464 | - *YawAngle = Gimbal_YawAngle; | ||
| 465 | - | ||
| 466 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 467 | -} | ||
| 468 | - | ||
| 469 | -/********* | ||
| 470 | - * | ||
| 471 | - * 查询云台角度 | ||
| 472 | - * | ||
| 473 | -**********/ | ||
| 474 | -T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle) | ||
| 475 | -{ | ||
| 476 | - //1、刷新查询角度 | ||
| 477 | - if (DEVICE_VERSION == JZ_H1T) | ||
| 478 | - { | ||
| 479 | - Gimbal_V3S_H1T_CheckStatus_GimbalAngle(); | ||
| 480 | - } | ||
| 481 | - | ||
| 482 | - //2、获取一次本地云台角度 | ||
| 483 | - Gimbal_Get_Angle(PitchAngle, YawAngle); | ||
| 484 | - | ||
| 485 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 486 | -} | ||
| 487 | - | ||
| 488 | -int Gimbal_Get_PitchAngle() | ||
| 489 | -{ | ||
| 490 | - return Gimbal_PitchAngle; | ||
| 491 | -} | ||
| 492 | - | ||
| 493 | -int Gimbal_Get_PitchFineTuning() | ||
| 494 | -{ | ||
| 495 | - return Gimbal_PitchFineTuning; | ||
| 496 | -} | ||
| 497 | - | ||
| 498 | -int Gimbal_Get_PitchRealPitchAngle() | ||
| 499 | -{ | ||
| 500 | - return Gimbal_RealPitchAngle; | ||
| 501 | -} | ||
| 502 | - | ||
| 503 | -//获得云台值 | ||
| 504 | -T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch) | ||
| 505 | -{ | ||
| 506 | - | ||
| 507 | - //目前 U3和 H1T会接受到云台返回值 | ||
| 508 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 509 | - { | ||
| 510 | - //不处理,避免出现什么问题 | ||
| 511 | - } | ||
| 512 | - else if (DEVICE_VERSION == JZ_H1T) | ||
| 513 | - { | ||
| 514 | - //Gimbal_PitchAngle = Pitch; | ||
| 515 | - //这里暂时不处理,避免多次把5a帧返还给串口1设备 | ||
| 516 | - //但是会导致4g接收不到最新的角度 | ||
| 517 | - } | ||
| 518 | - else | ||
| 519 | - { | ||
| 520 | - //不处理,避免出现什么问题 | ||
| 521 | - } | ||
| 522 | - | ||
| 523 | -} | ||
| 524 | - | ||
| 525 | -/************************************************************** | ||
| 526 | - * | ||
| 527 | - * | ||
| 528 | - * 飞机特殊控制云台方法 | ||
| 529 | - * | ||
| 530 | - * | ||
| 531 | -***************************************************************/ | ||
| 532 | -//1、飞机自身角度控制云台 | ||
| 533 | -T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch) | ||
| 534 | -{ | ||
| 535 | - if (Gimbal_UavSelfPitch == Pitch) | ||
| 536 | - { | ||
| 537 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 538 | - } | ||
| 539 | - | ||
| 540 | - Gimbal_UavSelfPitch = Pitch; | ||
| 541 | - | ||
| 542 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 543 | - | ||
| 544 | -} | ||
| 545 | - | ||
| 546 | -//2、滑动条 获取云台角度 | ||
| 547 | -int Gimbal_PitchScaleMode(int value) | ||
| 548 | -{ | ||
| 549 | - int angle; | ||
| 550 | - if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 551 | - { | ||
| 552 | - //0~100 转化为 -900~0 | ||
| 553 | - angle = value*9 -900; | ||
| 554 | - } | ||
| 555 | - else if (DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T) | ||
| 556 | - { | ||
| 557 | - //0~100 转化为 -600~0 | ||
| 558 | - angle = value*6 -600; | ||
| 559 | - } | ||
| 560 | - else | ||
| 561 | - { | ||
| 562 | - return 0; | ||
| 563 | - } | ||
| 564 | - | ||
| 565 | - return angle; | ||
| 566 | -} | ||
| 567 | - | ||
| 568 | -//3、拨轮控制云台 | ||
| 569 | -T_JZsdkReturnCode Gimbal_PitchRotationMode(int value) | ||
| 570 | -{ | ||
| 571 | - int angle; | ||
| 572 | - | ||
| 573 | - //JZSDK_LOG_DEBUG("拨轮控制"); | ||
| 574 | - | ||
| 575 | - if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T ) | ||
| 576 | - { | ||
| 577 | - | ||
| 578 | - angle = Gimbal_PitchAngle + value; | ||
| 579 | - if (angle > 0) | ||
| 580 | - { | ||
| 581 | - angle = 0; | ||
| 582 | - } | ||
| 583 | - else if (angle < -900) | ||
| 584 | - { | ||
| 585 | - angle = -900; | ||
| 586 | - } | ||
| 587 | - | ||
| 588 | - if (angle == Gimbal_PitchAngle) | ||
| 589 | - { | ||
| 590 | - printf("拨轮控制无效\n"); | ||
| 591 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 592 | - } | ||
| 593 | - | ||
| 594 | - } | ||
| 595 | - else if (DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T ) | ||
| 596 | - { | ||
| 597 | - angle = Gimbal_PitchAngle + value; | ||
| 598 | - if (angle > 0) | ||
| 599 | - { | ||
| 600 | - angle = 0; | ||
| 601 | - } | ||
| 602 | - else if (angle < -600) | ||
| 603 | - { | ||
| 604 | - angle = -600; | ||
| 605 | - } | ||
| 606 | - | ||
| 607 | - if (angle == Gimbal_PitchAngle) | ||
| 608 | - { | ||
| 609 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 610 | - } | ||
| 611 | - | ||
| 612 | - } | ||
| 613 | - else | ||
| 614 | - { | ||
| 615 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 616 | - } | ||
| 617 | - | ||
| 618 | - Gimbal_Set_PitchAngle(angle); | ||
| 619 | - | ||
| 620 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 621 | -} | ||
| 622 | - | ||
| 623 | -//输入角度,回复滑动条值 | ||
| 624 | -int Gimbal_ReplyPitchToUAVScale(int angle) | ||
| 625 | -{ | ||
| 626 | - int value; | ||
| 627 | - | ||
| 628 | - if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T ) | ||
| 629 | - { | ||
| 630 | - //-900~0 转回 0~100 | ||
| 631 | - value = (angle+ 900)/9; | ||
| 632 | - } | ||
| 633 | - if (DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T) | ||
| 634 | - { | ||
| 635 | - //-600~0 转回 0~100 | ||
| 636 | - value = (angle+ 600)/6; | ||
| 637 | - } | ||
| 638 | - | ||
| 639 | - else | ||
| 640 | - { | ||
| 641 | - return 0; | ||
| 642 | - } | ||
| 643 | - | ||
| 644 | - return value; | ||
| 645 | -} | ||
| 646 | - | ||
| 647 | - | ||
| 648 | -//设置云台俯仰角度 | ||
| 649 | -static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int angle) | ||
| 650 | -{ | ||
| 651 | - int temp_angle; | ||
| 652 | - | ||
| 653 | - //printf("设置真实俯仰角度\n"); | ||
| 654 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
| 655 | - { | ||
| 656 | - //获取飞机微调角度 | ||
| 657 | - int AdjustmentPitch; | ||
| 658 | - Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
| 659 | - | ||
| 660 | - //叠加飞机角度和微调角度 | ||
| 661 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
| 662 | - | ||
| 663 | - //修正angle值 | ||
| 664 | - if (temp_angle < -900) | ||
| 665 | - { | ||
| 666 | - angle = -900; | ||
| 667 | - } | ||
| 668 | - else if (temp_angle > 0) | ||
| 669 | - { | ||
| 670 | - angle = 0; | ||
| 671 | - } | ||
| 672 | - else | ||
| 673 | - { | ||
| 674 | - angle = temp_angle; | ||
| 675 | - } | ||
| 676 | - | ||
| 677 | - Gimbal_RealPitchAngle = temp_angle; | ||
| 678 | - | ||
| 679 | - //发送到云台函数 | ||
| 680 | - H3_H150ST_Gimbal_SetAngle(temp_angle); | ||
| 681 | - | ||
| 682 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 683 | - | ||
| 684 | - } | ||
| 685 | - else if (DEVICE_VERSION == JZ_H10) | ||
| 686 | - { | ||
| 687 | - //获取飞机微调角度 | ||
| 688 | - int AdjustmentPitch; | ||
| 689 | - Gimbal_H3_H10_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
| 690 | - | ||
| 691 | - //叠加飞机角度和微调角度 | ||
| 692 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
| 693 | - | ||
| 694 | - //修正angle值 | ||
| 695 | - if (temp_angle < -600) | ||
| 696 | - { | ||
| 697 | - angle = -600; | ||
| 698 | - } | ||
| 699 | - else if (temp_angle > 0) | ||
| 700 | - { | ||
| 701 | - angle = 0; | ||
| 702 | - } | ||
| 703 | - else | ||
| 704 | - { | ||
| 705 | - angle = temp_angle; | ||
| 706 | - } | ||
| 707 | - | ||
| 708 | - Gimbal_RealPitchAngle = temp_angle; | ||
| 709 | - | ||
| 710 | - //发送到云台函数 | ||
| 711 | - Gimbal_H3_H10_set_angle(temp_angle); | ||
| 712 | - | ||
| 713 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 714 | - | ||
| 715 | - } | ||
| 716 | - else if (DEVICE_VERSION == JZ_H10T) | ||
| 717 | - { | ||
| 718 | - //获取飞机微调角度 | ||
| 719 | - int AdjustmentPitch; | ||
| 720 | - Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
| 721 | - | ||
| 722 | - //叠加飞机角度和微调角度 | ||
| 723 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
| 724 | - | ||
| 725 | - //修正angle值 | ||
| 726 | - if (temp_angle < -600) | ||
| 727 | - { | ||
| 728 | - angle = -600; | ||
| 729 | - } | ||
| 730 | - else if (temp_angle > 0) | ||
| 731 | - { | ||
| 732 | - angle = 0; | ||
| 733 | - } | ||
| 734 | - else | ||
| 735 | - { | ||
| 736 | - angle = temp_angle; | ||
| 737 | - } | ||
| 738 | - | ||
| 739 | - Gimbal_RealPitchAngle = temp_angle; | ||
| 740 | - | ||
| 741 | - //发送到云台函数 | ||
| 742 | - Gimbal_V3S_H10T_set_angle(temp_angle); | ||
| 743 | - | ||
| 744 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 745 | - } | ||
| 746 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
| 747 | - { | ||
| 748 | - //获取飞机微调角度 | ||
| 749 | - int AdjustmentPitch; | ||
| 750 | - Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
| 751 | - | ||
| 752 | - //叠加飞机角度和微调角度 | ||
| 753 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
| 754 | - | ||
| 755 | - //修正angle值 | ||
| 756 | - if (temp_angle < -900) | ||
| 757 | - { | ||
| 758 | - angle = -900; | ||
| 759 | - } | ||
| 760 | - else if (temp_angle > 0) | ||
| 761 | - { | ||
| 762 | - angle = 0; | ||
| 763 | - } | ||
| 764 | - else | ||
| 765 | - { | ||
| 766 | - angle = temp_angle; | ||
| 767 | - } | ||
| 768 | - | ||
| 769 | - Gimbal_RealPitchAngle = temp_angle; | ||
| 770 | - | ||
| 771 | - //发送到控制云台函数 | ||
| 772 | - Gimbal_V3S_U3_set_angle(temp_angle); | ||
| 773 | - | ||
| 774 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 775 | - } | ||
| 776 | - else if (DEVICE_VERSION == TF_A1) | ||
| 777 | - { | ||
| 778 | - //叠加飞机角度和微调角度 | ||
| 779 | - temp_angle = angle - Gimbal_UavSelfPitch + Get_V3S_TFA1_motor_precise_adjustment_pitch(); | ||
| 780 | - | ||
| 781 | - //修正angle值 | ||
| 782 | - if (temp_angle < -900) | ||
| 783 | - { | ||
| 784 | - angle = -900; | ||
| 785 | - } | ||
| 786 | - else if (temp_angle > 0) | ||
| 787 | - { | ||
| 788 | - angle = 0; | ||
| 789 | - } | ||
| 790 | - else | ||
| 791 | - { | ||
| 792 | - angle = temp_angle; | ||
| 793 | - } | ||
| 794 | - | ||
| 795 | - Gimbal_RealPitchAngle = temp_angle; | ||
| 796 | - | ||
| 797 | - //发送到V3S_TFA1控制云台函数 | ||
| 798 | - Gimbal_V3S_TFA1_set_angle(temp_angle); | ||
| 799 | - | ||
| 800 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 801 | - } | ||
| 802 | - else if (DEVICE_VERSION == JZ_H1T) | ||
| 803 | - { | ||
| 804 | - temp_angle = angle; | ||
| 805 | - Gimbal_RealPitchAngle = temp_angle; | ||
| 806 | - | ||
| 807 | - Gimbal_V3S_H1T_set_PitchAngle(temp_angle); | ||
| 808 | - } | ||
| 809 | - else if (DEVICE_VERSION == JZ_C1) | ||
| 810 | - { | ||
| 811 | - JZSDK_LOG_INFO("C1相机云台变化"); | ||
| 812 | - } | ||
| 813 | - | ||
| 814 | - | ||
| 815 | -} | ||
| 816 | - | ||
| 817 | - | ||
| 818 | -/************************** | ||
| 819 | - * | ||
| 820 | - * | ||
| 821 | - * 云台角度发送线程 | ||
| 822 | - * | ||
| 823 | - * | ||
| 824 | - * ***************************/ | ||
| 825 | -static void *Gimbal_SendAngleTask(void *arg) | ||
| 826 | -{ | ||
| 827 | - int angle = 0; | ||
| 828 | - int UAV_self_angle; | ||
| 829 | - int PitchFineTuning; | ||
| 830 | - | ||
| 831 | - JZSDK_LOG_DEBUG("云台角度发送初始化完成"); | ||
| 832 | - | ||
| 833 | - int test_value =0; | ||
| 834 | - | ||
| 835 | - while (1) | ||
| 836 | - { | ||
| 837 | - if (Gimbal_PitchAngle != angle //云台角度发生了变化 | ||
| 838 | - || Gimbal_UavSelfPitch != UAV_self_angle //飞机自身角度发生了变化 | ||
| 839 | - || Gimbal_PitchFineTuning != PitchFineTuning //微调角度发生了变化 | ||
| 840 | - ) | ||
| 841 | - { | ||
| 842 | - angle = Gimbal_PitchAngle; | ||
| 843 | - UAV_self_angle = Gimbal_UavSelfPitch; | ||
| 844 | - PitchFineTuning = Gimbal_PitchFineTuning; | ||
| 845 | - Gimbal_Set_RealPitchAngle(angle); | ||
| 846 | - } | ||
| 847 | - | ||
| 848 | - delayMs(6); | ||
| 849 | - } | ||
| 850 | -} | ||
| 851 | - | ||
| 852 | -static int Gimbal_SendAngleTask_Init() | ||
| 853 | -{ | ||
| 854 | - pthread_t WriteDataTask; | ||
| 855 | - pthread_attr_t task_attribute; //线程属性 | ||
| 856 | - pthread_attr_init(&task_attribute); //初始化线程属性 | ||
| 857 | - pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | ||
| 858 | - int opus_Protection = pthread_create(&WriteDataTask,&task_attribute,Gimbal_SendAngleTask,NULL); //线程 | ||
| 859 | - if(opus_Protection != 0) | ||
| 860 | - { | ||
| 861 | - JZSDK_LOG_ERROR("创建控件写入线程失败!"); | ||
| 862 | - return -1; | ||
| 863 | - } | ||
| 864 | - | ||
| 865 | - JZSDK_LOG_INFO("MODULE_GIMBAL_INIT_COMPLETE"); | ||
| 866 | -} |
| 1 | +#include <stdio.h> | ||
| 2 | +#include "JZsdkLib.h" | ||
| 3 | + | ||
| 4 | +#include "./MotorFineTuning.h" | ||
| 5 | + | ||
| 6 | +#define MOTOR_FILE_PATH "/root/motor" | ||
| 7 | + | ||
| 8 | +/************************ | ||
| 9 | + * | ||
| 10 | + * 云台微调初始化 | ||
| 11 | + * | ||
| 12 | + * | ||
| 13 | + * *************************/ | ||
| 14 | +T_JZsdkReturnCode MotorFineTuning_Init(int *pitch, int *yaw, int *roll) | ||
| 15 | +{ | ||
| 16 | + Read_MotorFineTuning_Pitch(pitch); | ||
| 17 | + | ||
| 18 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +/************************************************************************************************************ | ||
| 23 | + * | ||
| 24 | + * pitch轴 | ||
| 25 | + * | ||
| 26 | + * | ||
| 27 | +*/ | ||
| 28 | + | ||
| 29 | +/******* | ||
| 30 | + * | ||
| 31 | + * pitch轴微调值的读取 | ||
| 32 | + * | ||
| 33 | + * | ||
| 34 | + * ************/ | ||
| 35 | +T_JZsdkReturnCode Read_MotorFineTuning_Pitch(int *value) | ||
| 36 | +{ | ||
| 37 | + FILE *motor_file = NULL; | ||
| 38 | + | ||
| 39 | + int MotorFineTuningPitch = 0; | ||
| 40 | + motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
| 41 | + if (motor_file == NULL) | ||
| 42 | + { | ||
| 43 | + motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 44 | + if (motor_file == NULL) | ||
| 45 | + { | ||
| 46 | + *value = 0; | ||
| 47 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 48 | + } | ||
| 49 | + } | ||
| 50 | + else | ||
| 51 | + { | ||
| 52 | + int ret = fseek(motor_file, 0, SEEK_SET); | ||
| 53 | + if (ret != 0) | ||
| 54 | + { | ||
| 55 | + printf("Seek log count file error, ret: %d.\r\n", ret); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + ret = fread((int *) &MotorFineTuningPitch, 1, sizeof(int), motor_file); | ||
| 59 | + if (ret != sizeof(int)) | ||
| 60 | + { | ||
| 61 | + printf("Read motor weitiao error.\r\n"); | ||
| 62 | + *value = 0; | ||
| 63 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 64 | + } | ||
| 65 | + else | ||
| 66 | + { | ||
| 67 | + printf("Read motor weitiao=%d\n",MotorFineTuningPitch); | ||
| 68 | + *value = 0; | ||
| 69 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 70 | + } | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + if (motor_file != NULL) | ||
| 74 | + { | ||
| 75 | + fclose(motor_file); | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + *value = MotorFineTuningPitch; | ||
| 79 | + | ||
| 80 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 81 | +} | ||
| 82 | + | ||
| 83 | + | ||
| 84 | +/******* | ||
| 85 | + * | ||
| 86 | + * pitch轴微调值的写入 | ||
| 87 | + * | ||
| 88 | + * | ||
| 89 | + * ************/ | ||
| 90 | +T_JZsdkReturnCode MotorFineTuning_WritePitch(int Pitch) | ||
| 91 | +{ | ||
| 92 | + //写入文件 | ||
| 93 | + FILE *motor_file; | ||
| 94 | + motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 95 | + if (motor_file == NULL) | ||
| 96 | + { | ||
| 97 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + int ret = fwrite((int *) &Pitch, 1, sizeof(unsigned int),motor_file); | ||
| 101 | + if (ret != sizeof(unsigned int)) | ||
| 102 | + { | ||
| 103 | + JZSDK_LOG_ERROR("MotorFineTuning_WritePitch error."); | ||
| 104 | + } | ||
| 105 | + else | ||
| 106 | + { | ||
| 107 | + JZSDK_LOG_DEBUG("MotorFineTuning_WritePitch=%d\n",Pitch); | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + fclose(motor_file); | ||
| 111 | + | ||
| 112 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 113 | +} | ||
| 114 | + |
| 1 | +/* | ||
| 2 | + * @Author: ookk303 | ||
| 3 | + * @Date: 2024-08-28 14:58:07 | ||
| 4 | + * @LastEditors: Do not edit | ||
| 5 | + * @LastEditTime: 2024-08-28 14:58:27 | ||
| 6 | + * @Description: | ||
| 7 | + * @FilePath: \JZSDK_Linux\Module\Gimbal\Gimbal_MotorFineTuning\MotorFineTuning.h | ||
| 8 | + */ | ||
| 1 | /** | 9 | /** |
| 2 | ******************************************************************** | 10 | ******************************************************************** |
| 3 | - * @file GIMBAL_V3S_H10T_H.h | ||
| 4 | - * v3s板子的h10t云台头文件 | 11 | + * @file MotorFineTuning.h |
| 12 | + * MotorFineTuning.h 的头文件 | ||
| 5 | * | 13 | * |
| 6 | ********************************************************************* | 14 | ********************************************************************* |
| 7 | */ | 15 | */ |
| 8 | 16 | ||
| 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 17 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
| 10 | -#ifndef GIMBAL_V3S_H10T_H | ||
| 11 | -#define GIMBAL_V3S_H10T_H | 18 | +#ifndef MOTORFINE_TUNING_H |
| 19 | +#define MOTORFINE_TUNING_H | ||
| 12 | 20 | ||
| 13 | /* Includes ------------------------------------------------------------------*/ | 21 | /* Includes ------------------------------------------------------------------*/ |
| 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
| @@ -23,12 +31,9 @@ extern "C" { | @@ -23,12 +31,9 @@ extern "C" { | ||
| 23 | /* Exported types ------------------------------------------------------------*/ | 31 | /* Exported types ------------------------------------------------------------*/ |
| 24 | 32 | ||
| 25 | /* Exported functions --------------------------------------------------------*/ | 33 | /* Exported functions --------------------------------------------------------*/ |
| 26 | -int Gimbal_V3S_H10T_set_angle(int angle); | ||
| 27 | -void Gimbal_V3S_H10T_init_motor(void); | ||
| 28 | -int Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
| 29 | -T_JZsdkReturnCode Gimbal_V3S_H10T_set_PitchFineTuning(int Pitch); | ||
| 30 | - | ||
| 31 | - | 34 | +T_JZsdkReturnCode Read_MotorFineTuning_Pitch(int *value); |
| 35 | +T_JZsdkReturnCode MotorFineTuning_Init(int *pitch, int *yaw, int *roll); | ||
| 36 | +T_JZsdkReturnCode MotorFineTuning_WritePitch(int Pitch); | ||
| 32 | 37 | ||
| 33 | #ifdef __cplusplus | 38 | #ifdef __cplusplus |
| 34 | } | 39 | } |
Module/Gimbal/Gimbal_Param.h
0 → 100644
| 1 | +/** | ||
| 2 | + ******************************************************************** | ||
| 3 | + * @file Gimbal_Param.h | ||
| 4 | + * Gimbal_Param.h的头文件 | ||
| 5 | + * | ||
| 6 | + ********************************************************************* | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
| 10 | +#ifndef GIMBAL_PARAM_H | ||
| 11 | +#define GIMBAL_PARAM_H | ||
| 12 | + | ||
| 13 | +/* Includes ------------------------------------------------------------------*/ | ||
| 14 | +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
| 15 | +#include "BaseConfig.h" | ||
| 16 | + | ||
| 17 | +#ifdef __cplusplus | ||
| 18 | +extern "C" { | ||
| 19 | +#endif | ||
| 20 | + | ||
| 21 | +/* Exported constants --------------------------------------------------------*/ | ||
| 22 | +/* 常亮定义*/ | ||
| 23 | + | ||
| 24 | +/* Exported types ------------------------------------------------------------*/ | ||
| 25 | + | ||
| 26 | +/* Exported functions --------------------------------------------------------*/ | ||
| 27 | + | ||
| 28 | +#if DEVICE_VERSION == JZ_C1 | ||
| 29 | + | ||
| 30 | +#elif DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
| 31 | + | ||
| 32 | +#define PITCH_PWM_MAX 2000 | ||
| 33 | +#define PITCH_PWM_MIN 1000 | ||
| 34 | +#define MAX_PITCH 0 | ||
| 35 | +#define MIN_PITCH -900 | ||
| 36 | + | ||
| 37 | +#elif DEVICE_VERSION == JZ_H10 | ||
| 38 | + | ||
| 39 | +#define PITCH_PWM_MAX 0 | ||
| 40 | +#define PITCH_PWM_MIN 0 | ||
| 41 | +#define MAX_PITCH 0 | ||
| 42 | +#define MIN_PITCH -600 | ||
| 43 | + | ||
| 44 | +#elif DEVICE_VERSION == JZ_H10T | ||
| 45 | + | ||
| 46 | +#define PITCH_PWM_MAX 820 | ||
| 47 | +#define PITCH_PWM_MIN 700 | ||
| 48 | +#define MAX_PITCH 0 | ||
| 49 | +#define MIN_PITCH -600 | ||
| 50 | + | ||
| 51 | +#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \ | ||
| 52 | + || DEVICE_VERSION == TF_A1 | ||
| 53 | + | ||
| 54 | +#define PITCH_PWM_MAX 0 | ||
| 55 | +#define PITCH_PWM_MIN 0 | ||
| 56 | +#define MAX_PITCH 0 | ||
| 57 | +#define MIN_PITCH -900 | ||
| 58 | + | ||
| 59 | +#elif DEVICE_VERSION == JZ_H1T | ||
| 60 | + | ||
| 61 | +#define PITCH_PWM_MAX 0 | ||
| 62 | +#define PITCH_PWM_MIN 0 | ||
| 63 | +#define MAX_PITCH 300 | ||
| 64 | +#define MIN_PITCH -900 | ||
| 65 | + | ||
| 66 | +#else | ||
| 67 | + | ||
| 68 | +#define PITCH_PWM_MAX 0 | ||
| 69 | +#define PITCH_PWM_MIN 0 | ||
| 70 | +#define MAX_PITCH 0 | ||
| 71 | +#define MIN_PITCH 0 | ||
| 72 | +#endif | ||
| 73 | + | ||
| 74 | + | ||
| 75 | +#ifdef __cplusplus | ||
| 76 | +} | ||
| 77 | +#endif | ||
| 78 | + | ||
| 79 | +#endif |
| @@ -8,6 +8,8 @@ | @@ -8,6 +8,8 @@ | ||
| 8 | #include <termios.h> | 8 | #include <termios.h> |
| 9 | #include <sys/time.h> | 9 | #include <sys/time.h> |
| 10 | 10 | ||
| 11 | +#include "JZsdkLib.h" | ||
| 12 | + | ||
| 11 | static void *UartDeal_rece(void *arg); | 13 | static void *UartDeal_rece(void *arg); |
| 12 | static void *UartDeal_send(void *arg); | 14 | static void *UartDeal_send(void *arg); |
| 13 | static int Gimbal_Uart_fd = 0; | 15 | static int Gimbal_Uart_fd = 0; |
| @@ -17,7 +19,7 @@ static int Gimbal_Uart_fd = 0; | @@ -17,7 +19,7 @@ static int Gimbal_Uart_fd = 0; | ||
| 17 | 创建一个接收Gimbal的接收线程 | 19 | 创建一个接收Gimbal的接收线程 |
| 18 | 20 | ||
| 19 | ******************************************************************/ | 21 | ******************************************************************/ |
| 20 | -int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd) | 22 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartReceive_Init(int Uart_fd) |
| 21 | { | 23 | { |
| 22 | int ret = 0; | 24 | int ret = 0; |
| 23 | pthread_t Uart_rece_task; | 25 | pthread_t Uart_rece_task; |
| @@ -30,10 +32,12 @@ int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd) | @@ -30,10 +32,12 @@ int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd) | ||
| 30 | ret = pthread_create(&Uart_rece_task,&task_attribute,UartDeal_rece,NULL); //串口接收线程 | 32 | ret = pthread_create(&Uart_rece_task,&task_attribute,UartDeal_rece,NULL); //串口接收线程 |
| 31 | if(ret != 0) | 33 | if(ret != 0) |
| 32 | { | 34 | { |
| 33 | - printf("创建展架串口接收线程失败!\n"); | 35 | + JZSDK_LOG_ERROR("创建展架串口接收线程失败!\n"); |
| 36 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 34 | } | 37 | } |
| 35 | else{ | 38 | else{ |
| 36 | - printf("创建展架串口接收线程成功!\n"); | 39 | + JZSDK_LOG_DEBUG("创建展架串口接收线程成功!\n"); |
| 40 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 37 | } | 41 | } |
| 38 | } | 42 | } |
| 39 | 43 | ||
| @@ -82,9 +86,41 @@ static void *UartDeal_rece(void *arg) | @@ -82,9 +86,41 @@ static void *UartDeal_rece(void *arg) | ||
| 82 | * 发送函数 | 86 | * 发送函数 |
| 83 | * | 87 | * |
| 84 | * ****************/ | 88 | * ****************/ |
| 85 | -int Gimbal_H3_H150ST_UartDeal_UartSend(unsigned char *send, int num) | 89 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartDeal_UartSend(unsigned char *send, int num) |
| 86 | { | 90 | { |
| 87 | 91 | ||
| 88 | write(Gimbal_Uart_fd,send, num); | 92 | write(Gimbal_Uart_fd,send, num); |
| 89 | - return 0; | 93 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 94 | +} | ||
| 95 | + | ||
| 96 | + | ||
| 97 | +/********** | ||
| 98 | + * | ||
| 99 | + * 发送任务函数 | ||
| 100 | + * | ||
| 101 | + * ***********/ | ||
| 102 | +static void JZsdk_Uart_UartSend_Task(void *data) | ||
| 103 | +{ | ||
| 104 | + Gimbal_SpecialUart_UartDeal_UartSend(data, 4); | ||
| 105 | +} | ||
| 106 | + | ||
| 107 | +/**************** | ||
| 108 | + * | ||
| 109 | + * | ||
| 110 | + * 发送函数 | ||
| 111 | + * | ||
| 112 | + * ****************/ | ||
| 113 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartSend(unsigned char *data, int num) | ||
| 114 | +{ | ||
| 115 | + unsigned char *str = (unsigned char*)malloc(sizeof(data)); | ||
| 116 | + memcpy(str, data, sizeof(data)); | ||
| 117 | + | ||
| 118 | + T_JZsdkReturnCode ret = TaskManagement_SubmitTask(JZsdk_Uart_UartSend_Task, (void *)str); | ||
| 119 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
| 120 | + { | ||
| 121 | + free(str); | ||
| 122 | + return ret; | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 90 | } | 126 | } |
| @@ -23,8 +23,8 @@ extern "C" { | @@ -23,8 +23,8 @@ extern "C" { | ||
| 23 | /* Exported types ------------------------------------------------------------*/ | 23 | /* Exported types ------------------------------------------------------------*/ |
| 24 | 24 | ||
| 25 | /* Exported functions --------------------------------------------------------*/ | 25 | /* Exported functions --------------------------------------------------------*/ |
| 26 | -int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd); | ||
| 27 | -int Gimbal_H3_H150ST_UartDeal_UartSend(unsigned char *send, int num); | 26 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartReceive_Init(int Uart_fd); |
| 27 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartSend(unsigned char *send, int num); | ||
| 28 | 28 | ||
| 29 | #ifdef __cplusplus | 29 | #ifdef __cplusplus |
| 30 | } | 30 | } |
Module/Gimbal/Gimbal_V3S/Gimbal_V3S.h
已删除
100644 → 0
| 1 | -/** | ||
| 2 | - ******************************************************************** | ||
| 3 | - * @file GIMBAL_H3.h | ||
| 4 | - * GIMBAL_H3的头文件 | ||
| 5 | - * | ||
| 6 | - ********************************************************************* | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
| 10 | -#ifndef GIMBAL_V3S_H | ||
| 11 | -#define GIMBAL_V3S_H | ||
| 12 | - | ||
| 13 | -/* Includes ------------------------------------------------------------------*/ | ||
| 14 | - | ||
| 15 | -#ifdef __cplusplus | ||
| 16 | -extern "C" { | ||
| 17 | -#endif | ||
| 18 | - | ||
| 19 | -/* Exported constants --------------------------------------------------------*/ | ||
| 20 | -/* 常亮定义*/ | ||
| 21 | -#include "Gimbal_V3S_H10T/Gimbal_V3S_H10T.h" | ||
| 22 | -#include "Gimbal_V3S_U3/Gimbal_V3S_U3.h" | ||
| 23 | -#include "Gimbal_V3S_H1T/Gimbal_V3S_H1T.h" | ||
| 24 | -#include "Gimbal_V3S_TFA1/Gimbal_V3S_TFA1.h" | ||
| 25 | - | ||
| 26 | -/* Exported types ------------------------------------------------------------*/ | ||
| 27 | - | ||
| 28 | -/* Exported functions --------------------------------------------------------*/ | ||
| 29 | - | ||
| 30 | - | ||
| 31 | -#ifdef __cplusplus | ||
| 32 | -} | ||
| 33 | -#endif | ||
| 34 | - | ||
| 35 | -#endif |
| 1 | -/* Includes ------------------------------------------------------------------*/ | ||
| 2 | -#include <stdio.h> | ||
| 3 | -#include <pthread.h> | ||
| 4 | -#include <stdlib.h> | ||
| 5 | - | ||
| 6 | -#include "./Gimbal_V3S_H10T.h" | ||
| 7 | - | ||
| 8 | -#include "ircut.h" | ||
| 9 | - | ||
| 10 | -/* Private constants ---------------------------------------------------------*/ | ||
| 11 | -#define MOTOR_FILE_PATH "/root/motor" | ||
| 12 | -#define V3S_H10T_angle_PWM_MIN 700 | ||
| 13 | -#define V3S_H10T_angle_PWM_MAX 820 | ||
| 14 | - | ||
| 15 | -#define V3S_H10T_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
| 16 | - | ||
| 17 | -/* Private types -------------------------------------------------------------*/ | ||
| 18 | - | ||
| 19 | -/* Private functions declaration ---------------------------------------------*/ | ||
| 20 | - | ||
| 21 | -static int V3S_H10T_motor_precise_adjustment_pitch =0;//默认微调值为0 | ||
| 22 | - | ||
| 23 | -static void *Gimbal_V3S_H10T_Motor_control(void *arg); | ||
| 24 | -static int V3S_H10T_Read_MotorAdjustmentPitch(void); | ||
| 25 | -static void V3S_H10T_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
| 26 | - | ||
| 27 | -int Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
| 28 | -{ | ||
| 29 | - *AdjustmentPitch = V3S_H10T_motor_precise_adjustment_pitch; | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | -void Gimbal_V3S_H10T_init_motor(void) | ||
| 33 | -{ | ||
| 34 | - V3S_H10T_motor_precise_adjustment_pitch = V3S_H10T_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
| 35 | - Gimbal_V3S_H10T_set_angle(0); | ||
| 36 | -} | ||
| 37 | - | ||
| 38 | - | ||
| 39 | -int Gimbal_V3S_H10T_set_angle(int angle) | ||
| 40 | -{ | ||
| 41 | - //传入的角度 -600~0 | ||
| 42 | - int PWM_num = 0; | ||
| 43 | - | ||
| 44 | - printf("V3S_H10T_angle:%d\n",angle); | ||
| 45 | - | ||
| 46 | - if(angle >= 0 ) | ||
| 47 | - { | ||
| 48 | - angle = 0; | ||
| 49 | - } | ||
| 50 | - else if(angle <= -600) | ||
| 51 | - { | ||
| 52 | - angle = -600; | ||
| 53 | - } | ||
| 54 | - | ||
| 55 | - else if( (angle > -600) && (angle < 0) ) | ||
| 56 | - { | ||
| 57 | - //angle不变 | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - //因为PWM写的时候是按90度写的,所以分母是900 | ||
| 61 | - PWM_num = ( angle * (V3S_H10T_angle_PWM_MAX-V3S_H10T_angle_PWM_MIN) /900 ) + V3S_H10T_angle_PWM_MAX; | ||
| 62 | - | ||
| 63 | - if (PWM_num > V3S_H10T_angle_PWM_MAX) | ||
| 64 | - { | ||
| 65 | - PWM_num = V3S_H10T_angle_PWM_MAX; | ||
| 66 | - } | ||
| 67 | - if (PWM_num < V3S_H10T_angle_PWM_MIN) | ||
| 68 | - { | ||
| 69 | - PWM_num = V3S_H10T_angle_PWM_MIN; | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - Ircut_PWM_control(PWM_num); | ||
| 73 | -} | ||
| 74 | - | ||
| 75 | - | ||
| 76 | -//云台微调 | ||
| 77 | -T_JZsdkReturnCode Gimbal_V3S_H10T_set_PitchFineTuning(int Pitch) | ||
| 78 | -{ | ||
| 79 | - //微调的角度值 提高Pitch | ||
| 80 | - V3S_H10T_motor_precise_adjustment_pitch += Pitch; | ||
| 81 | - | ||
| 82 | - //写入本地文件 | ||
| 83 | - V3S_H10T_Write_MotorAdjustmentPitch(V3S_H10T_motor_precise_adjustment_pitch); | ||
| 84 | - | ||
| 85 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 86 | - | ||
| 87 | -} | ||
| 88 | - | ||
| 89 | -//从文件中读出电机微调值 | ||
| 90 | -static int V3S_H10T_Read_MotorAdjustmentPitch(void) | ||
| 91 | -{ | ||
| 92 | - FILE *motor_file; | ||
| 93 | - int MotorAdjustmentPitch = 0; | ||
| 94 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
| 95 | - if (motor_file == NULL) | ||
| 96 | - { | ||
| 97 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 98 | - if (motor_file == NULL) | ||
| 99 | - { | ||
| 100 | - return 0; | ||
| 101 | - } | ||
| 102 | - } | ||
| 103 | - else | ||
| 104 | - { | ||
| 105 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
| 106 | - if (ret != 0) { | ||
| 107 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
| 108 | - } | ||
| 109 | - | ||
| 110 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
| 111 | - if (ret != sizeof(unsigned int)) { | ||
| 112 | - printf("Read motor weitiao error.\r\n"); | ||
| 113 | - } | ||
| 114 | - else{ | ||
| 115 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 116 | - } | ||
| 117 | - } | ||
| 118 | - fclose(motor_file); | ||
| 119 | - | ||
| 120 | - return MotorAdjustmentPitch; | ||
| 121 | -} | ||
| 122 | - | ||
| 123 | -//写入电机微调值刀文件中 | ||
| 124 | -static void V3S_H10T_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
| 125 | -{ | ||
| 126 | - //写入文件 | ||
| 127 | - FILE *motor_file; | ||
| 128 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 129 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
| 130 | - if (ret != sizeof(unsigned int)) { | ||
| 131 | - printf("Write motor weitiao error.\r\n"); | ||
| 132 | - } | ||
| 133 | - else{ | ||
| 134 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 135 | - } | ||
| 136 | - | ||
| 137 | - fclose(motor_file); | ||
| 138 | -} | ||
| 139 | - | ||
| 140 | - |
| 1 | -/* Includes ------------------------------------------------------------------*/ | ||
| 2 | -#include <stdio.h> | ||
| 3 | -#include <pthread.h> | ||
| 4 | -#include <stdlib.h> | ||
| 5 | - | ||
| 6 | -#include "./Gimbal_V3S_H1T.h" | ||
| 7 | -#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
| 8 | - | ||
| 9 | -#include "ircut.h" | ||
| 10 | -#include "BaseConfig.h" | ||
| 11 | - | ||
| 12 | -/* Private constants ---------------------------------------------------------*/ | ||
| 13 | - | ||
| 14 | - | ||
| 15 | -/* Private types -------------------------------------------------------------*/ | ||
| 16 | - | ||
| 17 | -/* Private functions declaration ---------------------------------------------*/ | ||
| 18 | - | ||
| 19 | -/********************* | ||
| 20 | - * | ||
| 21 | - * | ||
| 22 | - * 用于控制T60s的云台 | ||
| 23 | - * | ||
| 24 | - * | ||
| 25 | - * *************/ | ||
| 26 | - | ||
| 27 | -static void *Gimbal_V3S_H1T_Motor_control(void *arg); | ||
| 28 | -static int V3S_H1T_Read_MotorAdjustmentPitch(void); | ||
| 29 | -static void V3S_H1T_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
| 30 | - | ||
| 31 | -void Gimbal_V3S_H1T_init_motor(void) | ||
| 32 | -{ | ||
| 33 | - // 不用去特地初始化t60的云台 | ||
| 34 | -} | ||
| 35 | - | ||
| 36 | - | ||
| 37 | -int Gimbal_V3S_H1T_set_PitchAngle(int angle) | ||
| 38 | -{ | ||
| 39 | - printf("V3S_H1T_angle:%d\n",angle); | ||
| 40 | - | ||
| 41 | - if(angle >= 300 ) | ||
| 42 | - { | ||
| 43 | - angle = 300; | ||
| 44 | - } | ||
| 45 | - else if(angle <= -900) | ||
| 46 | - { | ||
| 47 | - angle = -900; | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | - else if( (angle > -900) && (angle < 0) ) | ||
| 51 | - { | ||
| 52 | - //angle不变 | ||
| 53 | - } | ||
| 54 | - | ||
| 55 | - //发送角度给串口1 | ||
| 56 | - JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_1, angle); | ||
| 57 | - | ||
| 58 | -} | ||
| 59 | - | ||
| 60 | -//微调云台 | ||
| 61 | -T_JZsdkReturnCode Gimbal_V3S_H1T_set_PitchFineTuning(int PitchFineTuning) | ||
| 62 | -{ | ||
| 63 | - JZsdk_Uart_Send_SetGimbalFineTuningPitch(UART_DEV_1, PitchFineTuning); | ||
| 64 | - | ||
| 65 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 66 | -} | ||
| 67 | - | ||
| 68 | -//查询云台微调值 | ||
| 69 | -int Gimbal_V3S_H1T_CheckStatus_GimbalFineTuning() | ||
| 70 | -{ | ||
| 71 | - JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(UART_DEV_1, 0); | ||
| 72 | -} | ||
| 73 | - | ||
| 74 | -//设置云台联动 | ||
| 75 | -int Gimbal_V3S_H1T_Set_GimbalLinkageControl(int value) | ||
| 76 | -{ | ||
| 77 | - JZsdk_Uart_Send_Set_GimbalLinkageControl(UART_DEV_1, 0, value); | ||
| 78 | -} | ||
| 79 | - | ||
| 80 | -//刷新云台联动值 | ||
| 81 | -int Gimbal_V3S_H1T_CheckStatus_GimbalLinkage() | ||
| 82 | -{ | ||
| 83 | - JZsdk_Uart_Send_CheckStatus_GimbalLinkage(UART_DEV_1, 0); | ||
| 84 | -} | ||
| 85 | - | ||
| 86 | -//查询云台值 | ||
| 87 | -T_JZsdkReturnCode Gimbal_V3S_H1T_CheckStatus_GimbalAngle() | ||
| 88 | -{ | ||
| 89 | - JZsdk_Uart_Send_CheckStatus_GimbalAngle(UART_DEV_1, 0); | ||
| 90 | -} |
| 1 | -/** | ||
| 2 | - ******************************************************************** | ||
| 3 | - * @file Gimbal_V3S_H1T.h | ||
| 4 | - * v3s板子的h1t云台头文件 | ||
| 5 | - * | ||
| 6 | - ********************************************************************* | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
| 10 | -#ifndef GIMBAL_V3S_H1T_H | ||
| 11 | -#define GIMBAL_V3S_H1T_H | ||
| 12 | - | ||
| 13 | -/* Includes ------------------------------------------------------------------*/ | ||
| 14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
| 15 | - | ||
| 16 | -#ifdef __cplusplus | ||
| 17 | -extern "C" { | ||
| 18 | -#endif | ||
| 19 | - | ||
| 20 | -/* Exported constants --------------------------------------------------------*/ | ||
| 21 | -/* 常亮定义*/ | ||
| 22 | - | ||
| 23 | -/* Exported types ------------------------------------------------------------*/ | ||
| 24 | - | ||
| 25 | -/* Exported functions --------------------------------------------------------*/ | ||
| 26 | -void Gimbal_V3S_H1T_init_motor(void); | ||
| 27 | -int Gimbal_V3S_H1T_set_PitchAngle(int angle); | ||
| 28 | -T_JZsdkReturnCode Gimbal_V3S_H1T_set_PitchFineTuning(int PitchFineTuning); | ||
| 29 | -int Gimbal_V3S_H1T_CheckStatus_GimbalFineTuning(); | ||
| 30 | -int Gimbal_V3S_H1T_Set_GimbalLinkageControl(int value); | ||
| 31 | -int Gimbal_V3S_H1T_CheckStatus_GimbalLinkage(); | ||
| 32 | -T_JZsdkReturnCode Gimbal_V3S_H1T_CheckStatus_GimbalAngle(); | ||
| 33 | - | ||
| 34 | - | ||
| 35 | - | ||
| 36 | -#ifdef __cplusplus | ||
| 37 | -} | ||
| 38 | -#endif | ||
| 39 | - | ||
| 40 | -#endif |
| 1 | -/* Includes ------------------------------------------------------------------*/ | ||
| 2 | -#include <stdio.h> | ||
| 3 | -#include <pthread.h> | ||
| 4 | -#include <stdlib.h> | ||
| 5 | - | ||
| 6 | -#include "./Gimbal_V3S_TFA1.h" | ||
| 7 | -#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
| 8 | - | ||
| 9 | -#include "ircut.h" | ||
| 10 | -#include "BaseConfig.h" | ||
| 11 | - | ||
| 12 | -/* Private constants ---------------------------------------------------------*/ | ||
| 13 | -#define MOTOR_FILE_PATH "/root/motor" | ||
| 14 | - | ||
| 15 | -#define V3S_TFA1_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
| 16 | - | ||
| 17 | -/* Private types -------------------------------------------------------------*/ | ||
| 18 | - | ||
| 19 | -/* Private functions declaration ---------------------------------------------*/ | ||
| 20 | - | ||
| 21 | -static int V3S_TFA1_motor_precise_adjustment_pitch =0;//默认微调值为0 | ||
| 22 | - | ||
| 23 | -static int V3S_TFA1_Read_MotorAdjustmentPitch(void); | ||
| 24 | -static void V3S_TFA1_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
| 25 | - | ||
| 26 | -void Gimbal_V3S_TFA1_init_motor(void) | ||
| 27 | -{ | ||
| 28 | - V3S_TFA1_motor_precise_adjustment_pitch = V3S_TFA1_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
| 29 | - Gimbal_V3S_TFA1_set_angle(0); | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | - | ||
| 33 | -static int Gimbal_TFA1_sendAngle(int angle) | ||
| 34 | -{ | ||
| 35 | - if(angle >= 0 ) | ||
| 36 | - { | ||
| 37 | - angle = 0; | ||
| 38 | - } | ||
| 39 | - else if(angle <= -900) | ||
| 40 | - { | ||
| 41 | - angle = -900; | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - else if( (angle > -900) && (angle < 0) ) | ||
| 45 | - { | ||
| 46 | - //angle不变 | ||
| 47 | - } | ||
| 48 | - | ||
| 49 | - //发送角度给串口2 | ||
| 50 | - JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_2, angle); | ||
| 51 | -} | ||
| 52 | - | ||
| 53 | -int Gimbal_V3S_TFA1_set_angle(int angle) | ||
| 54 | -{ | ||
| 55 | - Gimbal_TFA1_sendAngle(angle); | ||
| 56 | -} | ||
| 57 | - | ||
| 58 | - | ||
| 59 | -//云台微调 | ||
| 60 | -T_JZsdkReturnCode Gimbal_V3S_TFA1_set_PitchFineTuning(int Pitch) | ||
| 61 | -{ | ||
| 62 | - //微调的角度值 提高Pitch | ||
| 63 | - V3S_TFA1_motor_precise_adjustment_pitch += Pitch; | ||
| 64 | - | ||
| 65 | - //写入本地文件 | ||
| 66 | - V3S_TFA1_Write_MotorAdjustmentPitch(V3S_TFA1_motor_precise_adjustment_pitch); | ||
| 67 | - | ||
| 68 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 69 | - | ||
| 70 | -} | ||
| 71 | - | ||
| 72 | -//从文件中读出电机微调值 | ||
| 73 | -static int V3S_TFA1_Read_MotorAdjustmentPitch(void) | ||
| 74 | -{ | ||
| 75 | - FILE *motor_file; | ||
| 76 | - int MotorAdjustmentPitch = 0; | ||
| 77 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
| 78 | - if (motor_file == NULL) | ||
| 79 | - { | ||
| 80 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 81 | - if (motor_file == NULL) | ||
| 82 | - { | ||
| 83 | - return 0; | ||
| 84 | - } | ||
| 85 | - } | ||
| 86 | - else | ||
| 87 | - { | ||
| 88 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
| 89 | - if (ret != 0) { | ||
| 90 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
| 94 | - if (ret != sizeof(unsigned int)) { | ||
| 95 | - printf("Read motor weitiao error.\r\n"); | ||
| 96 | - } | ||
| 97 | - else{ | ||
| 98 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 99 | - } | ||
| 100 | - } | ||
| 101 | - fclose(motor_file); | ||
| 102 | - | ||
| 103 | - return MotorAdjustmentPitch; | ||
| 104 | -} | ||
| 105 | - | ||
| 106 | -//写入电机微调值刀文件中 | ||
| 107 | -static void V3S_TFA1_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
| 108 | -{ | ||
| 109 | - //写入文件 | ||
| 110 | - FILE *motor_file; | ||
| 111 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 112 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
| 113 | - if (ret != sizeof(unsigned int)) { | ||
| 114 | - printf("Write motor weitiao error.\r\n"); | ||
| 115 | - } | ||
| 116 | - else{ | ||
| 117 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 118 | - } | ||
| 119 | - | ||
| 120 | - fclose(motor_file); | ||
| 121 | -} | ||
| 122 | - | ||
| 123 | -int Gimbal_V3S_TFA1_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
| 124 | -{ | ||
| 125 | - *AdjustmentPitch = V3S_TFA1_motor_precise_adjustment_pitch; | ||
| 126 | -} | ||
| 127 | - | ||
| 128 | -//TFA1范围 | ||
| 129 | -T_JZsdkReturnCode V3S_TFA1_SetGimbalRange(int Range) | ||
| 130 | -{ | ||
| 131 | - if (Range == 0xFF) | ||
| 132 | - { | ||
| 133 | - printf("设置TFA1云台最大值\n"); | ||
| 134 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
| 135 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 136 | - } | ||
| 137 | - else if (Range == 0x00) | ||
| 138 | - { | ||
| 139 | - printf("设置TFA1云台最小值\n"); | ||
| 140 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
| 141 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 142 | - } | ||
| 143 | - | ||
| 144 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 145 | -} | ||
| 146 | - | ||
| 147 | -int Get_V3S_TFA1_motor_precise_adjustment_pitch() | ||
| 148 | -{ | ||
| 149 | - return V3S_TFA1_motor_precise_adjustment_pitch; | ||
| 150 | -} |
| 1 | -/** | ||
| 2 | - ******************************************************************** | ||
| 3 | - * @file Gimbal_V3S_TFA1.h | ||
| 4 | - * v3s板子的A1云台头文件 | ||
| 5 | - * | ||
| 6 | - ********************************************************************* | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
| 10 | -#ifndef GIMBAL_V3S_TFA1_H | ||
| 11 | -#define GIMBAL_V3S_TFA1_H | ||
| 12 | - | ||
| 13 | -/* Includes ------------------------------------------------------------------*/ | ||
| 14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
| 15 | - | ||
| 16 | -#ifdef __cplusplus | ||
| 17 | -extern "C" { | ||
| 18 | -#endif | ||
| 19 | - | ||
| 20 | -/* Exported constants --------------------------------------------------------*/ | ||
| 21 | -/* 常亮定义*/ | ||
| 22 | - | ||
| 23 | -/* Exported types ------------------------------------------------------------*/ | ||
| 24 | - | ||
| 25 | -/* Exported functions --------------------------------------------------------*/ | ||
| 26 | -void Gimbal_V3S_TFA1_init_motor(void); | ||
| 27 | -int Gimbal_V3S_TFA1_set_angle(int angle); | ||
| 28 | -T_JZsdkReturnCode V3S_TFA1_SetGimbalRange(int Range); | ||
| 29 | -T_JZsdkReturnCode Gimbal_V3S_TFA1_set_PitchFineTuning(int Pitch); | ||
| 30 | -int Gimbal_V3S_TFA1_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
| 31 | -int Get_V3S_TFA1_motor_precise_adjustment_pitch(); | ||
| 32 | - | ||
| 33 | - | ||
| 34 | - | ||
| 35 | -#ifdef __cplusplus | ||
| 36 | -} | ||
| 37 | -#endif | ||
| 38 | - | ||
| 39 | -#endif |
| 1 | -/* Includes ------------------------------------------------------------------*/ | ||
| 2 | -#include <stdio.h> | ||
| 3 | -#include <pthread.h> | ||
| 4 | -#include <stdlib.h> | ||
| 5 | - | ||
| 6 | -#include "./Gimbal_V3S_U3.h" | ||
| 7 | -#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
| 8 | - | ||
| 9 | -#include "ircut.h" | ||
| 10 | -#include "BaseConfig.h" | ||
| 11 | - | ||
| 12 | -/* Private constants ---------------------------------------------------------*/ | ||
| 13 | -#define MOTOR_FILE_PATH "/root/motor" | ||
| 14 | - | ||
| 15 | -#define V3S_U3_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
| 16 | - | ||
| 17 | -/* Private types -------------------------------------------------------------*/ | ||
| 18 | - | ||
| 19 | -/* Private functions declaration ---------------------------------------------*/ | ||
| 20 | - | ||
| 21 | -static int V3S_U3_motor_precise_adjustment_pitch =0;//默认微调值为0 | ||
| 22 | - | ||
| 23 | -static void *Gimbal_V3S_U3_Motor_control(void *arg); | ||
| 24 | -static int V3S_U3_Read_MotorAdjustmentPitch(void); | ||
| 25 | -static void V3S_U3_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
| 26 | - | ||
| 27 | -void Gimbal_V3S_U3_init_motor(void) | ||
| 28 | -{ | ||
| 29 | - V3S_U3_motor_precise_adjustment_pitch = V3S_U3_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
| 30 | - Gimbal_V3S_U3_set_angle(0); | ||
| 31 | -} | ||
| 32 | - | ||
| 33 | - | ||
| 34 | -int Gimbal_V3S_U3_set_angle(int angle) | ||
| 35 | -{ | ||
| 36 | - //微调角度值 | ||
| 37 | - printf("V3S_U3_angle:%d\n",angle); | ||
| 38 | - | ||
| 39 | - if(angle >= 0 ) | ||
| 40 | - { | ||
| 41 | - angle = 0; | ||
| 42 | - } | ||
| 43 | - else if(angle <= -900) | ||
| 44 | - { | ||
| 45 | - angle = -900; | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - else if( (angle > -900) && (angle < 0) ) | ||
| 49 | - { | ||
| 50 | - //angle不变 | ||
| 51 | - } | ||
| 52 | - | ||
| 53 | - //发送角度给串口2 | ||
| 54 | - JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_2, angle); | ||
| 55 | -} | ||
| 56 | - | ||
| 57 | -//云台微调 | ||
| 58 | -T_JZsdkReturnCode Gimbal_V3S_U3_set_PitchFineTuning(int Pitch) | ||
| 59 | -{ | ||
| 60 | - //微调的角度值 提高Pitch | ||
| 61 | - V3S_U3_motor_precise_adjustment_pitch += Pitch; | ||
| 62 | - | ||
| 63 | - //写入本地文件 | ||
| 64 | - V3S_U3_Write_MotorAdjustmentPitch(V3S_U3_motor_precise_adjustment_pitch); | ||
| 65 | - | ||
| 66 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 67 | - | ||
| 68 | -} | ||
| 69 | - | ||
| 70 | -//从文件中读出电机微调值 | ||
| 71 | -static int V3S_U3_Read_MotorAdjustmentPitch(void) | ||
| 72 | -{ | ||
| 73 | - FILE *motor_file; | ||
| 74 | - int MotorAdjustmentPitch = 0; | ||
| 75 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
| 76 | - if (motor_file == NULL) | ||
| 77 | - { | ||
| 78 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 79 | - if (motor_file == NULL) | ||
| 80 | - { | ||
| 81 | - return 0; | ||
| 82 | - } | ||
| 83 | - } | ||
| 84 | - else | ||
| 85 | - { | ||
| 86 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
| 87 | - if (ret != 0) { | ||
| 88 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
| 89 | - } | ||
| 90 | - | ||
| 91 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
| 92 | - if (ret != sizeof(unsigned int)) { | ||
| 93 | - printf("Read motor weitiao error.\r\n"); | ||
| 94 | - } | ||
| 95 | - else{ | ||
| 96 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 97 | - } | ||
| 98 | - } | ||
| 99 | - fclose(motor_file); | ||
| 100 | - | ||
| 101 | - return MotorAdjustmentPitch; | ||
| 102 | -} | ||
| 103 | - | ||
| 104 | -//写入电机微调值刀文件中 | ||
| 105 | -static void V3S_U3_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
| 106 | -{ | ||
| 107 | - //写入文件 | ||
| 108 | - FILE *motor_file; | ||
| 109 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
| 110 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
| 111 | - if (ret != sizeof(unsigned int)) { | ||
| 112 | - printf("Write motor weitiao error.\r\n"); | ||
| 113 | - } | ||
| 114 | - else{ | ||
| 115 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
| 116 | - } | ||
| 117 | - | ||
| 118 | - fclose(motor_file); | ||
| 119 | -} | ||
| 120 | - | ||
| 121 | -int Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
| 122 | -{ | ||
| 123 | - *AdjustmentPitch = V3S_U3_motor_precise_adjustment_pitch; | ||
| 124 | -} | ||
| 125 | - | ||
| 126 | -//U3范围 | ||
| 127 | -T_JZsdkReturnCode V3S_U3_SetGimbalRange(int Range) | ||
| 128 | -{ | ||
| 129 | - if (Range == 0xFF) | ||
| 130 | - { | ||
| 131 | - printf("设置u3云台最大值\n"); | ||
| 132 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
| 133 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 134 | - } | ||
| 135 | - else if (Range == 0x00) | ||
| 136 | - { | ||
| 137 | - printf("设置u3云台最小值\n"); | ||
| 138 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
| 139 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 140 | - } | ||
| 141 | - | ||
| 142 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 143 | -} |
| 1 | -/** | ||
| 2 | - ******************************************************************** | ||
| 3 | - * @file Gimbal_V3S_U3.h | ||
| 4 | - * v3s板子的u3云台头文件 | ||
| 5 | - * | ||
| 6 | - ********************************************************************* | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
| 10 | -#ifndef GIMBAL_V3S_U3_H | ||
| 11 | -#define GIMBAL_V3S_U3_H | ||
| 12 | - | ||
| 13 | -/* Includes ------------------------------------------------------------------*/ | ||
| 14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
| 15 | - | ||
| 16 | -#ifdef __cplusplus | ||
| 17 | -extern "C" { | ||
| 18 | -#endif | ||
| 19 | - | ||
| 20 | -/* Exported constants --------------------------------------------------------*/ | ||
| 21 | -/* 常亮定义*/ | ||
| 22 | - | ||
| 23 | -/* Exported types ------------------------------------------------------------*/ | ||
| 24 | - | ||
| 25 | -/* Exported functions --------------------------------------------------------*/ | ||
| 26 | -void Gimbal_V3S_U3_init_motor(void); | ||
| 27 | -int Gimbal_V3S_U3_set_angle(int angle); | ||
| 28 | -T_JZsdkReturnCode V3S_U3_SetGimbalRange(int Range); | ||
| 29 | -T_JZsdkReturnCode Gimbal_V3S_U3_set_PitchFineTuning(int Pitch); | ||
| 30 | -int Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
| 31 | - | ||
| 32 | - | ||
| 33 | - | ||
| 34 | -#ifdef __cplusplus | ||
| 35 | -} | ||
| 36 | -#endif | ||
| 37 | - | ||
| 38 | -#endif |
| @@ -56,6 +56,17 @@ T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value) | @@ -56,6 +56,17 @@ T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value) | ||
| 56 | { | 56 | { |
| 57 | JZsdk_RawBadPixelCheck_Flag = value; //原始盲点记录标志 | 57 | JZsdk_RawBadPixelCheck_Flag = value; //原始盲点记录标志 |
| 58 | JZsdk_GrayBadPixelCheck_flag = value; //灰度图坏点纠正标志 | 58 | JZsdk_GrayBadPixelCheck_flag = value; //灰度图坏点纠正标志 |
| 59 | +} | ||
| 60 | + | ||
| 61 | +//单点纠正开关 | ||
| 62 | +/******************** | ||
| 63 | + * | ||
| 64 | + * 该功能为一次性功能 | ||
| 65 | + * | ||
| 66 | + * | ||
| 67 | + * **************************/ | ||
| 68 | +T_JZsdkReturnCode JZsdk_CameraSPC_ResetSwitch(int value) | ||
| 69 | +{ | ||
| 59 | JZsdk_SPCCheck_flag = value; //单点纠正标志 | 70 | JZsdk_SPCCheck_flag = value; //单点纠正标志 |
| 60 | } | 71 | } |
| 61 | 72 |
| @@ -54,6 +54,8 @@ typedef enum GasEnhancementColor | @@ -54,6 +54,8 @@ typedef enum GasEnhancementColor | ||
| 54 | T_JZsdkReturnCode JZsdk_Camera_ShutterSwitch(int value); | 54 | T_JZsdkReturnCode JZsdk_Camera_ShutterSwitch(int value); |
| 55 | T_JZsdkReturnCode Camera_param(int flagcode, enum CameraParam paramflag, int *value); | 55 | T_JZsdkReturnCode Camera_param(int flagcode, enum CameraParam paramflag, int *value); |
| 56 | T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value); | 56 | T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value); |
| 57 | +T_JZsdkReturnCode JZsdk_CameraSPC_ResetSwitch(int value); | ||
| 58 | +T_JZsdkReturnCode JZsdk_H150ST_CameraInit(int width, int height, int frame_num); | ||
| 57 | 59 | ||
| 58 | #ifdef __cplusplus | 60 | #ifdef __cplusplus |
| 59 | } | 61 | } |
Module/MediaProc/Camera/H150ST/H150ST_Cam.c
0 → 100644
| 1 | +#include <stdio.h> | ||
| 2 | +#include <string.h> | ||
| 3 | +#include <stdlib.h> | ||
| 4 | +#include <pthread.h> | ||
| 5 | +#include <unistd.h> | ||
| 6 | + | ||
| 7 | +#include "JZsdkLib.h" | ||
| 8 | +#include "version_choose.h" | ||
| 9 | +#include "BaseConfig.h" | ||
| 10 | + | ||
| 11 | +#include "../V4L2_camera/V4L2_Record.h" | ||
| 12 | +#include "../../StreamProc/StreamProc.h" | ||
| 13 | +#include "../../MediaParm.h" | ||
| 14 | +#include "../../VideoMgmt/VideoMgmt.h" | ||
| 15 | +#include "../../StreamProc/StreamProc.h" | ||
| 16 | +#include "Ircut/ircut.h" | ||
| 17 | +#include "../Camera.h" | ||
| 18 | + | ||
| 19 | +#include "UI_control/UI_control.h" | ||
| 20 | +static int CameraFd = 0; | ||
| 21 | + | ||
| 22 | +//光学相机数据读取线程 | ||
| 23 | +static void *JZsdk_Cam_Data_Thread(void *args) | ||
| 24 | +{ | ||
| 25 | + while (1) | ||
| 26 | + { | ||
| 27 | + unsigned int buf_size = 0; | ||
| 28 | + unsigned char *buf = NULL; | ||
| 29 | + | ||
| 30 | + //从相机中读取一张照片 | ||
| 31 | + V4L2_CameraFrameRecord_OnlyGetFrame(&buf, &buf_size); | ||
| 32 | + | ||
| 33 | + if (buf == NULL) | ||
| 34 | + { | ||
| 35 | + JZSDK_LOG_ERROR("相机数据读取失败"); | ||
| 36 | + continue; | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + //放入缓冲池 | ||
| 40 | + VideoMgmt_write_data(&VideoMgmt_FirstVideo_index, buf, buf_size); | ||
| 41 | + | ||
| 42 | + //归还图片 | ||
| 43 | + V4L2_CameraFrameRecord_OnlyReturnFrame(); | ||
| 44 | + } | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +//150st相机初始化 | ||
| 48 | +T_JZsdkReturnCode JZsdk_H150ST_CameraInit(int width, int height, int frame_num) | ||
| 49 | +{ | ||
| 50 | + T_JZsdkReturnCode ret; | ||
| 51 | + | ||
| 52 | + //初始化摄像头 | ||
| 53 | + ret = V4l2_Camarainit2(&CameraFd,width,height,frame_num); | ||
| 54 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
| 55 | + { | ||
| 56 | + return ret; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + | ||
| 60 | + //初始化数据接收线程 | ||
| 61 | + pthread_t ReadDataTask; | ||
| 62 | + pthread_attr_t task_attribute; //线程属性 | ||
| 63 | + pthread_attr_init(&task_attribute); //初始化线程属性 | ||
| 64 | + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | ||
| 65 | + int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Cam_Data_Thread,NULL); //线程 | ||
| 66 | + if(opus_Protection != 0) | ||
| 67 | + { | ||
| 68 | + JZSDK_LOG_ERROR("创建v4l2线程失败!"); | ||
| 69 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 73 | +} |
| 1 | /** | 1 | /** |
| 2 | ******************************************************************** | 2 | ******************************************************************** |
| 3 | - * @file GIMBAL_H3.h | ||
| 4 | - * GIMBAL_H3的头文件 | 3 | + * @file H150ST_Cam.h |
| 4 | + * H150ST_Cam.h 的头文件 | ||
| 5 | * | 5 | * |
| 6 | ********************************************************************* | 6 | ********************************************************************* |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
| 10 | -#ifndef GIMBAL_H3_H | ||
| 11 | -#define GIMBAL_H3_H | 10 | +#ifndef H150ST_CAM_H |
| 11 | +#define H150ST_CAM_H | ||
| 12 | 12 | ||
| 13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
| 14 | +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
| 14 | 15 | ||
| 15 | #ifdef __cplusplus | 16 | #ifdef __cplusplus |
| 16 | extern "C" { | 17 | extern "C" { |
| @@ -18,12 +19,13 @@ extern "C" { | @@ -18,12 +19,13 @@ extern "C" { | ||
| 18 | 19 | ||
| 19 | /* Exported constants --------------------------------------------------------*/ | 20 | /* Exported constants --------------------------------------------------------*/ |
| 20 | /* 常亮定义*/ | 21 | /* 常亮定义*/ |
| 21 | -#include "Gimbal_H3_H150ST/Gimbal_H3_H150ST.h" | ||
| 22 | -#include "Gimbal_H3_H10/Gimbal_H3_H10.h" | 22 | + |
| 23 | 23 | ||
| 24 | /* Exported types ------------------------------------------------------------*/ | 24 | /* Exported types ------------------------------------------------------------*/ |
| 25 | 25 | ||
| 26 | /* Exported functions --------------------------------------------------------*/ | 26 | /* Exported functions --------------------------------------------------------*/ |
| 27 | +T_JZsdkReturnCode JZsdk_H150ST_CameraInit(int width, int height, int frame_num); | ||
| 28 | + | ||
| 27 | 29 | ||
| 28 | 30 | ||
| 29 | #ifdef __cplusplus | 31 | #ifdef __cplusplus |
| @@ -349,7 +349,7 @@ static void *JZsdk_Kt_Cam_Data_Thread(void *args) | @@ -349,7 +349,7 @@ static void *JZsdk_Kt_Cam_Data_Thread(void *args) | ||
| 349 | continue; | 349 | continue; |
| 350 | } | 350 | } |
| 351 | 351 | ||
| 352 | - | 352 | + |
| 353 | //放入缓冲池 | 353 | //放入缓冲池 |
| 354 | VideoMgmt_write_data(&VideoMgmt_SecondRaw_index, buf, buf_size); | 354 | VideoMgmt_write_data(&VideoMgmt_SecondRaw_index, buf, buf_size); |
| 355 | 355 |
| @@ -29,6 +29,8 @@ extern int g_CameraRegionBox_ClickTime; | @@ -29,6 +29,8 @@ extern int g_CameraRegionBox_ClickTime; | ||
| 29 | int g_temp_GasValueMax = 160; | 29 | int g_temp_GasValueMax = 160; |
| 30 | int g_temp_GasValueMin = 30; | 30 | int g_temp_GasValueMin = 30; |
| 31 | 31 | ||
| 32 | +#define BAD_PIXEL_MODE JZ_FLAGCODE_OFF | ||
| 33 | + | ||
| 32 | static T_JZsdkReturnCode Kt_Irc_TempCalibrate_Read(int flag, U16_t *Image, unsigned int maxLen); | 34 | static T_JZsdkReturnCode Kt_Irc_TempCalibrate_Read(int flag, U16_t *Image, unsigned int maxLen); |
| 33 | static T_JZsdkReturnCode Kt_Irc_TempCalibrate_Save(int flag, U16_t *Image, unsigned int maxLen); | 35 | static T_JZsdkReturnCode Kt_Irc_TempCalibrate_Save(int flag, U16_t *Image, unsigned int maxLen); |
| 34 | static T_JZsdkReturnCode Kt_Irc_ReadAndSave_threshold(int flag, int order,unsigned int *num); | 36 | static T_JZsdkReturnCode Kt_Irc_ReadAndSave_threshold(int flag, int order,unsigned int *num); |
| @@ -1336,6 +1338,7 @@ T_JZsdkReturnCode Kt_Irc_14bitGrayData_to_RawData(U8_t *data, int data_len, U8_t | @@ -1336,6 +1338,7 @@ T_JZsdkReturnCode Kt_Irc_14bitGrayData_to_RawData(U8_t *data, int data_len, U8_t | ||
| 1336 | //盲元纠正 | 1338 | //盲元纠正 |
| 1337 | JZsdk_CutBadPixel_U16(u16_RawData, dealInfo->Width, dealInfo->Height, dealInfo->BadPixel, dealInfo->BadPixelNum,dealInfo->BadPixelExtern, 1); | 1339 | JZsdk_CutBadPixel_U16(u16_RawData, dealInfo->Width, dealInfo->Height, dealInfo->BadPixel, dealInfo->BadPixelNum,dealInfo->BadPixelExtern, 1); |
| 1338 | 1340 | ||
| 1341 | + | ||
| 1339 | /*************************************************************************** | 1342 | /*************************************************************************** |
| 1340 | * | 1343 | * |
| 1341 | * 图像标定记录 | 1344 | * 图像标定记录 |
| @@ -1432,8 +1435,9 @@ T_JZsdkReturnCode Kt_Irc_14bitGrayData_to_RawData(U8_t *data, int data_len, U8_t | @@ -1432,8 +1435,9 @@ T_JZsdkReturnCode Kt_Irc_14bitGrayData_to_RawData(U8_t *data, int data_len, U8_t | ||
| 1432 | JZsdk_GrayCheckisBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, &dealInfo->GrayPixelNum); | 1435 | JZsdk_GrayCheckisBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, &dealInfo->GrayPixelNum); |
| 1433 | JZsdk_GrayBadPixelCheck_flag = JZ_FLAGCODE_OFF; | 1436 | JZsdk_GrayBadPixelCheck_flag = JZ_FLAGCODE_OFF; |
| 1434 | } | 1437 | } |
| 1435 | - JZsdk_CutBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, dealInfo->GrayPixelNum,dealInfo->GrayPixelExtern, 1); | ||
| 1436 | - | 1438 | + |
| 1439 | + //JZsdk_CutBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, dealInfo->GrayPixelNum,dealInfo->GrayPixelExtern, 1); | ||
| 1440 | + | ||
| 1437 | //灰度图转rgb888 | 1441 | //灰度图转rgb888 |
| 1438 | Kt_Irc_GrayTo_RGB(GrayImage, &RgbImage, &RgbImageLen,dealInfo); | 1442 | Kt_Irc_GrayTo_RGB(GrayImage, &RgbImage, &RgbImageLen,dealInfo); |
| 1439 | } | 1443 | } |
| @@ -1450,7 +1454,8 @@ T_JZsdkReturnCode Kt_Irc_14bitGrayData_to_RawData(U8_t *data, int data_len, U8_t | @@ -1450,7 +1454,8 @@ T_JZsdkReturnCode Kt_Irc_14bitGrayData_to_RawData(U8_t *data, int data_len, U8_t | ||
| 1450 | JZsdk_GrayCheckisBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, &dealInfo->GrayPixelNum); | 1454 | JZsdk_GrayCheckisBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, &dealInfo->GrayPixelNum); |
| 1451 | JZsdk_GrayBadPixelCheck_flag = JZ_FLAGCODE_OFF; | 1455 | JZsdk_GrayBadPixelCheck_flag = JZ_FLAGCODE_OFF; |
| 1452 | } | 1456 | } |
| 1453 | - JZsdk_CutBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, dealInfo->GrayPixelNum,dealInfo->GrayPixelExtern, 1); | 1457 | + |
| 1458 | + //JZsdk_CutBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, dealInfo->GrayPixelNum,dealInfo->GrayPixelExtern, 1); | ||
| 1454 | 1459 | ||
| 1455 | //灰度图转伪彩rgb888 | 1460 | //灰度图转伪彩rgb888 |
| 1456 | ret = PseudoColor_Gray2Rgb(GrayImage, &RgbImage, &RgbImageLen, dealInfo->PixelNum); | 1461 | ret = PseudoColor_Gray2Rgb(GrayImage, &RgbImage, &RgbImageLen, dealInfo->PixelNum); |
| @@ -11,6 +11,8 @@ | @@ -11,6 +11,8 @@ | ||
| 11 | #define MEDIA_PARM_H | 11 | #define MEDIA_PARM_H |
| 12 | 12 | ||
| 13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
| 14 | +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
| 15 | +#include "BaseConfig.h" | ||
| 14 | 16 | ||
| 15 | #ifdef __cplusplus | 17 | #ifdef __cplusplus |
| 16 | extern "C" { | 18 | extern "C" { |
| @@ -22,13 +24,38 @@ extern "C" { | @@ -22,13 +24,38 @@ extern "C" { | ||
| 22 | /* Exported types ------------------------------------------------------------*/ | 24 | /* Exported types ------------------------------------------------------------*/ |
| 23 | 25 | ||
| 24 | /* Exported functions --------------------------------------------------------*/ | 26 | /* Exported functions --------------------------------------------------------*/ |
| 27 | + | ||
| 28 | +#if DEVICE_VERSION == JZ_C1 | ||
| 29 | + | ||
| 25 | #define FIRST_WIDTH 320 | 30 | #define FIRST_WIDTH 320 |
| 26 | #define FIRST_HEIGHT 256 | 31 | #define FIRST_HEIGHT 256 |
| 32 | +#define FIRST_FRAME_NUM 30 | ||
| 27 | 33 | ||
| 28 | #define SECOND_WIDTH 1920 | 34 | #define SECOND_WIDTH 1920 |
| 29 | #define SECOND_HEIGHT 1080 | 35 | #define SECOND_HEIGHT 1080 |
| 36 | +#define SECOND_FRAME_NUM 30 | ||
| 37 | + | ||
| 38 | +#elif DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
| 39 | + | ||
| 40 | +#define FIRST_WIDTH 1280 | ||
| 41 | +#define FIRST_HEIGHT 720 | ||
| 42 | +#define FIRST_FRAME_NUM 25 | ||
| 30 | 43 | ||
| 44 | +#define SECOND_WIDTH 0 | ||
| 45 | +#define SECOND_HEIGHT 0 | ||
| 46 | +#define SECOND_FRAME_NUM 25 | ||
| 31 | 47 | ||
| 48 | +#else | ||
| 49 | + | ||
| 50 | +#define FIRST_WIDTH 1280 | ||
| 51 | +#define FIRST_HEIGHT 720 | ||
| 52 | +#define FIRST_FRAME_NUM 25 | ||
| 53 | + | ||
| 54 | +#define SECOND_WIDTH 1280 | ||
| 55 | +#define SECOND_HEIGHT 720 | ||
| 56 | +#define SECOND_FRAME_NUM 25 | ||
| 57 | + | ||
| 58 | +#endif | ||
| 32 | 59 | ||
| 33 | 60 | ||
| 34 | #ifdef __cplusplus | 61 | #ifdef __cplusplus |
| @@ -13,7 +13,6 @@ | @@ -13,7 +13,6 @@ | ||
| 13 | #include "./MediaParm.h" | 13 | #include "./MediaParm.h" |
| 14 | #include "./Camera/Camera.h" | 14 | #include "./Camera/Camera.h" |
| 15 | 15 | ||
| 16 | - | ||
| 17 | static int Kt_irc_flag = JZ_FLAGCODE_ON; | 16 | static int Kt_irc_flag = JZ_FLAGCODE_ON; |
| 18 | 17 | ||
| 19 | //视频流模块初始化 | 18 | //视频流模块初始化 |
| @@ -45,23 +44,28 @@ T_JZsdkReturnCode MediaProc_Init() | @@ -45,23 +44,28 @@ T_JZsdkReturnCode MediaProc_Init() | ||
| 45 | //5、打开默认选项 | 44 | //5、打开默认选项 |
| 46 | VideoMgmt_VideoStreamFlowIndex(VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND); //默认推送光学摄像头 | 45 | VideoMgmt_VideoStreamFlowIndex(VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND); //默认推送光学摄像头 |
| 47 | JZsdk_Kt_Irc_ShutterSwitch(JZ_FLAGCODE_ON); | 46 | JZsdk_Kt_Irc_ShutterSwitch(JZ_FLAGCODE_ON); |
| 47 | + | ||
| 48 | + //6、修改部分参数 | ||
| 49 | + int value = 8; | ||
| 50 | + Camera_param(JZ_FLAGCODE_SET, CAMERA_PSEUDO_COLOR, &value); | ||
| 51 | + value = 1; | ||
| 52 | + Camera_param(JZ_FLAGCODE_SET, CAMERA_PIXEL_PSEUDO_COLOR_MODE, &value); | ||
| 48 | } | 53 | } |
| 49 | 54 | ||
| 50 | //如果是150S相机 150T相机 | 55 | //如果是150S相机 150T相机 |
| 51 | if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | 56 | if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) |
| 52 | { | 57 | { |
| 53 | - // //1、启动视频流缓冲区模块 | ||
| 54 | - // VideoMgmt_init_buffer(&VideoMgmt_FirstVideo_index); | ||
| 55 | - // VideoMgmt_init_buffer(&VideoMgmt_FirstRaw_index); | ||
| 56 | - | ||
| 57 | - // //3、相机初始化 | ||
| 58 | - // JZsdk_Kt_Irc_Camera_Init(); | 58 | + //1、启动视频流缓冲区模块 |
| 59 | + VideoMgmt_init_buffer(&VideoMgmt_FirstVideo_index); | ||
| 59 | 60 | ||
| 60 | - // //4、启用推流模块 | ||
| 61 | - // VideoMgmt_VideoStreamFlow_Init(25, &VideoMgmt_FirstVideo_index, VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST); | 61 | + //2、相机初始化 |
| 62 | + JZsdk_H150ST_CameraInit(FIRST_WIDTH, FIRST_HEIGHT, FIRST_FRAME_NUM); | ||
| 62 | 63 | ||
| 64 | + //3、启用推流模块 | ||
| 65 | + VideoMgmt_VideoStreamFlow_Init(FIRST_FRAME_NUM, &VideoMgmt_FirstVideo_index, VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST); | ||
| 66 | + | ||
| 67 | + VideoMgmt_VideoStreamFlowIndex(VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST); //默认推送光学摄像头 | ||
| 63 | } | 68 | } |
| 64 | 69 | ||
| 65 | - | ||
| 66 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 70 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| 67 | } | 71 | } |
| @@ -39,9 +39,11 @@ static void *FilePlay_data_pthread(void *arg) | @@ -39,9 +39,11 @@ static void *FilePlay_data_pthread(void *arg) | ||
| 39 | int loop = JZ_FLAGCODE_OFF; | 39 | int loop = JZ_FLAGCODE_OFF; |
| 40 | do | 40 | do |
| 41 | { | 41 | { |
| 42 | - Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop); | ||
| 43 | //音频文件播放接口 | 42 | //音频文件播放接口 |
| 44 | AudioFile_StartPlay_Interface(FilePath); | 43 | AudioFile_StartPlay_Interface(FilePath); |
| 44 | + | ||
| 45 | + Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop); | ||
| 46 | + | ||
| 45 | } while ( (loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON)); | 47 | } while ( (loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON)); |
| 46 | 48 | ||
| 47 | //释放掉结构体和标志位 | 49 | //释放掉结构体和标志位 |
| @@ -209,12 +209,15 @@ static T_JZsdkReturnCode TTS_FILE_GenerateAndPlay(struct t_Megaphone_tts_param * | @@ -209,12 +209,15 @@ static T_JZsdkReturnCode TTS_FILE_GenerateAndPlay(struct t_Megaphone_tts_param * | ||
| 209 | int loop; | 209 | int loop; |
| 210 | do | 210 | do |
| 211 | { | 211 | { |
| 212 | - Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop); | 212 | + |
| 213 | TTS_Synthesis(argv, session_begin_params); | 213 | TTS_Synthesis(argv, session_begin_params); |
| 214 | if (tts_add_mode != 0) | 214 | if (tts_add_mode != 0) |
| 215 | { | 215 | { |
| 216 | TTS_Synthesis(argv, tts_add_params); | 216 | TTS_Synthesis(argv, tts_add_params); |
| 217 | } | 217 | } |
| 218 | + | ||
| 219 | + Megaphone_param(JZ_FLAGCODE_GET, MEGAPHONE_LOOP, &loop); | ||
| 220 | + | ||
| 218 | } while ( (loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON)); | 221 | } while ( (loop == JZ_FLAGCODE_ON) && (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON)); |
| 219 | 222 | ||
| 220 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 223 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
| @@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
| 11 | #include "MediaProc/VideoMgmt/VideoMgmt.h" | 11 | #include "MediaProc/VideoMgmt/VideoMgmt.h" |
| 12 | #include "./WidegMgmt/JZsdk_Widget.h" | 12 | #include "./WidegMgmt/JZsdk_Widget.h" |
| 13 | 13 | ||
| 14 | -#include "Gimbal_InAndOut.h" | 14 | +#include "Gimbal/Gimbal.h" |
| 15 | #include "DeviceInfo/DeviceInfo.h" | 15 | #include "DeviceInfo/DeviceInfo.h" |
| 16 | 16 | ||
| 17 | #if APP_VERSION == APP_PSDK | 17 | #if APP_VERSION == APP_PSDK |
| @@ -1371,6 +1371,29 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Camera_BadPixelSwitch(int wheather_ChangeWidg | @@ -1371,6 +1371,29 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Camera_BadPixelSwitch(int wheather_ChangeWidg | ||
| 1371 | 1371 | ||
| 1372 | /********* | 1372 | /********* |
| 1373 | * | 1373 | * |
| 1374 | + * 开次单次spc重计 | ||
| 1375 | + * | ||
| 1376 | +**********/ | ||
| 1377 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Camera_SPC_ResetSwitch(int wheather_ChangeWidget, int wheather_control, int value) | ||
| 1378 | +{ | ||
| 1379 | + //如果修改控件 | ||
| 1380 | + if (wheather_ChangeWidget == JZ_FLAGCODE_ON) | ||
| 1381 | + { | ||
| 1382 | + //无控件变化 | ||
| 1383 | + } | ||
| 1384 | + | ||
| 1385 | + //如果进行控制 | ||
| 1386 | + if (wheather_control == JZ_FLAGCODE_ON) | ||
| 1387 | + { | ||
| 1388 | + UIcontrol_Camera_SPC_ResetSwitch(DEVICE_PSDK, value); | ||
| 1389 | + } | ||
| 1390 | + | ||
| 1391 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
| 1392 | +} | ||
| 1393 | + | ||
| 1394 | + | ||
| 1395 | +/********* | ||
| 1396 | + * | ||
| 1374 | * 冻结视频流 | 1397 | * 冻结视频流 |
| 1375 | * | 1398 | * |
| 1376 | **********/ | 1399 | **********/ |
| @@ -125,8 +125,6 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(int wheather_contr | @@ -125,8 +125,6 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightFirstColor(int wheather_contr | ||
| 125 | //警灯颜色2 | 125 | //警灯颜色2 |
| 126 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(int wheather_control, int value); | 126 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_WarningLightSecondColor(int wheather_control, int value); |
| 127 | 127 | ||
| 128 | -//获取云台状态标志位 | ||
| 129 | -int Get_JZsdk_GimbalStatusFlag(); | ||
| 130 | //对外供电开关 | 128 | //对外供电开关 |
| 131 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_OutputPowerStatus(int wheather_control,int value); | 129 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_OutputPowerStatus(int wheather_control,int value); |
| 132 | 130 | ||
| @@ -150,6 +148,8 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_PseudoColor(int wheather_ChangeWidget, in | @@ -150,6 +148,8 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_PseudoColor(int wheather_ChangeWidget, in | ||
| 150 | // psdk 像素色彩模式 | 148 | // psdk 像素色彩模式 |
| 151 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_PixelColorMode(int wheather_ChangeWidget, int wheather_control, int value); | 149 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_PixelColorMode(int wheather_ChangeWidget, int wheather_control, int value); |
| 152 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Camera_BadPixelSwitch(int wheather_ChangeWidget, int wheather_control, int value); | 150 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_Camera_BadPixelSwitch(int wheather_ChangeWidget, int wheather_control, int value); |
| 151 | +T_JZsdkReturnCode JZsdk_Psdk_UI_io_Camera_SPC_ResetSwitch(int wheather_ChangeWidget, int wheather_control, int value); | ||
| 152 | + | ||
| 153 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_FreezeVideo(int wheather_ChangeWidget, int wheather_control, int value); | 153 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_FreezeVideo(int wheather_ChangeWidget, int wheather_control, int value); |
| 154 | T_JZsdkReturnCode JZsdK_SetFocusTarget(int PointX, int PointY); | 154 | T_JZsdkReturnCode JZsdK_SetFocusTarget(int PointX, int PointY); |
| 155 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_CameraCorrectMode(int wheather_ChangeWidget, int wheather_control, int value); | 155 | T_JZsdkReturnCode JZsdk_Psdk_UI_io_CameraCorrectMode(int wheather_ChangeWidget, int wheather_control, int value); |
| @@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
| 4 | 4 | ||
| 5 | #include "Megaphone/Megaphone.h" | 5 | #include "Megaphone/Megaphone.h" |
| 6 | #include "Lighting_InAndOut.h" | 6 | #include "Lighting_InAndOut.h" |
| 7 | -#include "Gimbal_InAndOut.h" | 7 | +#include "Gimbal/Gimbal.h" |
| 8 | #include "JZsdk_uart/JZsdk_Uart_Input.h" | 8 | #include "JZsdk_uart/JZsdk_Uart_Input.h" |
| 9 | #include "JZsdk_uart/Uart_Config.h" | 9 | #include "JZsdk_uart/Uart_Config.h" |
| 10 | #include "Psdk_UI_io.h" | 10 | #include "Psdk_UI_io.h" |
| @@ -837,7 +837,7 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchAngle(int DeviceName,int value) | @@ -837,7 +837,7 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchAngle(int DeviceName,int value) | ||
| 837 | T_JZsdkReturnCode UIcontrol_SetGimbalRange(int DeviceName,int value) | 837 | T_JZsdkReturnCode UIcontrol_SetGimbalRange(int DeviceName,int value) |
| 838 | { | 838 | { |
| 839 | //调用喊话器的接口 | 839 | //调用喊话器的接口 |
| 840 | - T_JZsdkReturnCode ret = Gimbal_SetGimbalRange(value); | 840 | + T_JZsdkReturnCode ret = Gimbal_SetGimbalRange(0, value); |
| 841 | if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | 841 | if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) |
| 842 | { | 842 | { |
| 843 | printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); | 843 | printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); |
| @@ -851,7 +851,7 @@ T_JZsdkReturnCode UIcontrol_SetGimbalRange(int DeviceName,int value) | @@ -851,7 +851,7 @@ T_JZsdkReturnCode UIcontrol_SetGimbalRange(int DeviceName,int value) | ||
| 851 | T_JZsdkReturnCode UIcontrol_Set_GimbalPitchFineTuning(int DeviceName,int value) | 851 | T_JZsdkReturnCode UIcontrol_Set_GimbalPitchFineTuning(int DeviceName,int value) |
| 852 | { | 852 | { |
| 853 | //调用接口 | 853 | //调用接口 |
| 854 | - T_JZsdkReturnCode ret = Gimbal_Set_PitchFineTuning(DeviceName, value); | 854 | + T_JZsdkReturnCode ret = Gimbal_Set_PitchFineTuning(value); |
| 855 | if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | 855 | if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) |
| 856 | { | 856 | { |
| 857 | printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); | 857 | printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); |
| @@ -887,20 +887,20 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchFineTuning(int DeviceName,int value) | @@ -887,20 +887,20 @@ T_JZsdkReturnCode UIcontrol_Set_GimbalPitchFineTuning(int DeviceName,int value) | ||
| 887 | //查询云台角度 | 887 | //查询云台角度 |
| 888 | T_JZsdkReturnCode UIcontrol_CheckStatus_GimbalAngle(int *PitchValue, int *YawValue) | 888 | T_JZsdkReturnCode UIcontrol_CheckStatus_GimbalAngle(int *PitchValue, int *YawValue) |
| 889 | { | 889 | { |
| 890 | - Gimbal_CheckStatus_Angle(PitchValue, YawValue); | 890 | + Gimbal_CheckStatus_Angle(PitchValue, YawValue, NULL); |
| 891 | } | 891 | } |
| 892 | 892 | ||
| 893 | //查询云台微调值 | 893 | //查询云台微调值 |
| 894 | T_JZsdkReturnCode UIcontrol_CheckStatus_GimbalPitchFineTuning(int *PitchValue, int *YawValue) | 894 | T_JZsdkReturnCode UIcontrol_CheckStatus_GimbalPitchFineTuning(int *PitchValue, int *YawValue) |
| 895 | { | 895 | { |
| 896 | - Gimbal_CheckStatus_GimbalFineTuning(PitchValue, YawValue); | 896 | + Gimbal_CheckStatus_GimbalFineTuning(PitchValue, YawValue, NULL); |
| 897 | } | 897 | } |
| 898 | 898 | ||
| 899 | //获得云台俯仰微调值 | 899 | //获得云台俯仰微调值 |
| 900 | T_JZsdkReturnCode UIcontrol_Obtain_GimbalPitchFineTuninng(int DeviceName, int Pitch) | 900 | T_JZsdkReturnCode UIcontrol_Obtain_GimbalPitchFineTuninng(int DeviceName, int Pitch) |
| 901 | { | 901 | { |
| 902 | //调用接口 | 902 | //调用接口 |
| 903 | - T_JZsdkReturnCode ret = Gimbal_Obtain_GimbalFineTuning(Pitch); | 903 | + T_JZsdkReturnCode ret = Gimbal_Obtain_GimbalFineTuning(Pitch, 0, 0); |
| 904 | if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | 904 | if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) |
| 905 | { | 905 | { |
| 906 | printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); | 906 | printf("%s:%s\n",UI_CONTROL_ERROR,JZsdk_GetReturnCodeMessage(ret)); |
| @@ -2063,6 +2063,22 @@ T_JZsdkReturnCode UIcontrol_Camera_BadPixelSwitch(int DeviceName, int value) | @@ -2063,6 +2063,22 @@ T_JZsdkReturnCode UIcontrol_Camera_BadPixelSwitch(int DeviceName, int value) | ||
| 2063 | #endif | 2063 | #endif |
| 2064 | } | 2064 | } |
| 2065 | 2065 | ||
| 2066 | +/********* | ||
| 2067 | + * | ||
| 2068 | + * 开次spc重计 | ||
| 2069 | + * | ||
| 2070 | +**********/ | ||
| 2071 | +T_JZsdkReturnCode UIcontrol_Camera_SPC_ResetSwitch(int DeviceName, int value) | ||
| 2072 | +{ | ||
| 2073 | +#if MEDIA_PROC_CONFIG_STATUS == VERSION_SWITCH_ON | ||
| 2074 | + T_JZsdkReturnCode ret; | ||
| 2075 | + ret = JZsdk_CameraSPC_ResetSwitch(JZ_FLAGCODE_ON); | ||
| 2076 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
| 2077 | + { | ||
| 2078 | + return ret; | ||
| 2079 | + } | ||
| 2080 | +#endif | ||
| 2081 | +} | ||
| 2066 | 2082 | ||
| 2067 | /**************************************************************************************************************************************** | 2083 | /**************************************************************************************************************************************** |
| 2068 | * | 2084 | * |
| @@ -105,6 +105,7 @@ T_JZsdkReturnCode UIcontrol_Send_CameraStatus(int status); | @@ -105,6 +105,7 @@ T_JZsdkReturnCode UIcontrol_Send_CameraStatus(int status); | ||
| 105 | T_JZsdkReturnCode UIcontrol_Set_VideoMgmtPushIndex(int DeviceName, int Pushindex); | 105 | T_JZsdkReturnCode UIcontrol_Set_VideoMgmtPushIndex(int DeviceName, int Pushindex); |
| 106 | T_JZsdkReturnCode UIcontrol_Set_ShutterSwitch(int DeviceName, int value); | 106 | T_JZsdkReturnCode UIcontrol_Set_ShutterSwitch(int DeviceName, int value); |
| 107 | T_JZsdkReturnCode UIcontrol_Camera_BadPixelSwitch(int DeviceName, int value); | 107 | T_JZsdkReturnCode UIcontrol_Camera_BadPixelSwitch(int DeviceName, int value); |
| 108 | +T_JZsdkReturnCode UIcontrol_Camera_SPC_ResetSwitch(int DeviceName, int value); | ||
| 108 | T_JZsdkReturnCode UIcontrol_FreezeVideo(int DeviceName, int value); | 109 | T_JZsdkReturnCode UIcontrol_FreezeVideo(int DeviceName, int value); |
| 109 | T_JZsdkReturnCode UIcontrol_Set_PseudoColor(int DeviceName, int value); | 110 | T_JZsdkReturnCode UIcontrol_Set_PseudoColor(int DeviceName, int value); |
| 110 | T_JZsdkReturnCode UIcontrol_Set_PixelColorMode(int DeviceName, int value); | 111 | T_JZsdkReturnCode UIcontrol_Set_PixelColorMode(int DeviceName, int value); |
| @@ -68,6 +68,10 @@ static int WidgetMgMT_Control_WorkFuntion(int Inscode, int value) | @@ -68,6 +68,10 @@ static int WidgetMgMT_Control_WorkFuntion(int Inscode, int value) | ||
| 68 | JZsdk_Psdk_UI_io_Camera_BadPixelSwitch(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); | 68 | JZsdk_Psdk_UI_io_Camera_BadPixelSwitch(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); |
| 69 | break; | 69 | break; |
| 70 | 70 | ||
| 71 | + case JZSDK_WIDGET_SPC_RESET: | ||
| 72 | + JZsdk_Psdk_UI_io_Camera_SPC_ResetSwitch(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); | ||
| 73 | + break; | ||
| 74 | + | ||
| 71 | case JZSDK_WIDGET_FREEZE_VIDEO: | 75 | case JZSDK_WIDGET_FREEZE_VIDEO: |
| 72 | JZsdk_Psdk_UI_io_FreezeVideo(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); | 76 | JZsdk_Psdk_UI_io_FreezeVideo(JZ_FLAGCODE_ON, JZ_FLAGCODE_ON, value); |
| 73 | break; | 77 | break; |
| @@ -35,10 +35,13 @@ typedef enum JZsdk_Widget_Control | @@ -35,10 +35,13 @@ typedef enum JZsdk_Widget_Control | ||
| 35 | JZSDK_WIDGET_CAMERA_CORRECT_MODE = 0x0015, //相机纠正模式 | 35 | JZSDK_WIDGET_CAMERA_CORRECT_MODE = 0x0015, //相机纠正模式 |
| 36 | JZSDK_WIDGET_GAS_ENHANCEMENT_COLOR = 0x0016, //气体增强颜色 | 36 | JZSDK_WIDGET_GAS_ENHANCEMENT_COLOR = 0x0016, //气体增强颜色 |
| 37 | JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT = 0x0017, //气体增强纠正 | 37 | JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT = 0x0017, //气体增强纠正 |
| 38 | + JZSDK_WIDGET_SPC_RESET = 0x0019, //spc重置 | ||
| 38 | 39 | ||
| 39 | JZSDK_WIDGET_FREEZE_VIDEO = 0x0018, //冻结视频流 | 40 | JZSDK_WIDGET_FREEZE_VIDEO = 0x0018, //冻结视频流 |
| 40 | 41 | ||
| 41 | JZSDK_WIDGET_SIDE_LASER_MODE = 0x0020, | 42 | JZSDK_WIDGET_SIDE_LASER_MODE = 0x0020, |
| 43 | + | ||
| 44 | + | ||
| 42 | }JZsdk_Widget_Control; | 45 | }JZsdk_Widget_Control; |
| 43 | 46 | ||
| 44 | /* Exported types ------------------------------------------------------------*/ | 47 | /* Exported types ------------------------------------------------------------*/ |
| @@ -165,31 +165,34 @@ static const T_DjiWidgetHandlerListItem s_widgetHandlerList[] = { | @@ -165,31 +165,34 @@ static const T_DjiWidgetHandlerListItem s_widgetHandlerList[] = { | ||
| 165 | {7, DJI_WIDGET_TYPE_LIST, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//纠正选项 | 165 | {7, DJI_WIDGET_TYPE_LIST, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//纠正选项 |
| 166 | {8, DJI_WIDGET_TYPE_LIST, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//气体增强颜色选项 | 166 | {8, DJI_WIDGET_TYPE_LIST, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//气体增强颜色选项 |
| 167 | {9, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//坏点纠正 | 167 | {9, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//坏点纠正 |
| 168 | - {10, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//记录盲点_亮点 | ||
| 169 | - {11, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//记录盲点_黑点 | ||
| 170 | - {12, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//移除上一个盲点 | ||
| 171 | - | ||
| 172 | - {13, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//系统部分 | ||
| 173 | - {14, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 174 | - {15, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 175 | - {16, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | 168 | + {10, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//重计单点纠正 |
| 169 | + {11, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 170 | + {12, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 171 | + {13, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 172 | + | ||
| 173 | + {14, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//系统部分 | ||
| 174 | + {15, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 175 | + {16, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 176 | {17, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | 176 | {17, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// |
| 177 | + {18, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},// | ||
| 178 | + | ||
| 177 | }; | 179 | }; |
| 178 | 180 | ||
| 179 | static const uint32_t s_widgetHandlerListCount = sizeof(s_widgetHandlerList) / sizeof(T_DjiWidgetHandlerListItem); | 181 | static const uint32_t s_widgetHandlerListCount = sizeof(s_widgetHandlerList) / sizeof(T_DjiWidgetHandlerListItem); |
| 180 | -int32_t s_widgetValueList[18] = {VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND, | 182 | +int32_t s_widgetValueList[19] = {VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND, |
| 181 | OFF, | 183 | OFF, |
| 182 | ON, | 184 | ON, |
| 183 | OFF, | 185 | OFF, |
| 186 | + 1, | ||
| 184 | OFF, | 187 | OFF, |
| 185 | - OFF, | ||
| 186 | - OFF, | 188 | + 8, |
| 187 | 1, | 189 | 1, |
| 188 | 0, | 190 | 0, |
| 189 | OFF, | 191 | OFF, |
| 190 | OFF, | 192 | OFF, |
| 191 | OFF, | 193 | OFF, |
| 192 | OFF, | 194 | OFF, |
| 195 | + OFF, | ||
| 193 | OFF, //系统部分 | 196 | OFF, //系统部分 |
| 194 | OFF, | 197 | OFF, |
| 195 | OFF, | 198 | OFF, |
| @@ -857,18 +860,29 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -857,18 +860,29 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 857 | break; | 860 | break; |
| 858 | } | 861 | } |
| 859 | 862 | ||
| 860 | - case 10://气体增强纠正 | 863 | + case 10: |
| 864 | + { | ||
| 865 | + if (value == 1 && num_flag == 3) | ||
| 866 | + { | ||
| 867 | + printf("重新进行单点纠正\n"); | ||
| 868 | + JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_SPC_RESET, value); | ||
| 869 | + } | ||
| 870 | + | ||
| 871 | + break; | ||
| 872 | + } | ||
| 873 | + | ||
| 874 | + | ||
| 875 | + case 11://气体增强纠正 | ||
| 861 | { | 876 | { |
| 862 | if (value == 1) | 877 | if (value == 1) |
| 863 | { | 878 | { |
| 864 | printf("气体增强纠正\n"); | 879 | printf("气体增强纠正\n"); |
| 865 | JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT, value); | 880 | JZSDK_WidgetMgMT_ConrtrolInputTask(JZSDK_WIDGET_GAS_ENHANCEMENT_CORRECT, value); |
| 866 | } | 881 | } |
| 867 | - | ||
| 868 | break; | 882 | break; |
| 869 | } | 883 | } |
| 870 | 884 | ||
| 871 | - case 11: | 885 | + case 12: |
| 872 | { | 886 | { |
| 873 | if (value == 1 && num_flag == 3) | 887 | if (value == 1 && num_flag == 3) |
| 874 | { | 888 | { |
| @@ -881,7 +895,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -881,7 +895,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 881 | break; | 895 | break; |
| 882 | } | 896 | } |
| 883 | 897 | ||
| 884 | - case 12: | 898 | + case 13: |
| 885 | { | 899 | { |
| 886 | if (value == 1 && num_flag == 3) | 900 | if (value == 1 && num_flag == 3) |
| 887 | { | 901 | { |
| @@ -893,7 +907,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -893,7 +907,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 893 | break; | 907 | break; |
| 894 | } | 908 | } |
| 895 | 909 | ||
| 896 | - case 13://版本信息 | 910 | + case 14://版本信息 |
| 897 | { | 911 | { |
| 898 | if(value==1){ | 912 | if(value==1){ |
| 899 | num_flag+=1; | 913 | num_flag+=1; |
| @@ -915,7 +929,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -915,7 +929,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 915 | break; | 929 | break; |
| 916 | } | 930 | } |
| 917 | 931 | ||
| 918 | - case 14: | 932 | + case 15: |
| 919 | { | 933 | { |
| 920 | if (value == 1) | 934 | if (value == 1) |
| 921 | { | 935 | { |
| @@ -926,7 +940,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -926,7 +940,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 926 | break; | 940 | break; |
| 927 | } | 941 | } |
| 928 | 942 | ||
| 929 | - case 15: | 943 | + case 16: |
| 930 | { | 944 | { |
| 931 | if (value == 1) | 945 | if (value == 1) |
| 932 | { | 946 | { |
| @@ -937,7 +951,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -937,7 +951,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 937 | break; | 951 | break; |
| 938 | } | 952 | } |
| 939 | 953 | ||
| 940 | - case 16: | 954 | + case 17: |
| 941 | { | 955 | { |
| 942 | if (value == 1) | 956 | if (value == 1) |
| 943 | { | 957 | { |
| @@ -948,7 +962,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -948,7 +962,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 948 | break; | 962 | break; |
| 949 | } | 963 | } |
| 950 | 964 | ||
| 951 | - case 17: | 965 | + case 18: |
| 952 | { | 966 | { |
| 953 | if (value == 1) | 967 | if (value == 1) |
| 954 | { | 968 | { |
| @@ -959,6 +973,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | @@ -959,6 +973,7 @@ static T_JZsdkReturnCode Irc_Widget(unsigned int index, unsigned int value) | ||
| 959 | break; | 973 | break; |
| 960 | } | 974 | } |
| 961 | 975 | ||
| 976 | + | ||
| 962 | default: | 977 | default: |
| 963 | break; | 978 | break; |
| 964 | } | 979 | } |
-
请 注册 或 登录 后发表评论