作者 潘浩彬

合并分支 'dev_00.00.02.06' 到 'dev'

0.0.2.6 更新云台内容,并且更新了滤波



查看合并请求 !4
正在显示 48 个修改的文件 包含 1533 行增加2017 行删除
  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
@@ -160,6 +178,11 @@ T_JZsdkReturnCode AudioDeal_Mp3DataInput(int In_Bitrate, unsigned char *buffer, @@ -160,6 +178,11 @@ T_JZsdkReturnCode AudioDeal_Mp3DataInput(int In_Bitrate, unsigned char *buffer,
160 return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; 178 return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
161 } 179 }
162 180
  181 + while (Audiodeal_status != JZ_FLAGCODE_ON)
  182 + {
  183 + delayMs(1);
  184 + }
  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;
165 188
@@ -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"
  337 +
  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"
246 373
247 -#define FILTER_PARAM Filter_No10 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
1 #include <stdio.h> 1 #include <stdio.h>
  2 +#include <string.h>
  3 +#include <stdlib.h>
2 #include "JZsdkLib.h" 4 #include "JZsdkLib.h"
3 5
4 #define HARDWARE_DIR "/root/HardwareIdeNum" 6 #define HARDWARE_DIR "/root/HardwareIdeNum"
  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  
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 }
  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 }
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 }
  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
@@ -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,7 +1435,8 @@ T_JZsdkReturnCode Kt_Irc_14bitGrayData_to_RawData(U8_t *data, int data_len, U8_t @@ -1432,7 +1435,8 @@ 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); 1438 +
  1439 + //JZsdk_CutBadPixel_U8(GrayImage, dealInfo->Width, dealInfo->Height, dealInfo->GrayPixel, dealInfo->GrayPixelNum,dealInfo->GrayPixelExtern, 1);
1436 1440
1437 //灰度图转rgb888 1441 //灰度图转rgb888
1438 Kt_Irc_GrayTo_RGB(GrayImage, &RgbImage, &RgbImageLen,dealInfo); 1442 Kt_Irc_GrayTo_RGB(GrayImage, &RgbImage, &RgbImageLen,dealInfo);
@@ -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); 58 + //1、启动视频流缓冲区模块
  59 + VideoMgmt_init_buffer(&VideoMgmt_FirstVideo_index);
56 60
57 - // //3、相机初始化  
58 - // JZsdk_Kt_Irc_Camera_Init(); 61 + //2、相机初始化
  62 + JZsdk_H150ST_CameraInit(FIRST_WIDTH, FIRST_HEIGHT, FIRST_FRAME_NUM);
59 63
60 - // //4、启用推流模块  
61 - // VideoMgmt_VideoStreamFlow_Init(25, &VideoMgmt_FirstVideo_index, VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST); 64 + //3、启用推流模块
  65 + VideoMgmt_VideoStreamFlow_Init(FIRST_FRAME_NUM, &VideoMgmt_FirstVideo_index, VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST);
62 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},//移除上一个盲点 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},//
171 172
172 - {13, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//系统部分  
173 - {14, 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},// 174 {15, DJI_WIDGET_TYPE_BUTTON, DjiTestWidget_SetWidgetValue, DjiTestWidget_GetWidgetValue, NULL},//
175 {16, 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 }