合并分支 'dev' 到 'master'
Dev 查看合并请求 !5
正在显示
48 个修改的文件
包含
1533 行增加
和
2017 行删除
.vscode/settings.json
0 → 100644
1 | +{ | ||
2 | + "files.associations": { | ||
3 | + "typeinfo": "c", | ||
4 | + "streamproc.h": "c", | ||
5 | + "jzsdk_code.h": "c", | ||
6 | + "camera.h": "c", | ||
7 | + "ui_control.h": "c", | ||
8 | + "baseconfig.h": "c", | ||
9 | + "jzsdklib.h": "c", | ||
10 | + "uartconnection.h": "c", | ||
11 | + "taskmanagement.h": "c", | ||
12 | + "gimbal_param.h": "c", | ||
13 | + "serialproc.h": "c", | ||
14 | + "version_choose.h": "c", | ||
15 | + "megaphone.h": "c", | ||
16 | + "uart_config.h": "c", | ||
17 | + "jzsdk_uart_input.h": "c", | ||
18 | + "jzsdk_inscode.h": "c", | ||
19 | + "psdk_ui_io.h": "c", | ||
20 | + "lighting_inandout.h": "c" | ||
21 | + }, | ||
22 | + "Codegeex.GenerationPreference": "automatic" | ||
23 | +} |
@@ -22,6 +22,7 @@ extern "C" { | @@ -22,6 +22,7 @@ extern "C" { | ||
22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
23 | 23 | ||
24 | #include "JZsdk_CommonFuntion/JZsdkCommonFuntion.h" | 24 | #include "JZsdk_CommonFuntion/JZsdkCommonFuntion.h" |
25 | +#include "JZsdk_TaskManagement/TaskManagement.h" | ||
25 | /* Exported types ------------------------------------------------------------*/ | 26 | /* Exported types ------------------------------------------------------------*/ |
26 | 27 | ||
27 | /* Exported functions --------------------------------------------------------*/ | 28 | /* Exported functions --------------------------------------------------------*/ |
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | #include "version_choose.h" | 8 | #include "version_choose.h" |
9 | #include "ircut.h" | 9 | #include "ircut.h" |
10 | #include "Megaphone/Megaphone.h" | 10 | #include "Megaphone/Megaphone.h" |
11 | -#include "Gimbal_InAndOut.h" | 11 | +#include "Gimbal/Gimbal.h" |
12 | 12 | ||
13 | #include "JZsdk_uart/JZsdk_Uart_Input.h" | 13 | #include "JZsdk_uart/JZsdk_Uart_Input.h" |
14 | #include "BaseConfig.h" | 14 | #include "BaseConfig.h" |
@@ -76,7 +76,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | @@ -76,7 +76,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | ||
76 | //先关闭播放 | 76 | //先关闭播放 |
77 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); | 77 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); |
78 | 78 | ||
79 | - | ||
80 | //修改滤波 | 79 | //修改滤波 |
81 | AudioDeal_FilterReset(0x01); | 80 | AudioDeal_FilterReset(0x01); |
82 | } | 81 | } |
@@ -85,7 +84,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | @@ -85,7 +84,6 @@ T_JZsdkReturnCode Main_M30_all_filter_mode(int *mode) | ||
85 | //先关闭播放 | 84 | //先关闭播放 |
86 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); | 85 | Megaphone_StopPlay(JZ_FLAGCODE_OFF); |
87 | 86 | ||
88 | - | ||
89 | //修改滤波 | 87 | //修改滤波 |
90 | AudioDeal_FilterReset(0x00); | 88 | AudioDeal_FilterReset(0x00); |
91 | } | 89 | } |
@@ -292,10 +290,10 @@ T_JZsdkReturnCode Main_APP_Psdk() | @@ -292,10 +290,10 @@ T_JZsdkReturnCode Main_APP_Psdk() | ||
292 | 290 | ||
293 | //灯类初始化 | 291 | //灯类初始化 |
294 | Lighting_Init(); | 292 | Lighting_Init(); |
295 | - | 293 | +#if SIDE_LASER_STATUS_ON |
296 | //侧边激光初始化 | 294 | //侧边激光初始化 |
297 | SideLaser_Init(); | 295 | SideLaser_Init(); |
298 | - | 296 | +#endif |
299 | delayMs(1000); | 297 | delayMs(1000); |
300 | 298 | ||
301 | //消息订阅初始化 | 299 | //消息订阅初始化 |
@@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
19 | #define MAJOR_VERSION 0x00 | 19 | #define MAJOR_VERSION 0x00 |
20 | #define MINOR_VERSION 0x00 | 20 | #define MINOR_VERSION 0x00 |
21 | #define MODIFY_VERSION 0x02 | 21 | #define MODIFY_VERSION 0x02 |
22 | -#define DEBUG_VERSION 0x04 | 22 | +#define DEBUG_VERSION 0x06 |
23 | 23 | ||
24 | //禁止修改行 滤波方式 | 24 | //禁止修改行 滤波方式 |
25 | #define FILTERING_TYPE HIGH_PASS_FILTERING | 25 | #define FILTERING_TYPE HIGH_PASS_FILTERING |
@@ -55,6 +55,7 @@ | @@ -55,6 +55,7 @@ | ||
55 | //是否开启红外相机功能 | 55 | //是否开启红外相机功能 |
56 | #ifdef MACRO_IRC_MODULE | 56 | #ifdef MACRO_IRC_MODULE |
57 | #define IRC_CONFIG_STATUS VERSION_SWITCH_ON | 57 | #define IRC_CONFIG_STATUS VERSION_SWITCH_ON |
58 | + #define IRC_CONFIG_STATUS_ON | ||
58 | #else | 59 | #else |
59 | #define IRC_CONFIG_STATUS VERSION_SWITCH_OFF | 60 | #define IRC_CONFIG_STATUS VERSION_SWITCH_OFF |
60 | #endif | 61 | #endif |
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" | 11 | #include "JZsdk_uart/JZsdk_Uart_UartDeal.h" |
12 | #include "JZsdk_uart/Uart_Config.h" | 12 | #include "JZsdk_uart/Uart_Config.h" |
13 | #include "JZsdk_uart/JZsdk_Uart_Send/JZsdk_Uart_Send.h" | 13 | #include "JZsdk_uart/JZsdk_Uart_Send/JZsdk_Uart_Send.h" |
14 | -#include "Gimbal_InAndOut.h" | 14 | +#include "Gimbal/Gimbal.h" |
15 | 15 | ||
16 | // 记录串口是否有被使用,方便ui_contrl进行信息反馈 | 16 | // 记录串口是否有被使用,方便ui_contrl进行信息反馈 |
17 | struct UartDev_UseFlag | 17 | struct UartDev_UseFlag |
@@ -25,6 +25,7 @@ | @@ -25,6 +25,7 @@ | ||
25 | //音频库索引值,用于管理所有的音频库信息 | 25 | //音频库索引值,用于管理所有的音频库信息 |
26 | struct AudioDealInfo *AudioDeakInfo_index = NULL; | 26 | struct AudioDealInfo *AudioDeakInfo_index = NULL; |
27 | T_JZsdkReturnCode g_AudioDealPauseFlag = JZ_FLAGCODE_OFF; | 27 | T_JZsdkReturnCode g_AudioDealPauseFlag = JZ_FLAGCODE_OFF; |
28 | +static int Audiodeal_status = JZ_FLAGCODE_OFF; | ||
28 | 29 | ||
29 | T_JZsdkReturnCode AudioDeal_Init() | 30 | T_JZsdkReturnCode AudioDeal_Init() |
30 | { | 31 | { |
@@ -68,6 +69,8 @@ T_JZsdkReturnCode AudioDeal_Init() | @@ -68,6 +69,8 @@ T_JZsdkReturnCode AudioDeal_Init() | ||
68 | AudioDeakInfo_index->FilterInfo = NULL; | 69 | AudioDeakInfo_index->FilterInfo = NULL; |
69 | FF_Filter_Init(AudioDeakInfo_index, 0x00); | 70 | FF_Filter_Init(AudioDeakInfo_index, 0x00); |
70 | 71 | ||
72 | + Audiodeal_status = JZ_FLAGCODE_ON; | ||
73 | + | ||
71 | JZSDK_LOG_INFO("MODULE_AUDIODEL_INIT_COMPLETE"); | 74 | JZSDK_LOG_INFO("MODULE_AUDIODEL_INIT_COMPLETE"); |
72 | } | 75 | } |
73 | 76 | ||
@@ -85,7 +88,11 @@ T_JZsdkReturnCode AudioDeal_FilterReset(int mode) | @@ -85,7 +88,11 @@ T_JZsdkReturnCode AudioDeal_FilterReset(int mode) | ||
85 | * *********************************************/ | 88 | * *********************************************/ |
86 | T_JZsdkReturnCode AudioDeal_ResampleRest(unsigned int in_sampleRate, AVChannelLayout in_ch_layout, enum AVSampleFormat in_format) | 89 | T_JZsdkReturnCode AudioDeal_ResampleRest(unsigned int in_sampleRate, AVChannelLayout in_ch_layout, enum AVSampleFormat in_format) |
87 | { | 90 | { |
91 | + Audiodeal_status = JZ_FLAGCODE_OFF; | ||
92 | + | ||
88 | FF_Resample_Reset(AudioDeakInfo_index ,in_sampleRate, in_ch_layout, in_format); | 93 | FF_Resample_Reset(AudioDeakInfo_index ,in_sampleRate, in_ch_layout, in_format); |
94 | + | ||
95 | + Audiodeal_status = JZ_FLAGCODE_ON; | ||
89 | } | 96 | } |
90 | 97 | ||
91 | /*************************************************************************************************************************************************** | 98 | /*************************************************************************************************************************************************** |
@@ -108,6 +115,12 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer, | @@ -108,6 +115,12 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput(int In_Bitrate, unsigned char *buffer, | ||
108 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | 115 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
109 | } | 116 | } |
110 | 117 | ||
118 | + while (Audiodeal_status != JZ_FLAGCODE_ON) | ||
119 | + { | ||
120 | + delayMs(1); | ||
121 | + } | ||
122 | + | ||
123 | + | ||
111 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 | 124 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 |
112 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; | 125 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; |
113 | 126 | ||
@@ -136,6 +149,11 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput_WithoutReply(int In_Bitrate, unsigned c | @@ -136,6 +149,11 @@ T_JZsdkReturnCode AudioDeal_PcmDataInput_WithoutReply(int In_Bitrate, unsigned c | ||
136 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | 149 | return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; |
137 | } | 150 | } |
138 | 151 | ||
152 | + while (Audiodeal_status != JZ_FLAGCODE_ON) | ||
153 | + { | ||
154 | + delayMs(1); | ||
155 | + } | ||
156 | + | ||
139 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 | 157 | //1、打开音频库的处理标志位,该标志可以重复打开,只有强制关闭音频时,需要关闭该标志 |
140 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; | 158 | AudioDeakInfo_index->AudioDeal_ResampleAndFilter_Execute_Flag = JZ_FLAGCODE_ON; |
141 | 159 | ||
@@ -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 |
Module/Gimbal/Gimbal.c
0 → 100644
1 | +/* | ||
2 | + * @Author: ookk303 | ||
3 | + * @Date: 2024-08-23 17:46:53 | ||
4 | + * @LastEditors: Do not edit | ||
5 | + * @LastEditTime: 2024-08-28 15:26:17 | ||
6 | + * @Description: | ||
7 | + * @FilePath: \JZSDK_Linux\Module\Gimbal\Gimbal.c | ||
8 | + */ | ||
9 | + | ||
10 | +#include <stdio.h> | ||
11 | +#include <pthread.h> | ||
12 | +#include <math.h> | ||
13 | +#include "JZsdkLib.h" | ||
14 | +#include "Gimbal/Gimbal_Param.h" | ||
15 | +#include "Gimbal/Gimbal.h" | ||
16 | +#include "Gimbal/Gimbal_DataDeal/Gimbal_DataDeal.h" | ||
17 | +#include "Gimbal/Gimbal_MotorFineTuning/MotorFineTuning.h" | ||
18 | +#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
19 | + | ||
20 | +#include "BaseConfig.h" | ||
21 | + | ||
22 | + | ||
23 | +//数值角度记录 | ||
24 | +static int Gimbal_PitchAngle = 0; //俯仰角度 //控制云台上相机相对于水平面的上下移动。 | ||
25 | +static int Gimbal_YawAngle = 0; //偏航角度 //个角度控制云台上相机相对于水平面的上下移动。 | ||
26 | +static int Gimbal_RollAngle = 0; //滚转角度 //控制云台上相机围绕其前后轴(即与相机镜头方向平行的轴)的旋转。 | ||
27 | + | ||
28 | +//微调角度 | ||
29 | +static int g_MotorFineTuningPitch = 0; //pitch微调值 | ||
30 | +static int g_MotorFineTuningYaw = 0; //yaw微调值 | ||
31 | +static int g_MotorFineTuningRoll = 0; //roll微调值 | ||
32 | + | ||
33 | +//飞机自身角度 | ||
34 | +static int Gimbal_UavSelfPitch = 0; | ||
35 | + | ||
36 | +//实际角度 (数值角度+飞机自身角度+微调角度) | ||
37 | +static int Gimbal_RealPitchAngle = 0; | ||
38 | + | ||
39 | +static int g_Gimbal_Linkage; //云台联动标志位 | ||
40 | + | ||
41 | +static int g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_OFF; //云台状态,用于判断云台是否已经初始化完毕 | ||
42 | + | ||
43 | +static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, int UAV_pitch); | ||
44 | + | ||
45 | +/************************** | ||
46 | + * | ||
47 | + * | ||
48 | + * 云台角度发送线程 | ||
49 | + * | ||
50 | + * | ||
51 | + * ***************************/ | ||
52 | +static void *Gimbal_SendAngleTask(void *arg) | ||
53 | +{ | ||
54 | + int Old_angle = 0; //上一次变化的角度 | ||
55 | + int Old_UAV_self_angle; //上一次飞机的角度 | ||
56 | + int Old_PitchFineTuning; //上一次微调的角度 | ||
57 | + | ||
58 | + JZSDK_LOG_INFO("云台角度发送初始化完成"); | ||
59 | + | ||
60 | + int test_value =0; | ||
61 | + | ||
62 | + while (1) | ||
63 | + { | ||
64 | + if (Gimbal_PitchAngle != Old_angle //云台角度发生了变化 | ||
65 | + || Gimbal_UavSelfPitch != Old_UAV_self_angle //飞机自身角度发生了变化 | ||
66 | + || g_MotorFineTuningPitch != Old_PitchFineTuning //微调角度发生了变化 | ||
67 | + ) | ||
68 | + { | ||
69 | + Old_angle = Gimbal_PitchAngle; | ||
70 | + Old_UAV_self_angle = Gimbal_UavSelfPitch; | ||
71 | + Old_PitchFineTuning = g_MotorFineTuningPitch; | ||
72 | + Gimbal_Set_RealPitchAngle(Old_angle, Old_PitchFineTuning, Old_UAV_self_angle); | ||
73 | + } | ||
74 | + | ||
75 | + //1s检测200次舵机角度 | ||
76 | + delayMs(1000/200); | ||
77 | + } | ||
78 | +} | ||
79 | + | ||
80 | +//发送线程初始化 | ||
81 | +static T_JZsdkReturnCode Gimbal_SendAngleTask_Init() | ||
82 | +{ | ||
83 | + pthread_t WriteDataTask; | ||
84 | + pthread_attr_t task_attribute; //线程属性 | ||
85 | + pthread_attr_init(&task_attribute); //初始化线程属性 | ||
86 | + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | ||
87 | + int opus_Protection = pthread_create(&WriteDataTask,&task_attribute,Gimbal_SendAngleTask,NULL); //线程 | ||
88 | + if(opus_Protection != 0) | ||
89 | + { | ||
90 | + JZSDK_LOG_ERROR("角度发送线程初始化失败!"); | ||
91 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
92 | + } | ||
93 | + | ||
94 | + JZSDK_LOG_INFO("MODULE_GIMBAL_INIT_COMPLETE"); | ||
95 | +} | ||
96 | + | ||
97 | +//初始化舵机部分 | ||
98 | +static T_JZsdkReturnCode Gimal_MotorInit() | ||
99 | +{ | ||
100 | + //角度发送线程初始化 | ||
101 | + Gimbal_SendAngleTask_Init(); | ||
102 | + | ||
103 | + //数据处理初始化 | ||
104 | + Gimbal_DataDeal_init(); | ||
105 | + | ||
106 | +} | ||
107 | + | ||
108 | +//初始化云台模块 | ||
109 | +T_JZsdkReturnCode Gimbal_Init() | ||
110 | +{ | ||
111 | + //舵机初始化 | ||
112 | + Gimal_MotorInit(); | ||
113 | + | ||
114 | + //云台微调初始化 | ||
115 | + MotorFineTuning_Init(&g_MotorFineTuningPitch, &g_MotorFineTuningYaw, &g_MotorFineTuningRoll); | ||
116 | + | ||
117 | + //云台flag打开 | ||
118 | + g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_ON; | ||
119 | + | ||
120 | + JZSDK_LOG_INFO("JZsdk_Gimbal_Module_init"); | ||
121 | +} | ||
122 | + | ||
123 | +//设置云台俯仰角度 | ||
124 | +T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle) | ||
125 | +{ | ||
126 | + //禁止打印 | ||
127 | + //printf("设置云台俯仰角度\n"); | ||
128 | + | ||
129 | + //云台未初始化 | ||
130 | + if (g_JZsdk_GimbalStatusFlag != JZ_FLAGCODE_ON) | ||
131 | + { | ||
132 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
133 | + } | ||
134 | + | ||
135 | + if (angle < MIN_PITCH || angle > MAX_PITCH || (MIN_PITCH == MAX_PITCH)) | ||
136 | + { | ||
137 | + printf("云台俯仰输入值范围出错:%d\n", angle); | ||
138 | + return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
139 | + } | ||
140 | + | ||
141 | + Gimbal_PitchAngle = angle; | ||
142 | + | ||
143 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
144 | +} | ||
145 | + | ||
146 | +//设置云台航向角度 | ||
147 | +T_JZsdkReturnCode Gimbal_Set_YawAngle(int angle) | ||
148 | +{ | ||
149 | + printf("没有航向角度\n"); | ||
150 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
151 | +} | ||
152 | + | ||
153 | +//设置云台转向角度 | ||
154 | +T_JZsdkReturnCode Gimbal_Set_RollAngle(int angle) | ||
155 | +{ | ||
156 | + printf("没有转向角度\n"); | ||
157 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
158 | +} | ||
159 | + | ||
160 | +/******************* | ||
161 | + * | ||
162 | + * 设置Pitch_云台范围的最大最小值 | ||
163 | + * flag 0 pitch 1 yaw 2 roll | ||
164 | + * | ||
165 | + * *************************/ | ||
166 | +T_JZsdkReturnCode Gimbal_SetGimbalRange(int flag, int value) | ||
167 | +{ | ||
168 | + JZSDK_LOG_INFO("设置云台范围最大最小值 flag:%d 0x%x", flag, value); | ||
169 | + | ||
170 | + switch (flag) | ||
171 | + { | ||
172 | + case 0: | ||
173 | + return Gimbal_DataDeal_SetPitchRange(value); | ||
174 | + break; | ||
175 | + | ||
176 | + default: | ||
177 | + break; | ||
178 | + } | ||
179 | + | ||
180 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
181 | +} | ||
182 | + | ||
183 | +//查询云台微调值 | ||
184 | +T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTuningPitch, int *FineTuningYaw, int *FineTuningRoll) | ||
185 | +{ | ||
186 | + JZSDK_LOG_DEBUG("查询云台微调值"); | ||
187 | + | ||
188 | +//组合机需要去获取另外一个设备的值 | ||
189 | +#if DEVICE_VERSION == JZ_H1T | ||
190 | + //1、刷新微调值 | ||
191 | + JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(UART_DEV_1, 0); | ||
192 | + | ||
193 | + delayMs(10); | ||
194 | +#endif | ||
195 | + | ||
196 | + if (FineTuningPitch != NULL) | ||
197 | + { | ||
198 | + *FineTuningPitch = g_MotorFineTuningPitch; | ||
199 | + } | ||
200 | + | ||
201 | + if (FineTuningYaw != NULL) | ||
202 | + { | ||
203 | + *FineTuningYaw = g_MotorFineTuningYaw; | ||
204 | + } | ||
205 | + | ||
206 | + if (FineTuningRoll != NULL) | ||
207 | + { | ||
208 | + *FineTuningRoll = g_MotorFineTuningRoll; | ||
209 | + } | ||
210 | + | ||
211 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
212 | +} | ||
213 | + | ||
214 | +//收到云台微调值 | ||
215 | +T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch, int yaw, int roll) | ||
216 | +{ | ||
217 | + printf("收到云台pitch云台微调值\n"); | ||
218 | + | ||
219 | +//组合机需要记录另外一个设备的值 | ||
220 | +#if DEVICE_VERSION == JZ_H1T | ||
221 | + g_MotorFineTuningPitch = pitch; | ||
222 | +#else | ||
223 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
224 | +#endif | ||
225 | + | ||
226 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
227 | +} | ||
228 | + | ||
229 | + | ||
230 | +//设置pitch云台微调值 | ||
231 | +T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch) | ||
232 | +{ | ||
233 | + JZSDK_LOG_INFO("设置云台pitch云台微调值\n"); | ||
234 | + T_JZsdkReturnCode ret; | ||
235 | + | ||
236 | + if (pitch == 0) | ||
237 | + { | ||
238 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
239 | + } | ||
240 | + | ||
241 | + //设置本地微调值 | ||
242 | + g_MotorFineTuningPitch = g_MotorFineTuningPitch + pitch; | ||
243 | + | ||
244 | + //组合机是发到另外一个设备 | ||
245 | +#if DEVICE_VERSION == JZ_H1T | ||
246 | + JZsdk_Uart_Send_SetGimbalFineTuningPitch(UART_DEV_1, g_MotorFineTuningPitch); | ||
247 | +#else | ||
248 | + //存储到文件 | ||
249 | + MotorFineTuning_WritePitch(g_MotorFineTuningPitch); | ||
250 | +#endif | ||
251 | + | ||
252 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
253 | +} | ||
254 | + | ||
255 | +//设置yaw云台微调值 | ||
256 | +T_JZsdkReturnCode Gimbal_Set_YawFineTuning(int yaw) | ||
257 | +{ | ||
258 | + JZSDK_LOG_INFO("设置云台yaw云台微调值\n"); | ||
259 | + T_JZsdkReturnCode ret; | ||
260 | + | ||
261 | + if (yaw == 0) | ||
262 | + { | ||
263 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
264 | + } | ||
265 | + | ||
266 | + g_MotorFineTuningYaw = g_MotorFineTuningYaw + yaw; | ||
267 | + | ||
268 | + //微调后重设角度 | ||
269 | +} | ||
270 | + | ||
271 | +//设置roll云台微调值 | ||
272 | +T_JZsdkReturnCode Gimbal_Set_RollFineTuning(int pitch, int yaw, int roll) | ||
273 | +{ | ||
274 | + JZSDK_LOG_INFO("设置云台pitch云台微调值\n"); | ||
275 | + T_JZsdkReturnCode ret; | ||
276 | + | ||
277 | + | ||
278 | + if (roll == 0) | ||
279 | + { | ||
280 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
281 | + } | ||
282 | + | ||
283 | + g_MotorFineTuningRoll = g_MotorFineTuningRoll + roll; | ||
284 | + | ||
285 | + //微调后重设角度 | ||
286 | +} | ||
287 | + | ||
288 | + | ||
289 | +//设置云台联动 | ||
290 | +T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value) | ||
291 | +{ | ||
292 | + JZSDK_LOG_INFO("设置云台联动\n"); | ||
293 | + | ||
294 | + g_Gimbal_Linkage = value; | ||
295 | + | ||
296 | +#if DEVICE_VERSION == JZ_H1T | ||
297 | + JZsdk_Uart_Send_Set_GimbalLinkageControl(UART_DEV_1, 0, value); | ||
298 | +#else | ||
299 | + //暂时没做接口 | ||
300 | +#endif | ||
301 | + | ||
302 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
303 | + | ||
304 | +} | ||
305 | + | ||
306 | +//查询云台联动 | ||
307 | +T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value) | ||
308 | +{ | ||
309 | + JZSDK_LOG_INFO("查询云台联动值\n"); | ||
310 | + | ||
311 | +#if DEVICE_VERSION == JZ_H1T | ||
312 | + //1、刷新云台联动值 | ||
313 | + JZsdk_Uart_Send_CheckStatus_GimbalLinkage(UART_DEV_1, 0); | ||
314 | + | ||
315 | + delayMs(10); | ||
316 | + | ||
317 | + //2、回复云台联动值 | ||
318 | + *value = g_Gimbal_Linkage; | ||
319 | +#else | ||
320 | + //暂时没做接口 | ||
321 | +#endif | ||
322 | + | ||
323 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
324 | +} | ||
325 | + | ||
326 | +//收到云台联动值 | ||
327 | +T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage) | ||
328 | +{ | ||
329 | + JZSDK_LOG_INFO("收到云台联动值\n"); | ||
330 | + | ||
331 | + g_Gimbal_Linkage = GimbalLinkage; | ||
332 | + | ||
333 | +#if DEVICE_VERSION == JZ_H1T | ||
334 | + //无操作 | ||
335 | + //毕竟是t60s返回来的值 | ||
336 | +#else | ||
337 | + //暂时没做接口 | ||
338 | +#endif | ||
339 | + | ||
340 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
341 | +} | ||
342 | + | ||
343 | +/********* | ||
344 | + * | ||
345 | + * 查询云台角度 | ||
346 | + * | ||
347 | +**********/ | ||
348 | +T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle) | ||
349 | +{ | ||
350 | +//组合机刷新查询角度 | ||
351 | +#if DEVICE_VERSION == JZ_H1T | ||
352 | + JZsdk_Uart_Send_CheckStatus_GimbalAngle(UART_DEV_1, 0); | ||
353 | + | ||
354 | + //给点延时问题不大 | ||
355 | + delayMs(5); | ||
356 | +#else | ||
357 | + //直接获取即可 | ||
358 | +#endif | ||
359 | + | ||
360 | + //2、获取一次本地云台角度 | ||
361 | + if (PitchAngle != NULL) | ||
362 | + { | ||
363 | + *PitchAngle = Gimbal_PitchAngle; | ||
364 | + } | ||
365 | + | ||
366 | + if (YawAngle != NULL) | ||
367 | + { | ||
368 | + *YawAngle = Gimbal_YawAngle; | ||
369 | + } | ||
370 | + | ||
371 | + if (RollAngle != NULL) | ||
372 | + { | ||
373 | + *RollAngle = Gimbal_RollAngle; | ||
374 | + } | ||
375 | + | ||
376 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
377 | +} | ||
378 | + | ||
379 | + | ||
380 | +//获得云台值 | ||
381 | +T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch) | ||
382 | +{ | ||
383 | + //目前 U3和 H1T会接受到云台返回值 | ||
384 | + if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
385 | + { | ||
386 | + //不做处理,避免出现什么问题 | ||
387 | + } | ||
388 | + else if (DEVICE_VERSION == JZ_H1T) | ||
389 | + { | ||
390 | + //Gimbal_PitchAngle = Pitch; | ||
391 | + //这里暂时不处理,避免多次把5a帧返还给串口1设备 | ||
392 | + //但是会导致4g接收不到最新的角度 | ||
393 | + } | ||
394 | + else | ||
395 | + { | ||
396 | + //不处理,避免出现什么问题 | ||
397 | + } | ||
398 | + | ||
399 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
400 | +} | ||
401 | + | ||
402 | +/************************************************************** | ||
403 | + * | ||
404 | + * | ||
405 | + * 飞机特殊控制云台方法 | ||
406 | + * | ||
407 | + * | ||
408 | +***************************************************************/ | ||
409 | +//1、飞机自身角度控制云台 | ||
410 | +T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch) | ||
411 | +{ | ||
412 | + if (Gimbal_UavSelfPitch == Pitch) | ||
413 | + { | ||
414 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
415 | + } | ||
416 | + | ||
417 | + Gimbal_UavSelfPitch = Pitch; | ||
418 | + | ||
419 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
420 | + | ||
421 | +} | ||
422 | + | ||
423 | +//2、滑动条 换算 云台角度 | ||
424 | +int Gimbal_PitchScaleMode(int value) | ||
425 | +{ | ||
426 | + int step = (abs(MAX_PITCH) + abs(MIN_PITCH)) / 100; | ||
427 | + | ||
428 | + int angle = 0; | ||
429 | + | ||
430 | + angle = value * step + MIN_PITCH; | ||
431 | + | ||
432 | + return angle; | ||
433 | +} | ||
434 | + | ||
435 | +//3、拨轮控制云台 | ||
436 | +T_JZsdkReturnCode Gimbal_PitchRotationMode(int value) | ||
437 | +{ | ||
438 | + int angle; | ||
439 | + | ||
440 | + //JZSDK_LOG_DEBUG("拨轮控制"); | ||
441 | + if (MAX_PITCH == MIN_PITCH) | ||
442 | + { | ||
443 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
444 | + } | ||
445 | + | ||
446 | + | ||
447 | + angle = Gimbal_PitchAngle + value; | ||
448 | + if (angle > MAX_PITCH) | ||
449 | + { | ||
450 | + angle = MAX_PITCH; | ||
451 | + } | ||
452 | + else if (angle < MIN_PITCH) | ||
453 | + { | ||
454 | + angle = MIN_PITCH; | ||
455 | + } | ||
456 | + | ||
457 | + if (angle == Gimbal_PitchAngle) | ||
458 | + { | ||
459 | + //printf("拨轮控制无效\n"); | ||
460 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
461 | + } | ||
462 | + | ||
463 | + Gimbal_Set_PitchAngle(angle); | ||
464 | + | ||
465 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
466 | +} | ||
467 | + | ||
468 | +//输入角度,回复滑动条值 | ||
469 | +int Gimbal_ReplyPitchToUAVScale(int angle) | ||
470 | +{ | ||
471 | + int value; | ||
472 | + | ||
473 | + int step = (abs(MAX_PITCH) + abs(MIN_PITCH)) / 100; | ||
474 | + value = (angle - MIN_PITCH)/step; | ||
475 | + | ||
476 | + return value; | ||
477 | +} | ||
478 | + | ||
479 | + | ||
480 | +//设置云台俯仰角度 | ||
481 | +static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int pitch, int FineTuningP, int UAV_pitch) | ||
482 | +{ | ||
483 | + int temp_angle = 0; | ||
484 | + | ||
485 | +//组合机不用堆叠角度 | ||
486 | +#if DEVICE_VERSION == JZ_H1T | ||
487 | + temp_angle = pitch; | ||
488 | + Gimbal_RealPitchAngle = temp_angle; | ||
489 | +#else | ||
490 | + //叠加飞机角度和微调角度 | ||
491 | + temp_angle = pitch - UAV_pitch + FineTuningP; | ||
492 | + | ||
493 | + if (temp_angle < MIN_PITCH) | ||
494 | + { | ||
495 | + temp_angle = MIN_PITCH; | ||
496 | + } | ||
497 | + | ||
498 | + if (temp_angle > MAX_PITCH) | ||
499 | + { | ||
500 | + temp_angle = MAX_PITCH; | ||
501 | + } | ||
502 | + | ||
503 | + Gimbal_RealPitchAngle = temp_angle; | ||
504 | +#endif | ||
505 | + | ||
506 | + //printf("设置真实俯仰角度\n"); //禁止打印 | ||
507 | + | ||
508 | + Gimbal_DataDeal_SetRealAngle(temp_angle); | ||
509 | + | ||
510 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
511 | +} | ||
512 | + | ||
513 | + | ||
514 | + | ||
515 | +T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag() | ||
516 | +{ | ||
517 | + return g_JZsdk_GimbalStatusFlag; | ||
518 | +} | ||
519 | + | ||
520 | + | ||
521 | +int Gimbal_Get_PitchAngle() | ||
522 | +{ | ||
523 | + return Gimbal_PitchAngle; | ||
524 | +} | ||
525 | + | ||
526 | +int Gimbal_Get_PitchFineTuning() | ||
527 | +{ | ||
528 | + return g_MotorFineTuningPitch; | ||
529 | +} | ||
530 | + | ||
531 | +int Gimbal_Get_PitchRealPitchAngle() | ||
532 | +{ | ||
533 | + return Gimbal_RealPitchAngle; | ||
534 | +} |
1 | /** | 1 | /** |
2 | ******************************************************************** | 2 | ******************************************************************** |
3 | - * @file GIMBAL_INPUTANDOUTPUT.h | ||
4 | - * GIMBAL_INPUTANDOUTPUT的头文件 | 3 | + * @file GIMBAL.h |
4 | + * GIMBAL.h 的头文件 | ||
5 | * | 5 | * |
6 | ********************************************************************* | 6 | ********************************************************************* |
7 | */ | 7 | */ |
8 | 8 | ||
9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
10 | -#ifndef GIMBAL_INPUTANDOUTPUT_H | ||
11 | -#define GIMBAL_INPUTANDOUTPUT_H | 10 | +#ifndef GIMBAL_H |
11 | +#define GIMBAL_H | ||
12 | 12 | ||
13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
@@ -23,26 +23,35 @@ extern "C" { | @@ -23,26 +23,35 @@ extern "C" { | ||
23 | /* Exported types ------------------------------------------------------------*/ | 23 | /* Exported types ------------------------------------------------------------*/ |
24 | 24 | ||
25 | /* Exported functions --------------------------------------------------------*/ | 25 | /* Exported functions --------------------------------------------------------*/ |
26 | -int Gimbal_Init(); | 26 | +T_JZsdkReturnCode Gimbal_Init(); |
27 | +T_JZsdkReturnCode Get_JZsdk_GimbalStatusFlag(); | ||
28 | + | ||
29 | + | ||
27 | T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle); | 30 | T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle); |
28 | -int Gimbal_Get_PitchAngle(); | ||
29 | -T_JZsdkReturnCode Gimbal_SetGimbalRange(int value); | ||
30 | -T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch); | ||
31 | -T_JZsdkReturnCode Gimbal_Get_GimbalFineTuning(int *Pitch); | ||
32 | -T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int DeviceName ,int pitch); | ||
33 | -T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTunigPitch, int *FineTunigYaw); | ||
34 | -T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch); | ||
35 | -int Gimbal_Get_PitchFineTuning(); | 31 | +T_JZsdkReturnCode Gimbal_Set_YawAngle(int angle); |
32 | +T_JZsdkReturnCode Gimbal_Set_RollAngle(int angle); | ||
33 | + | ||
34 | +T_JZsdkReturnCode Gimbal_SetGimbalRange(int flag, int value); | ||
35 | +T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTuningPitch, int *FineTuningYaw, int *FineTuningRoll); | ||
36 | +T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch, int yaw, int roll); | ||
37 | +T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int pitch); | ||
38 | +T_JZsdkReturnCode Gimbal_Set_YawFineTuning(int yaw); | ||
39 | +T_JZsdkReturnCode Gimbal_Set_RollFineTuning(int pitch, int yaw, int roll); | ||
36 | T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value); | 40 | T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value); |
37 | T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value); | 41 | T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value); |
38 | T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage); | 42 | T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage); |
39 | -T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle); | 43 | +T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *RollAngle); |
44 | +T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch); | ||
45 | + | ||
40 | 46 | ||
41 | T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch); | 47 | T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch); |
42 | int Gimbal_PitchScaleMode(int value); | 48 | int Gimbal_PitchScaleMode(int value); |
43 | T_JZsdkReturnCode Gimbal_PitchRotationMode(int value); | 49 | T_JZsdkReturnCode Gimbal_PitchRotationMode(int value); |
44 | int Gimbal_ReplyPitchToUAVScale(int angle); | 50 | int Gimbal_ReplyPitchToUAVScale(int angle); |
45 | -int Get_JZsdk_GimbalStatusFlag(); | 51 | + |
52 | + | ||
53 | +int Gimbal_Get_PitchAngle(); | ||
54 | +int Gimbal_Get_PitchFineTuning(); | ||
46 | int Gimbal_Get_PitchRealPitchAngle(); | 55 | int Gimbal_Get_PitchRealPitchAngle(); |
47 | 56 | ||
48 | #ifdef __cplusplus | 57 | #ifdef __cplusplus |
1 | +#include <stdio.h> | ||
2 | +#include <stdlib.h> | ||
3 | +#include <string.h> | ||
4 | + | ||
5 | +#include "JZsdkLib.h" | ||
6 | +#include "BaseConfig.h" | ||
7 | + | ||
8 | +#include "JZsdk_uart/UartConnection/UartConnection.h" | ||
9 | +#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
10 | + | ||
11 | +#include "JZsdk_TaskManagement/TaskManagement.h" | ||
12 | +#include "Gimbal_SpecialUart/Gimbal_SpecialUart.h" | ||
13 | + | ||
14 | +#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
15 | + #include <wiringPi.h> | ||
16 | +#endif | ||
17 | + | ||
18 | + | ||
19 | +/****************** | ||
20 | + * | ||
21 | + | ||
22 | + * | ||
23 | + * **************/ | ||
24 | +T_JZsdkReturnCode Gimbal_DataDeal_init() | ||
25 | +{ | ||
26 | +//由于150s 150t 开发时还没有帧协议,所以是一个独特的控制类型 | ||
27 | +#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
28 | + | ||
29 | + int Uart_fd = 0; | ||
30 | + | ||
31 | + //1、串口初始化 | ||
32 | + Uart_fd = UartConnection_UartEnabled(GIMBAL_UART_NUM, GIMBAL_UART_BITRATE); | ||
33 | + | ||
34 | + //2、串口接收初始化 | ||
35 | + Gimbal_SpecialUart_UartReceive_Init(Uart_fd); | ||
36 | + | ||
37 | +//不需特地初始化 | ||
38 | +#elif DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_C1 | ||
39 | + // 不用去特地初始化t60的云台 | ||
40 | +#elif DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 \ | ||
41 | + || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == TF_A1 | ||
42 | + //设置0度 | ||
43 | + | ||
44 | +#else | ||
45 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
46 | +#endif | ||
47 | + | ||
48 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
49 | +} | ||
50 | + | ||
51 | +T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle) | ||
52 | +{ | ||
53 | + int angle_PWM = 0; | ||
54 | + | ||
55 | +#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
56 | + //调整为PWM值 1000~2000 | ||
57 | + | ||
58 | + //完整计算公式 | ||
59 | + //angle_PWM= PITCH_PWM_MIN +(-angle)*(PITCH_PWM_MAX-PITCH_PWM_MIN)/(abs(MAX_PITCH)+abs(MIN_PITCH)); | ||
60 | + //简化为 | ||
61 | + angle_PWM= PITCH_PWM_MIN +(angle)*(PITCH_PWM_MAX-PITCH_PWM_MIN)/MIN_PITCH; | ||
62 | + | ||
63 | + unsigned char send_angle[]={0x5a,0x00,0x00,0xa5}; | ||
64 | + send_angle[1]=(unsigned char )(angle_PWM); | ||
65 | + send_angle[2]=(unsigned char )(angle_PWM>>8); | ||
66 | + | ||
67 | + Gimbal_SpecialUart_UartSend(send_angle, 4); | ||
68 | +#elif DEVICE_VERSION == JZ_H10 | ||
69 | + int base = 200; | ||
70 | + //完整计算公式 | ||
71 | + //angle_PWM = base + angle*195/((abs(MAX_PITCH)+abs(MIN_PITCH))) | ||
72 | + | ||
73 | + //简化为 | ||
74 | + angle_PWM = base + angle*195/MIN_PITCH; | ||
75 | + | ||
76 | + //上调15度 | ||
77 | + //angle_PWM = 200 -angle*195/900 -150*195/900; //上调15度 | ||
78 | +#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
79 | + pwmWrite(18,angle_PWM); | ||
80 | +#endif | ||
81 | + | ||
82 | +#elif DEVICE_VERSION == JZ_H10T | ||
83 | + //因为PWM写的时候是按90度写的,所以分母是900,不是设定的600 | ||
84 | + PWM_num = ( angle * (V3S_H10T_angle_PWM_MAX-V3S_H10T_angle_PWM_MIN) /900 ) + V3S_H10T_angle_PWM_MAX; | ||
85 | + | ||
86 | + if (PWM_num > PITCH_PWM_MAX) | ||
87 | + { | ||
88 | + PWM_num = PITCH_PWM_MAX; | ||
89 | + } | ||
90 | + if (PWM_num < PITCH_PWM_MIN) | ||
91 | + { | ||
92 | + PWM_num = PITCH_PWM_MIN; | ||
93 | + } | ||
94 | + | ||
95 | + Ircut_PWM_control(PWM_num); | ||
96 | + | ||
97 | +#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \ | ||
98 | + || DEVICE_VERSION == TF_A1 | ||
99 | + | ||
100 | + //发送角度给串口2 | ||
101 | + JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_2, angle); | ||
102 | + | ||
103 | +#elif DEVICE_VERSION == JZ_H1T | ||
104 | + | ||
105 | + //发送角度给串口1 | ||
106 | + JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_1, angle); | ||
107 | + | ||
108 | +#else | ||
109 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
110 | +#endif | ||
111 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
112 | +} | ||
113 | + | ||
114 | + | ||
115 | +T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range) | ||
116 | +{ | ||
117 | + if (Range != 0xFF && Range != 0x00) | ||
118 | + { | ||
119 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
120 | + } | ||
121 | + | ||
122 | +#if DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
123 | + uint8_t set_min_motor[]={0x4A,0x00,0x00,0xA4}; | ||
124 | + uint8_t set_max_motor[]={0x6A,0x00,0x00,0xA6}; | ||
125 | + | ||
126 | + if (Range == 0xFF) | ||
127 | + { | ||
128 | + Gimbal_SpecialUart_UartSend(set_max_motor, 4); | ||
129 | + } | ||
130 | + else if (Range == 0x00) | ||
131 | + { | ||
132 | + Gimbal_SpecialUart_UartSend(set_min_motor, 4); | ||
133 | + } | ||
134 | +#elif DEVICE_VERSION == JZ_H10 | ||
135 | + | ||
136 | + //还没想好怎么弄 | ||
137 | + | ||
138 | +#elif DEVICE_VERSION == JZ_H10T | ||
139 | + | ||
140 | + //还没想好怎么弄 | ||
141 | + | ||
142 | +#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \ | ||
143 | + || DEVICE_VERSION == TF_A1 | ||
144 | + | ||
145 | + if (Range == 0xFF) | ||
146 | + { | ||
147 | + JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
148 | + } | ||
149 | + else if (Range == 0x00) | ||
150 | + { | ||
151 | + JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
152 | + } | ||
153 | + | ||
154 | +#elif DEVICE_VERSION == JZ_H1T | ||
155 | + | ||
156 | + //好像没必要弄 | ||
157 | + | ||
158 | +#else | ||
159 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
160 | +#endif | ||
161 | + | ||
162 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
163 | +} | ||
164 | + |
1 | +/* | ||
2 | + * @Author: ookk303 | ||
3 | + * @Date: 2024-08-28 14:58:07 | ||
4 | + * @LastEditors: Do not edit | ||
5 | + * @LastEditTime: 2024-08-28 15:03:34 | ||
6 | + * @Description: | ||
7 | + * @FilePath: \JZSDK_Linux\Module\Gimbal\Gimbal_DataDeal\Gimbal_Gimbal_DataDeal | ||
8 | + */ | ||
1 | /** | 9 | /** |
2 | ******************************************************************** | 10 | ******************************************************************** |
3 | - * @file GIMBAL_H3_H10.h | ||
4 | - * H3板子的h10云台头文件 | 11 | + * @file Gimbal_DataDeal.h |
12 | + * Gimbal_DataDeal.h 的头文件 | ||
5 | * | 13 | * |
6 | ********************************************************************* | 14 | ********************************************************************* |
7 | */ | 15 | */ |
8 | 16 | ||
9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 17 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
10 | -#ifndef GIMBAL_H3_H10_H | ||
11 | -#define GIMBAL_H3_H10_H | 18 | +#ifndef GIMBAL_DATADEAL_H |
19 | +#define GIMBAL_DATADEAL_H | ||
12 | 20 | ||
13 | /* Includes ------------------------------------------------------------------*/ | 21 | /* Includes ------------------------------------------------------------------*/ |
14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
@@ -23,12 +31,11 @@ extern "C" { | @@ -23,12 +31,11 @@ extern "C" { | ||
23 | /* Exported types ------------------------------------------------------------*/ | 31 | /* Exported types ------------------------------------------------------------*/ |
24 | 32 | ||
25 | /* Exported functions --------------------------------------------------------*/ | 33 | /* Exported functions --------------------------------------------------------*/ |
26 | -int Gimbal_H3_H10_set_angle(int angle); | ||
27 | -void Gimbal_H3_H10_init_motor(void); | ||
28 | -int Gimbal_H3_H10_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
29 | -//云台微调 | ||
30 | -T_JZsdkReturnCode Gimbal_H3_H10_set_PitchFineTuning(int Pitch); | ||
31 | 34 | ||
35 | +T_JZsdkReturnCode Gimbal_DataDeal_init(); //初始化 | ||
36 | +T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle); | ||
37 | +T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range); | ||
38 | +T_JZsdkReturnCode Read_MotorFineTuning_Pitch(int *value); | ||
32 | 39 | ||
33 | #ifdef __cplusplus | 40 | #ifdef __cplusplus |
34 | } | 41 | } |
1 | -/* Includes ------------------------------------------------------------------*/ | ||
2 | -#include <stdio.h> | ||
3 | -#include <pthread.h> | ||
4 | -#include <stdlib.h> | ||
5 | - | ||
6 | -#include "Gimbal_H3_H10.h" | ||
7 | -#include "version_choose.h" | ||
8 | - | ||
9 | -#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
10 | - #include <wiringPi.h> | ||
11 | -#endif | ||
12 | - | ||
13 | - | ||
14 | -/* Private constants ---------------------------------------------------------*/ | ||
15 | -#define MOTOR_FILE_PATH "/root/motor" | ||
16 | -#define H3_H10_angle_PWM_MIN 1000 | ||
17 | -#define H3_H10_angle_PWM_MAX 2000 | ||
18 | - | ||
19 | -#define H3_H10_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
20 | - | ||
21 | -/* Private types -------------------------------------------------------------*/ | ||
22 | - | ||
23 | -/* Private functions declaration ---------------------------------------------*/ | ||
24 | -#define MOTOR 18 | ||
25 | - | ||
26 | -static int H3_H10_motor_precise_adjustment_pitch =0;//默认H3微调值为0 | ||
27 | - | ||
28 | -static void *Gimbal_H3_H10_Motor_control(void *arg); | ||
29 | -static int H3_H10_Read_MotorAdjustmentPitch(void); | ||
30 | -static void H3_H10_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
31 | - | ||
32 | -int Gimbal_H3_H10_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
33 | -{ | ||
34 | - *AdjustmentPitch = H3_H10_motor_precise_adjustment_pitch; | ||
35 | -} | ||
36 | - | ||
37 | -void Gimbal_H3_H10_init_motor(void) | ||
38 | -{ | ||
39 | - H3_H10_motor_precise_adjustment_pitch = H3_H10_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
40 | - Gimbal_H3_H10_set_angle(0); | ||
41 | -} | ||
42 | - | ||
43 | - | ||
44 | -int Gimbal_H3_H10_set_angle(int angle) | ||
45 | -{ | ||
46 | - printf("H3_H10_angle:%d\n",angle); | ||
47 | - | ||
48 | - //每43.5对饮20度 | ||
49 | - int num = 200 -angle*195/900; //正常 | ||
50 | - //int num = 200 -angle*195/900 -150*195/900; //上调15度 | ||
51 | -#if WIRINGPI_STATUS == VERSION_SWITCH_ON | ||
52 | - | ||
53 | - pwmWrite(MOTOR,num); | ||
54 | -#endif | ||
55 | -} | ||
56 | - | ||
57 | -//云台微调 | ||
58 | -T_JZsdkReturnCode Gimbal_H3_H10_set_PitchFineTuning(int Pitch) | ||
59 | -{ | ||
60 | - //微调的角度值 提高Pitch | ||
61 | - H3_H10_motor_precise_adjustment_pitch += Pitch; | ||
62 | - | ||
63 | - //写入本地文件 | ||
64 | - H3_H10_Write_MotorAdjustmentPitch(H3_H10_motor_precise_adjustment_pitch); | ||
65 | - | ||
66 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
67 | - | ||
68 | -} | ||
69 | - | ||
70 | -//从文件中读出电机微调值 | ||
71 | -static int H3_H10_Read_MotorAdjustmentPitch(void) | ||
72 | -{ | ||
73 | - FILE *motor_file; | ||
74 | - int MotorAdjustmentPitch = 0; | ||
75 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
76 | - if (motor_file == NULL) | ||
77 | - { | ||
78 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
79 | - if (motor_file == NULL) | ||
80 | - { | ||
81 | - return 0; | ||
82 | - } | ||
83 | - } | ||
84 | - else | ||
85 | - { | ||
86 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
87 | - if (ret != 0) { | ||
88 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
89 | - } | ||
90 | - | ||
91 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
92 | - if (ret != sizeof(unsigned int)) { | ||
93 | - printf("Read motor weitiao error.\r\n"); | ||
94 | - } | ||
95 | - else{ | ||
96 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
97 | - } | ||
98 | - } | ||
99 | - fclose(motor_file); | ||
100 | - | ||
101 | - return MotorAdjustmentPitch; | ||
102 | -} | ||
103 | - | ||
104 | -//写入电机微调值刀文件中 | ||
105 | -static void H3_H10_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
106 | -{ | ||
107 | - //写入文件 | ||
108 | - FILE *motor_file; | ||
109 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
110 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
111 | - if (ret != sizeof(unsigned int)) { | ||
112 | - printf("Write motor weitiao error.\r\n"); | ||
113 | - } | ||
114 | - else{ | ||
115 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
116 | - } | ||
117 | - | ||
118 | - fclose(motor_file); | ||
119 | -} | ||
120 | - | ||
121 | - |
1 | -/* Includes ------------------------------------------------------------------*/ | ||
2 | -#include <stdio.h> | ||
3 | -#include <stdlib.h> | ||
4 | -#include <string.h> | ||
5 | - | ||
6 | -#include <pthread.h> | ||
7 | - | ||
8 | -#include "Gimbal_H3_H150ST_UartDeal.h" | ||
9 | -#include "Gimbal_H3_H150ST.h" | ||
10 | -#include "BaseConfig.h" | ||
11 | - | ||
12 | -#include "JZsdk_uart/UartConnection/UartConnection.h" | ||
13 | -#include "JZsdk_TaskManagement/TaskManagement.h" | ||
14 | - | ||
15 | - | ||
16 | -/* Private constants ---------------------------------------------------------*/ | ||
17 | -#define MOTOR_FILE_PATH "/root/motor" | ||
18 | -#define H3_H150ST_angle_PWM_MIN 1000 | ||
19 | -#define H3_H150ST_angle_PWM_MAX 2000 | ||
20 | - | ||
21 | -#define H3_H150ST_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
22 | - | ||
23 | -/* Private types -------------------------------------------------------------*/ | ||
24 | - | ||
25 | -/* Private functions declaration ---------------------------------------------*/ | ||
26 | - | ||
27 | -static int H3_H150ST_motor_precise_adjustment_pitch =0;//默认H3微调值为0 | ||
28 | - | ||
29 | -static void *H3_H150ST_Motor_control(void *arg); | ||
30 | -static void H3_H150ST_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
31 | -static int H3_H150ST_Read_MotorAdjustmentPitch(); | ||
32 | - | ||
33 | -T_JZsdkReturnCode Gimbal_H3_H150ST_init_motor() | ||
34 | -{ | ||
35 | - int Uart_fd = 0; | ||
36 | - //1、串口初始化 | ||
37 | - Uart_fd = UartConnection_UartEnabled(GIMBAL_UART_NUM, GIMBAL_UART_BITRATE); | ||
38 | - | ||
39 | - //2、串口接收初始化 | ||
40 | - Gimbal_H3_H150ST_UartDeal_Receive(Uart_fd); | ||
41 | - | ||
42 | - //从文件中读出电机微调值 | ||
43 | - H3_H150ST_motor_precise_adjustment_pitch = H3_H150ST_Read_MotorAdjustmentPitch(); | ||
44 | -} | ||
45 | - | ||
46 | -/********** | ||
47 | - * | ||
48 | - * 发送任务函数 | ||
49 | - * | ||
50 | - * ***********/ | ||
51 | -static void JZsdk_Uart_UartSend_Task(void *data) | ||
52 | -{ | ||
53 | - Gimbal_H3_H150ST_UartDeal_UartSend(data, 4); | ||
54 | -} | ||
55 | - | ||
56 | -/**************** | ||
57 | - * | ||
58 | - * | ||
59 | - * 发送函数 | ||
60 | - * | ||
61 | - * ****************/ | ||
62 | -T_JZsdkReturnCode H150ST_UartSend(unsigned char *data, int num) | ||
63 | -{ | ||
64 | - unsigned char *str = (unsigned char*)malloc(sizeof(data)); | ||
65 | - memcpy(str, data, sizeof(data)); | ||
66 | - | ||
67 | - T_JZsdkReturnCode ret = TaskManagement_SubmitTask(JZsdk_Uart_UartSend_Task, (void *)str); | ||
68 | - if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
69 | - { | ||
70 | - free(str); | ||
71 | - return ret; | ||
72 | - } | ||
73 | - | ||
74 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
75 | -} | ||
76 | - | ||
77 | - | ||
78 | -//设置角度 | ||
79 | -int H3_H150ST_Gimbal_SetAngle(int angle) | ||
80 | -{ | ||
81 | - //调整为PWM值 1000~2000 | ||
82 | - int angle_PWM = 0; | ||
83 | - | ||
84 | - if(angle>=0){ | ||
85 | - angle_PWM = H3_H150ST_angle_PWM_MIN; | ||
86 | - } | ||
87 | - else if(angle<=-900){ | ||
88 | - angle_PWM = H3_H150ST_angle_PWM_MAX; | ||
89 | - } | ||
90 | - else if(angle<0 && angle>-900) | ||
91 | - { | ||
92 | - angle_PWM= H3_H150ST_angle_PWM_MIN +(-angle)*(H3_H150ST_angle_PWM_MAX-H3_H150ST_angle_PWM_MIN)/900; | ||
93 | - } | ||
94 | - | ||
95 | - char send_angle[]={0x5a,0x00,0x00,0xa5}; | ||
96 | - send_angle[1]=(char )(angle_PWM); | ||
97 | - send_angle[2]=(char )(angle_PWM>>8); | ||
98 | - | ||
99 | - H150ST_UartSend(send_angle, 4); | ||
100 | -} | ||
101 | - | ||
102 | - | ||
103 | - | ||
104 | -//H150ST云台范围 | ||
105 | -T_JZsdkReturnCode H3_H150ST_SetGimbalRange(int Range) | ||
106 | -{ | ||
107 | - uint8_t set_min_motor[]={0x4A,0x00,0x00,0xA4}; | ||
108 | - uint8_t set_max_motor[]={0x6A,0x00,0x00,0xA6}; | ||
109 | - | ||
110 | - if (Range == 0xFF) | ||
111 | - { | ||
112 | - printf("设置H150ST云台最大值\n"); | ||
113 | - Gimbal_H3_H150ST_UartDeal_UartSend(set_max_motor, 4); | ||
114 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
115 | - } | ||
116 | - else if (Range == 0x00) | ||
117 | - { | ||
118 | - printf("设置H150ST云台最小值\n"); | ||
119 | - Gimbal_H3_H150ST_UartDeal_UartSend(set_min_motor, 4); | ||
120 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
121 | - } | ||
122 | - | ||
123 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
124 | -} | ||
125 | - | ||
126 | -//云台微调 | ||
127 | -T_JZsdkReturnCode Gimbal_H3_H150ST_set_PitchFineTuning(int Pitch) | ||
128 | -{ | ||
129 | - //微调的角度值 提高Pitch | ||
130 | - H3_H150ST_motor_precise_adjustment_pitch += Pitch; | ||
131 | - | ||
132 | - //写入本地文件 | ||
133 | - H3_H150ST_Write_MotorAdjustmentPitch(H3_H150ST_motor_precise_adjustment_pitch); | ||
134 | - | ||
135 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
136 | - | ||
137 | -} | ||
138 | - | ||
139 | -//微调向上 | ||
140 | -void H3_H150ST_gimbal_up(void) | ||
141 | -{ | ||
142 | - //微调的pwm值 提高5 | ||
143 | - H3_H150ST_motor_precise_adjustment_pitch = H3_H150ST_motor_precise_adjustment_pitch + H3_H150ST_MOTOR_ADJUSTMENT; | ||
144 | - | ||
145 | - //写入本地文件 | ||
146 | - H3_H150ST_Write_MotorAdjustmentPitch(H3_H150ST_motor_precise_adjustment_pitch); | ||
147 | -} | ||
148 | - | ||
149 | -//向下微调 | ||
150 | -void H3_H150ST_gimbal_down(void) | ||
151 | -{ | ||
152 | - //微调的pwm值 减少5 | ||
153 | - H3_H150ST_motor_precise_adjustment_pitch = H3_H150ST_motor_precise_adjustment_pitch - H3_H150ST_MOTOR_ADJUSTMENT; | ||
154 | - | ||
155 | - //写入本地文件 | ||
156 | - H3_H150ST_Write_MotorAdjustmentPitch(H3_H150ST_motor_precise_adjustment_pitch); | ||
157 | -} | ||
158 | - | ||
159 | -//查询云台微调值 | ||
160 | -int Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
161 | -{ | ||
162 | - *AdjustmentPitch = H3_H150ST_motor_precise_adjustment_pitch; | ||
163 | -} | ||
164 | - | ||
165 | -//从文件中读出电机微调值 | ||
166 | -static int H3_H150ST_Read_MotorAdjustmentPitch() | ||
167 | -{ | ||
168 | - FILE *motor_file; | ||
169 | - int MotorAdjustmentPitch = 0; | ||
170 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
171 | - if (motor_file == NULL) | ||
172 | - { | ||
173 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
174 | - if (motor_file == NULL) | ||
175 | - { | ||
176 | - return 0; | ||
177 | - } | ||
178 | - } | ||
179 | - else | ||
180 | - { | ||
181 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
182 | - if (ret != 0) { | ||
183 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
184 | - } | ||
185 | - | ||
186 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
187 | - if (ret != sizeof(unsigned int)) { | ||
188 | - printf("Read motor weitiao error.\r\n"); | ||
189 | - } | ||
190 | - else{ | ||
191 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
192 | - } | ||
193 | - } | ||
194 | - fclose(motor_file); | ||
195 | - | ||
196 | - return MotorAdjustmentPitch; | ||
197 | -} | ||
198 | - | ||
199 | -//写入电机微调值刀文件中 | ||
200 | -static void H3_H150ST_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
201 | -{ | ||
202 | - //写入文件 | ||
203 | - FILE *motor_file; | ||
204 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
205 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
206 | - if (ret != sizeof(unsigned int)) { | ||
207 | - printf("Write motor weitiao error.\r\n"); | ||
208 | - } | ||
209 | - else{ | ||
210 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
211 | - } | ||
212 | - | ||
213 | - fclose(motor_file); | ||
214 | -} | ||
215 | - | ||
216 | - |
1 | -/** | ||
2 | - ******************************************************************** | ||
3 | - * @file GIMBAL_H3.h | ||
4 | - * GIMBAL_H3的头文件 | ||
5 | - * | ||
6 | - ********************************************************************* | ||
7 | - */ | ||
8 | - | ||
9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | -#ifndef GIMBAL_H3_H150ST_H | ||
11 | -#define GIMBAL_H3_H150ST_H | ||
12 | - | ||
13 | -/* Includes ------------------------------------------------------------------*/ | ||
14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
15 | - | ||
16 | -#ifdef __cplusplus | ||
17 | -extern "C" { | ||
18 | -#endif | ||
19 | - | ||
20 | -/* Exported constants --------------------------------------------------------*/ | ||
21 | -/* 常亮定义*/ | ||
22 | - | ||
23 | -/* Exported types ------------------------------------------------------------*/ | ||
24 | - | ||
25 | -/* Exported functions --------------------------------------------------------*/ | ||
26 | -int H3_H150ST_Gimbal_SetAngle(int angle); | ||
27 | -int Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
28 | -T_JZsdkReturnCode Gimbal_H3_H150ST_init_motor(); | ||
29 | -T_JZsdkReturnCode H3_H150ST_SetGimbalRange(int Range); | ||
30 | -T_JZsdkReturnCode Gimbal_H3_H150ST_set_PitchFineTuning(int Pitch); | ||
31 | - | ||
32 | - | ||
33 | -#ifdef __cplusplus | ||
34 | -} | ||
35 | -#endif | ||
36 | - | ||
37 | -#endif |
Module/Gimbal/Gimbal_InAndOut.c
已删除
100644 → 0
1 | -#include <stdio.h> | ||
2 | -#include <string.h> | ||
3 | -#include <stdlib.h> | ||
4 | -#include <pthread.h> | ||
5 | - | ||
6 | -#include "version_choose.h" | ||
7 | -#include "Gimbal_H3/Gimbal_H3.h" | ||
8 | -#include "Gimbal_V3S/Gimbal_V3S.h" | ||
9 | -#include "Gimbal_InAndOut.h" | ||
10 | -#include "JZsdkLib.h" | ||
11 | - | ||
12 | -#include "Psdk_UI_io.h" | ||
13 | - | ||
14 | -//数值角度记录 | ||
15 | -#if DEVICE_VERSION == TF_A1 | ||
16 | - static int Gimbal_PitchAngle = 0; | ||
17 | - static int Gimbal_YawAngle = 0; | ||
18 | -#else | ||
19 | - static int Gimbal_PitchAngle = 0; | ||
20 | - static int Gimbal_YawAngle = 0; | ||
21 | -#endif | ||
22 | - | ||
23 | - | ||
24 | -//微调角度 | ||
25 | -static int Gimbal_PitchFineTuning = 0; | ||
26 | -static int Gimbal_YawFineTuning = 0; | ||
27 | - | ||
28 | -//飞机自身角度 | ||
29 | -static int Gimbal_UavSelfPitch = 0; | ||
30 | - | ||
31 | -//实际角度 (数值角度+飞机自身角度+微调角度) | ||
32 | -static int Gimbal_RealPitchAngle = 0; | ||
33 | - | ||
34 | -static int Gimbal_LinkageNum; | ||
35 | - | ||
36 | -static int Gimbal_SendAngleTask_Init(); | ||
37 | - | ||
38 | -static int g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_OFF; | ||
39 | - | ||
40 | -/** | ||
41 | - * | ||
42 | - * 获取gimbal模块状态标志位 | ||
43 | - * | ||
44 | - * **/ | ||
45 | -int Get_JZsdk_GimbalStatusFlag() | ||
46 | -{ | ||
47 | - return g_JZsdk_GimbalStatusFlag; | ||
48 | -} | ||
49 | - | ||
50 | -/* | ||
51 | -* Gimbal模块初始化 | ||
52 | -*/ | ||
53 | - | ||
54 | -int Gimbal_Init() | ||
55 | -{ | ||
56 | - //发送角度线程初始化 | ||
57 | - Gimbal_SendAngleTask_Init(); | ||
58 | - | ||
59 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
60 | - { | ||
61 | - //云台初始化 | ||
62 | - Gimbal_H3_H150ST_init_motor(); | ||
63 | - } | ||
64 | - else if (DEVICE_VERSION == JZ_H10) | ||
65 | - { | ||
66 | - //注:h3_h10的电机引脚已在引脚初始化中完成 | ||
67 | - Gimbal_H3_H10_init_motor(); | ||
68 | - } | ||
69 | - else if (DEVICE_VERSION == JZ_H10T) | ||
70 | - { | ||
71 | - //注:h3_h10的电机引脚已在引脚初始化中完成 | ||
72 | - Gimbal_V3S_H10T_init_motor(); | ||
73 | - } | ||
74 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
75 | - { | ||
76 | - Gimbal_V3S_U3_init_motor(); | ||
77 | - } | ||
78 | - else if (DEVICE_VERSION == JZ_H1T) | ||
79 | - { | ||
80 | - Gimbal_V3S_H1T_init_motor(); | ||
81 | - } | ||
82 | - else if (DEVICE_VERSION == TF_A1) | ||
83 | - { | ||
84 | - Gimbal_V3S_TFA1_init_motor(); | ||
85 | - } | ||
86 | - else if (DEVICE_VERSION == JZ_C1) | ||
87 | - { | ||
88 | - JZSDK_LOG_INFO("C1云台初始化"); | ||
89 | - } | ||
90 | - else | ||
91 | - { | ||
92 | - return -1; | ||
93 | - } | ||
94 | - | ||
95 | - //读取微调值 | ||
96 | - Gimbal_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning, &Gimbal_YawFineTuning); | ||
97 | - | ||
98 | - //云台flag打开 | ||
99 | - g_JZsdk_GimbalStatusFlag = JZ_FLAGCODE_ON; | ||
100 | - | ||
101 | - printf("云台初始化完毕\n"); | ||
102 | - | ||
103 | -} | ||
104 | - | ||
105 | -//设置云台俯仰角度 | ||
106 | -T_JZsdkReturnCode Gimbal_Set_PitchAngle(int angle) | ||
107 | -{ | ||
108 | - //printf("设置云台俯仰角度\n"); | ||
109 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
110 | - { | ||
111 | - //1、判断输入范围是否正确 | ||
112 | - if ((angle < -900) || (angle > 0)) | ||
113 | - { | ||
114 | - printf("H150s/H150t的云台俯仰输入值范围出错:%d\n", angle); | ||
115 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
116 | - } | ||
117 | - } | ||
118 | - else if (DEVICE_VERSION == JZ_H10) | ||
119 | - { | ||
120 | - //1、判断输入范围是否正确 | ||
121 | - if ((angle < -600) || (angle > 0)) | ||
122 | - //if ((angle < -800) || (angle > 0)) | ||
123 | - { | ||
124 | - printf("H10的云台俯仰输入值范围出错:%d\n", angle); | ||
125 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
126 | - } | ||
127 | - | ||
128 | - } | ||
129 | - else if (DEVICE_VERSION == JZ_H10T) | ||
130 | - { | ||
131 | - //1、判断输入范围是否正确 | ||
132 | - if ((angle < -600) || (angle > 0)) | ||
133 | - { | ||
134 | - printf("H10T的云台俯仰输入值范围出错:%d\n", angle); | ||
135 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
136 | - } | ||
137 | - | ||
138 | - } | ||
139 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
140 | - { | ||
141 | - //1、判断输入范围是否正确 | ||
142 | - if ((angle < -900) || (angle > 0)) | ||
143 | - { | ||
144 | - printf("U3的云台俯仰输入值范围出错:%d\n", angle); | ||
145 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
146 | - } | ||
147 | - | ||
148 | - } | ||
149 | - else if (DEVICE_VERSION == TF_A1) | ||
150 | - { | ||
151 | - //1、判断输入范围是否正确 | ||
152 | - if ((angle < -900) || (angle > 0)) | ||
153 | - { | ||
154 | - printf("TFA1的云台俯仰输入值范围出错:%d\n", angle); | ||
155 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
156 | - } | ||
157 | - | ||
158 | - } | ||
159 | - else if (DEVICE_VERSION == JZ_H1T) | ||
160 | - { | ||
161 | - //1、判断输入范围是否正确 | ||
162 | - if ((angle < -900) || (angle > 300)) | ||
163 | - { | ||
164 | - printf("H1T的云台俯仰输入值范围出错:%d\n", angle); | ||
165 | - return JZ_ERRORCODE_GIMBAL_INVALID_PITCH; | ||
166 | - } | ||
167 | - | ||
168 | - } | ||
169 | - | ||
170 | - else | ||
171 | - { | ||
172 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
173 | - } | ||
174 | - | ||
175 | - Gimbal_PitchAngle = angle; | ||
176 | - | ||
177 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
178 | -} | ||
179 | - | ||
180 | -//设置云台航向角度 | ||
181 | -int Gimbal_Set_YawAngle(int angle) | ||
182 | -{ | ||
183 | - | ||
184 | - printf("没有航向角度\n"); | ||
185 | - return -1; | ||
186 | - | ||
187 | -} | ||
188 | - | ||
189 | -//设置云台范围的最大最小值 | ||
190 | -T_JZsdkReturnCode Gimbal_SetGimbalRange(int value) | ||
191 | -{ | ||
192 | - printf("设置云台范围最大最小值\n"); | ||
193 | - | ||
194 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
195 | - { | ||
196 | - return H3_H150ST_SetGimbalRange(value); | ||
197 | - } | ||
198 | - | ||
199 | - | ||
200 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
201 | - { | ||
202 | - return V3S_U3_SetGimbalRange(value); | ||
203 | - } | ||
204 | - | ||
205 | - if (DEVICE_VERSION == TF_A1) | ||
206 | - { | ||
207 | - return V3S_TFA1_SetGimbalRange(value); | ||
208 | - } | ||
209 | - | ||
210 | - if (DEVICE_VERSION == JZ_H1T) | ||
211 | - { | ||
212 | - /* code */ | ||
213 | - } | ||
214 | - | ||
215 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
216 | -} | ||
217 | - | ||
218 | -//查询云台微调值 | ||
219 | -T_JZsdkReturnCode Gimbal_CheckStatus_GimbalFineTuning(int *FineTunigPitch, int *FineTunigYaw) | ||
220 | -{ | ||
221 | - printf("查询云台微调值\n"); | ||
222 | - | ||
223 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
224 | - { | ||
225 | - //1、获取微调值 | ||
226 | - Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
227 | - | ||
228 | - //2、回复微调值 | ||
229 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
230 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
231 | - | ||
232 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
233 | - } | ||
234 | - | ||
235 | - | ||
236 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
237 | - { | ||
238 | - //1、获取微调值 | ||
239 | - Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
240 | - | ||
241 | - //2、回复微调值 | ||
242 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
243 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
244 | - | ||
245 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
246 | - } | ||
247 | - | ||
248 | - if (DEVICE_VERSION == TF_A1) | ||
249 | - { | ||
250 | - //1、获取微调值 | ||
251 | - Gimbal_V3S_TFA1_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
252 | - | ||
253 | - //2、回复微调值 | ||
254 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
255 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
256 | - | ||
257 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
258 | - } | ||
259 | - | ||
260 | - if (DEVICE_VERSION == JZ_H1T) | ||
261 | - { | ||
262 | - //1、刷新微调值 | ||
263 | - Gimbal_V3S_H1T_CheckStatus_GimbalFineTuning(); | ||
264 | - | ||
265 | - delayMs(10); | ||
266 | - | ||
267 | - //2、回复微调值 | ||
268 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
269 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
270 | - | ||
271 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
272 | - } | ||
273 | - | ||
274 | - if (DEVICE_VERSION == JZ_H10) | ||
275 | - { | ||
276 | - //1、获取微调值 | ||
277 | - Gimbal_H3_H10_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
278 | - | ||
279 | - //2、回复微调值 | ||
280 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
281 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
282 | - | ||
283 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
284 | - } | ||
285 | - | ||
286 | - if (DEVICE_VERSION == JZ_H10T) | ||
287 | - { | ||
288 | - //1、获取微调值 | ||
289 | - Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(&Gimbal_PitchFineTuning); | ||
290 | - | ||
291 | - //2、回复微调值 | ||
292 | - *FineTunigPitch = Gimbal_PitchFineTuning; | ||
293 | - *FineTunigYaw = Gimbal_YawFineTuning; | ||
294 | - | ||
295 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
296 | - } | ||
297 | - | ||
298 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
299 | -} | ||
300 | - | ||
301 | -//收到云台pitch微调值 | ||
302 | -T_JZsdkReturnCode Gimbal_Obtain_GimbalFineTuning(int pitch) | ||
303 | -{ | ||
304 | - printf("收到云台pitch云台微调值\n"); | ||
305 | - | ||
306 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
307 | - { | ||
308 | - //无操作 | ||
309 | - } | ||
310 | - | ||
311 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
312 | - { | ||
313 | - //无操作 | ||
314 | - } | ||
315 | - | ||
316 | - if (DEVICE_VERSION == JZ_H1T) | ||
317 | - { | ||
318 | - Gimbal_PitchFineTuning = pitch; | ||
319 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
320 | - } | ||
321 | - | ||
322 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
323 | -} | ||
324 | - | ||
325 | -//设置云台pitch微调值 | ||
326 | -T_JZsdkReturnCode Gimbal_Set_PitchFineTuning(int DeviceName ,int pitch) | ||
327 | -{ | ||
328 | - printf("设置云台pitch云台微调值\n"); | ||
329 | - T_JZsdkReturnCode ret; | ||
330 | - | ||
331 | - //原值+修改值 | ||
332 | - Gimbal_PitchFineTuning = Gimbal_PitchFineTuning + pitch; | ||
333 | - | ||
334 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
335 | - { | ||
336 | - ret = Gimbal_H3_H150ST_set_PitchFineTuning(pitch); | ||
337 | - } | ||
338 | - | ||
339 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
340 | - { | ||
341 | - ret = Gimbal_V3S_U3_set_PitchFineTuning(pitch); | ||
342 | - } | ||
343 | - | ||
344 | - else if (DEVICE_VERSION == TF_A1) | ||
345 | - { | ||
346 | - ret = Gimbal_V3S_TFA1_set_PitchFineTuning(pitch); | ||
347 | - } | ||
348 | - | ||
349 | - else if (DEVICE_VERSION == JZ_H1T) | ||
350 | - { | ||
351 | - ret = Gimbal_V3S_H1T_set_PitchFineTuning(pitch); | ||
352 | - } | ||
353 | - | ||
354 | - else if (DEVICE_VERSION == JZ_H10) | ||
355 | - { | ||
356 | - ret = Gimbal_H3_H10_set_PitchFineTuning(pitch); | ||
357 | - } | ||
358 | - | ||
359 | - else if (DEVICE_VERSION == JZ_H10T) | ||
360 | - { | ||
361 | - ret = Gimbal_V3S_H10T_set_PitchFineTuning(pitch); | ||
362 | - } | ||
363 | - else | ||
364 | - { | ||
365 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
366 | - } | ||
367 | - | ||
368 | - //微调后重设角度 | ||
369 | - Gimbal_Set_PitchAngle(Gimbal_PitchAngle); | ||
370 | - | ||
371 | - return ret; | ||
372 | -} | ||
373 | - | ||
374 | -//设置云台联动 | ||
375 | -T_JZsdkReturnCode Gimbal_Set_GimbalLinkageControl(int value) | ||
376 | -{ | ||
377 | - printf("设置云台联动\n"); | ||
378 | - | ||
379 | - Gimbal_LinkageNum = value; | ||
380 | - | ||
381 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
382 | - { | ||
383 | - //没这玩意 | ||
384 | - } | ||
385 | - | ||
386 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
387 | - { | ||
388 | - //没这玩意 | ||
389 | - } | ||
390 | - | ||
391 | - if (DEVICE_VERSION == JZ_H1T) | ||
392 | - { | ||
393 | - Gimbal_V3S_H1T_Set_GimbalLinkageControl(Gimbal_LinkageNum); | ||
394 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
395 | - } | ||
396 | - | ||
397 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
398 | - | ||
399 | -} | ||
400 | - | ||
401 | -//查询云台联动 | ||
402 | -T_JZsdkReturnCode Gimbal_CheckStatus_GimbalLinkage(int *value) | ||
403 | -{ | ||
404 | - printf("查询云台联动值\n"); | ||
405 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
406 | - { | ||
407 | - | ||
408 | - } | ||
409 | - | ||
410 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
411 | - { | ||
412 | - | ||
413 | - } | ||
414 | - | ||
415 | - if (DEVICE_VERSION == JZ_H1T) | ||
416 | - { | ||
417 | - //1、刷新云台联动值 | ||
418 | - Gimbal_V3S_H1T_CheckStatus_GimbalLinkage(); | ||
419 | - | ||
420 | - delayMs(10); | ||
421 | - | ||
422 | - //2、回复云台联动值 | ||
423 | - *value = Gimbal_LinkageNum; | ||
424 | - | ||
425 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
426 | - } | ||
427 | - | ||
428 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
429 | -} | ||
430 | - | ||
431 | -//收到云台联动值 | ||
432 | -T_JZsdkReturnCode Gimbal_Obtain_GimbalLinkage(int GimbalLinkage) | ||
433 | -{ | ||
434 | - printf("收到云台联动值\n"); | ||
435 | - | ||
436 | - Gimbal_LinkageNum = GimbalLinkage; | ||
437 | - | ||
438 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
439 | - { | ||
440 | - | ||
441 | - } | ||
442 | - | ||
443 | - | ||
444 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
445 | - { | ||
446 | - | ||
447 | - } | ||
448 | - | ||
449 | - if (DEVICE_VERSION == JZ_H1T) | ||
450 | - { | ||
451 | - //无操作 | ||
452 | - //毕竟是t60s返回来的值 | ||
453 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
454 | - } | ||
455 | - | ||
456 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
457 | -} | ||
458 | - | ||
459 | - | ||
460 | -//获取数值角度 | ||
461 | -T_JZsdkReturnCode Gimbal_Get_Angle(int *PitchAngle, int *YawAngle) | ||
462 | -{ | ||
463 | - *PitchAngle = Gimbal_PitchAngle; | ||
464 | - *YawAngle = Gimbal_YawAngle; | ||
465 | - | ||
466 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
467 | -} | ||
468 | - | ||
469 | -/********* | ||
470 | - * | ||
471 | - * 查询云台角度 | ||
472 | - * | ||
473 | -**********/ | ||
474 | -T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle) | ||
475 | -{ | ||
476 | - //1、刷新查询角度 | ||
477 | - if (DEVICE_VERSION == JZ_H1T) | ||
478 | - { | ||
479 | - Gimbal_V3S_H1T_CheckStatus_GimbalAngle(); | ||
480 | - } | ||
481 | - | ||
482 | - //2、获取一次本地云台角度 | ||
483 | - Gimbal_Get_Angle(PitchAngle, YawAngle); | ||
484 | - | ||
485 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
486 | -} | ||
487 | - | ||
488 | -int Gimbal_Get_PitchAngle() | ||
489 | -{ | ||
490 | - return Gimbal_PitchAngle; | ||
491 | -} | ||
492 | - | ||
493 | -int Gimbal_Get_PitchFineTuning() | ||
494 | -{ | ||
495 | - return Gimbal_PitchFineTuning; | ||
496 | -} | ||
497 | - | ||
498 | -int Gimbal_Get_PitchRealPitchAngle() | ||
499 | -{ | ||
500 | - return Gimbal_RealPitchAngle; | ||
501 | -} | ||
502 | - | ||
503 | -//获得云台值 | ||
504 | -T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch) | ||
505 | -{ | ||
506 | - | ||
507 | - //目前 U3和 H1T会接受到云台返回值 | ||
508 | - if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
509 | - { | ||
510 | - //不处理,避免出现什么问题 | ||
511 | - } | ||
512 | - else if (DEVICE_VERSION == JZ_H1T) | ||
513 | - { | ||
514 | - //Gimbal_PitchAngle = Pitch; | ||
515 | - //这里暂时不处理,避免多次把5a帧返还给串口1设备 | ||
516 | - //但是会导致4g接收不到最新的角度 | ||
517 | - } | ||
518 | - else | ||
519 | - { | ||
520 | - //不处理,避免出现什么问题 | ||
521 | - } | ||
522 | - | ||
523 | -} | ||
524 | - | ||
525 | -/************************************************************** | ||
526 | - * | ||
527 | - * | ||
528 | - * 飞机特殊控制云台方法 | ||
529 | - * | ||
530 | - * | ||
531 | -***************************************************************/ | ||
532 | -//1、飞机自身角度控制云台 | ||
533 | -T_JZsdkReturnCode Gimbal_PitchSelfangleMode(int Pitch) | ||
534 | -{ | ||
535 | - if (Gimbal_UavSelfPitch == Pitch) | ||
536 | - { | ||
537 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
538 | - } | ||
539 | - | ||
540 | - Gimbal_UavSelfPitch = Pitch; | ||
541 | - | ||
542 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
543 | - | ||
544 | -} | ||
545 | - | ||
546 | -//2、滑动条 获取云台角度 | ||
547 | -int Gimbal_PitchScaleMode(int value) | ||
548 | -{ | ||
549 | - int angle; | ||
550 | - if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
551 | - { | ||
552 | - //0~100 转化为 -900~0 | ||
553 | - angle = value*9 -900; | ||
554 | - } | ||
555 | - else if (DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T) | ||
556 | - { | ||
557 | - //0~100 转化为 -600~0 | ||
558 | - angle = value*6 -600; | ||
559 | - } | ||
560 | - else | ||
561 | - { | ||
562 | - return 0; | ||
563 | - } | ||
564 | - | ||
565 | - return angle; | ||
566 | -} | ||
567 | - | ||
568 | -//3、拨轮控制云台 | ||
569 | -T_JZsdkReturnCode Gimbal_PitchRotationMode(int value) | ||
570 | -{ | ||
571 | - int angle; | ||
572 | - | ||
573 | - //JZSDK_LOG_DEBUG("拨轮控制"); | ||
574 | - | ||
575 | - if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T ) | ||
576 | - { | ||
577 | - | ||
578 | - angle = Gimbal_PitchAngle + value; | ||
579 | - if (angle > 0) | ||
580 | - { | ||
581 | - angle = 0; | ||
582 | - } | ||
583 | - else if (angle < -900) | ||
584 | - { | ||
585 | - angle = -900; | ||
586 | - } | ||
587 | - | ||
588 | - if (angle == Gimbal_PitchAngle) | ||
589 | - { | ||
590 | - printf("拨轮控制无效\n"); | ||
591 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
592 | - } | ||
593 | - | ||
594 | - } | ||
595 | - else if (DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T ) | ||
596 | - { | ||
597 | - angle = Gimbal_PitchAngle + value; | ||
598 | - if (angle > 0) | ||
599 | - { | ||
600 | - angle = 0; | ||
601 | - } | ||
602 | - else if (angle < -600) | ||
603 | - { | ||
604 | - angle = -600; | ||
605 | - } | ||
606 | - | ||
607 | - if (angle == Gimbal_PitchAngle) | ||
608 | - { | ||
609 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
610 | - } | ||
611 | - | ||
612 | - } | ||
613 | - else | ||
614 | - { | ||
615 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
616 | - } | ||
617 | - | ||
618 | - Gimbal_Set_PitchAngle(angle); | ||
619 | - | ||
620 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
621 | -} | ||
622 | - | ||
623 | -//输入角度,回复滑动条值 | ||
624 | -int Gimbal_ReplyPitchToUAVScale(int angle) | ||
625 | -{ | ||
626 | - int value; | ||
627 | - | ||
628 | - if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T ) | ||
629 | - { | ||
630 | - //-900~0 转回 0~100 | ||
631 | - value = (angle+ 900)/9; | ||
632 | - } | ||
633 | - if (DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T) | ||
634 | - { | ||
635 | - //-600~0 转回 0~100 | ||
636 | - value = (angle+ 600)/6; | ||
637 | - } | ||
638 | - | ||
639 | - else | ||
640 | - { | ||
641 | - return 0; | ||
642 | - } | ||
643 | - | ||
644 | - return value; | ||
645 | -} | ||
646 | - | ||
647 | - | ||
648 | -//设置云台俯仰角度 | ||
649 | -static T_JZsdkReturnCode Gimbal_Set_RealPitchAngle(int angle) | ||
650 | -{ | ||
651 | - int temp_angle; | ||
652 | - | ||
653 | - //printf("设置真实俯仰角度\n"); | ||
654 | - if (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T) | ||
655 | - { | ||
656 | - //获取飞机微调角度 | ||
657 | - int AdjustmentPitch; | ||
658 | - Gimbal_H3_H150ST_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
659 | - | ||
660 | - //叠加飞机角度和微调角度 | ||
661 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
662 | - | ||
663 | - //修正angle值 | ||
664 | - if (temp_angle < -900) | ||
665 | - { | ||
666 | - angle = -900; | ||
667 | - } | ||
668 | - else if (temp_angle > 0) | ||
669 | - { | ||
670 | - angle = 0; | ||
671 | - } | ||
672 | - else | ||
673 | - { | ||
674 | - angle = temp_angle; | ||
675 | - } | ||
676 | - | ||
677 | - Gimbal_RealPitchAngle = temp_angle; | ||
678 | - | ||
679 | - //发送到云台函数 | ||
680 | - H3_H150ST_Gimbal_SetAngle(temp_angle); | ||
681 | - | ||
682 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
683 | - | ||
684 | - } | ||
685 | - else if (DEVICE_VERSION == JZ_H10) | ||
686 | - { | ||
687 | - //获取飞机微调角度 | ||
688 | - int AdjustmentPitch; | ||
689 | - Gimbal_H3_H10_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
690 | - | ||
691 | - //叠加飞机角度和微调角度 | ||
692 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
693 | - | ||
694 | - //修正angle值 | ||
695 | - if (temp_angle < -600) | ||
696 | - { | ||
697 | - angle = -600; | ||
698 | - } | ||
699 | - else if (temp_angle > 0) | ||
700 | - { | ||
701 | - angle = 0; | ||
702 | - } | ||
703 | - else | ||
704 | - { | ||
705 | - angle = temp_angle; | ||
706 | - } | ||
707 | - | ||
708 | - Gimbal_RealPitchAngle = temp_angle; | ||
709 | - | ||
710 | - //发送到云台函数 | ||
711 | - Gimbal_H3_H10_set_angle(temp_angle); | ||
712 | - | ||
713 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
714 | - | ||
715 | - } | ||
716 | - else if (DEVICE_VERSION == JZ_H10T) | ||
717 | - { | ||
718 | - //获取飞机微调角度 | ||
719 | - int AdjustmentPitch; | ||
720 | - Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
721 | - | ||
722 | - //叠加飞机角度和微调角度 | ||
723 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
724 | - | ||
725 | - //修正angle值 | ||
726 | - if (temp_angle < -600) | ||
727 | - { | ||
728 | - angle = -600; | ||
729 | - } | ||
730 | - else if (temp_angle > 0) | ||
731 | - { | ||
732 | - angle = 0; | ||
733 | - } | ||
734 | - else | ||
735 | - { | ||
736 | - angle = temp_angle; | ||
737 | - } | ||
738 | - | ||
739 | - Gimbal_RealPitchAngle = temp_angle; | ||
740 | - | ||
741 | - //发送到云台函数 | ||
742 | - Gimbal_V3S_H10T_set_angle(temp_angle); | ||
743 | - | ||
744 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
745 | - } | ||
746 | - else if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D) | ||
747 | - { | ||
748 | - //获取飞机微调角度 | ||
749 | - int AdjustmentPitch; | ||
750 | - Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(&AdjustmentPitch); | ||
751 | - | ||
752 | - //叠加飞机角度和微调角度 | ||
753 | - temp_angle = angle - Gimbal_UavSelfPitch + AdjustmentPitch; | ||
754 | - | ||
755 | - //修正angle值 | ||
756 | - if (temp_angle < -900) | ||
757 | - { | ||
758 | - angle = -900; | ||
759 | - } | ||
760 | - else if (temp_angle > 0) | ||
761 | - { | ||
762 | - angle = 0; | ||
763 | - } | ||
764 | - else | ||
765 | - { | ||
766 | - angle = temp_angle; | ||
767 | - } | ||
768 | - | ||
769 | - Gimbal_RealPitchAngle = temp_angle; | ||
770 | - | ||
771 | - //发送到控制云台函数 | ||
772 | - Gimbal_V3S_U3_set_angle(temp_angle); | ||
773 | - | ||
774 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
775 | - } | ||
776 | - else if (DEVICE_VERSION == TF_A1) | ||
777 | - { | ||
778 | - //叠加飞机角度和微调角度 | ||
779 | - temp_angle = angle - Gimbal_UavSelfPitch + Get_V3S_TFA1_motor_precise_adjustment_pitch(); | ||
780 | - | ||
781 | - //修正angle值 | ||
782 | - if (temp_angle < -900) | ||
783 | - { | ||
784 | - angle = -900; | ||
785 | - } | ||
786 | - else if (temp_angle > 0) | ||
787 | - { | ||
788 | - angle = 0; | ||
789 | - } | ||
790 | - else | ||
791 | - { | ||
792 | - angle = temp_angle; | ||
793 | - } | ||
794 | - | ||
795 | - Gimbal_RealPitchAngle = temp_angle; | ||
796 | - | ||
797 | - //发送到V3S_TFA1控制云台函数 | ||
798 | - Gimbal_V3S_TFA1_set_angle(temp_angle); | ||
799 | - | ||
800 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
801 | - } | ||
802 | - else if (DEVICE_VERSION == JZ_H1T) | ||
803 | - { | ||
804 | - temp_angle = angle; | ||
805 | - Gimbal_RealPitchAngle = temp_angle; | ||
806 | - | ||
807 | - Gimbal_V3S_H1T_set_PitchAngle(temp_angle); | ||
808 | - } | ||
809 | - else if (DEVICE_VERSION == JZ_C1) | ||
810 | - { | ||
811 | - JZSDK_LOG_INFO("C1相机云台变化"); | ||
812 | - } | ||
813 | - | ||
814 | - | ||
815 | -} | ||
816 | - | ||
817 | - | ||
818 | -/************************** | ||
819 | - * | ||
820 | - * | ||
821 | - * 云台角度发送线程 | ||
822 | - * | ||
823 | - * | ||
824 | - * ***************************/ | ||
825 | -static void *Gimbal_SendAngleTask(void *arg) | ||
826 | -{ | ||
827 | - int angle = 0; | ||
828 | - int UAV_self_angle; | ||
829 | - int PitchFineTuning; | ||
830 | - | ||
831 | - JZSDK_LOG_DEBUG("云台角度发送初始化完成"); | ||
832 | - | ||
833 | - int test_value =0; | ||
834 | - | ||
835 | - while (1) | ||
836 | - { | ||
837 | - if (Gimbal_PitchAngle != angle //云台角度发生了变化 | ||
838 | - || Gimbal_UavSelfPitch != UAV_self_angle //飞机自身角度发生了变化 | ||
839 | - || Gimbal_PitchFineTuning != PitchFineTuning //微调角度发生了变化 | ||
840 | - ) | ||
841 | - { | ||
842 | - angle = Gimbal_PitchAngle; | ||
843 | - UAV_self_angle = Gimbal_UavSelfPitch; | ||
844 | - PitchFineTuning = Gimbal_PitchFineTuning; | ||
845 | - Gimbal_Set_RealPitchAngle(angle); | ||
846 | - } | ||
847 | - | ||
848 | - delayMs(6); | ||
849 | - } | ||
850 | -} | ||
851 | - | ||
852 | -static int Gimbal_SendAngleTask_Init() | ||
853 | -{ | ||
854 | - pthread_t WriteDataTask; | ||
855 | - pthread_attr_t task_attribute; //线程属性 | ||
856 | - pthread_attr_init(&task_attribute); //初始化线程属性 | ||
857 | - pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | ||
858 | - int opus_Protection = pthread_create(&WriteDataTask,&task_attribute,Gimbal_SendAngleTask,NULL); //线程 | ||
859 | - if(opus_Protection != 0) | ||
860 | - { | ||
861 | - JZSDK_LOG_ERROR("创建控件写入线程失败!"); | ||
862 | - return -1; | ||
863 | - } | ||
864 | - | ||
865 | - JZSDK_LOG_INFO("MODULE_GIMBAL_INIT_COMPLETE"); | ||
866 | -} |
1 | +#include <stdio.h> | ||
2 | +#include "JZsdkLib.h" | ||
3 | + | ||
4 | +#include "./MotorFineTuning.h" | ||
5 | + | ||
6 | +#define MOTOR_FILE_PATH "/root/motor" | ||
7 | + | ||
8 | +/************************ | ||
9 | + * | ||
10 | + * 云台微调初始化 | ||
11 | + * | ||
12 | + * | ||
13 | + * *************************/ | ||
14 | +T_JZsdkReturnCode MotorFineTuning_Init(int *pitch, int *yaw, int *roll) | ||
15 | +{ | ||
16 | + Read_MotorFineTuning_Pitch(pitch); | ||
17 | + | ||
18 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
19 | +} | ||
20 | + | ||
21 | + | ||
22 | +/************************************************************************************************************ | ||
23 | + * | ||
24 | + * pitch轴 | ||
25 | + * | ||
26 | + * | ||
27 | +*/ | ||
28 | + | ||
29 | +/******* | ||
30 | + * | ||
31 | + * pitch轴微调值的读取 | ||
32 | + * | ||
33 | + * | ||
34 | + * ************/ | ||
35 | +T_JZsdkReturnCode Read_MotorFineTuning_Pitch(int *value) | ||
36 | +{ | ||
37 | + FILE *motor_file = NULL; | ||
38 | + | ||
39 | + int MotorFineTuningPitch = 0; | ||
40 | + motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
41 | + if (motor_file == NULL) | ||
42 | + { | ||
43 | + motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
44 | + if (motor_file == NULL) | ||
45 | + { | ||
46 | + *value = 0; | ||
47 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
48 | + } | ||
49 | + } | ||
50 | + else | ||
51 | + { | ||
52 | + int ret = fseek(motor_file, 0, SEEK_SET); | ||
53 | + if (ret != 0) | ||
54 | + { | ||
55 | + printf("Seek log count file error, ret: %d.\r\n", ret); | ||
56 | + } | ||
57 | + | ||
58 | + ret = fread((int *) &MotorFineTuningPitch, 1, sizeof(int), motor_file); | ||
59 | + if (ret != sizeof(int)) | ||
60 | + { | ||
61 | + printf("Read motor weitiao error.\r\n"); | ||
62 | + *value = 0; | ||
63 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
64 | + } | ||
65 | + else | ||
66 | + { | ||
67 | + printf("Read motor weitiao=%d\n",MotorFineTuningPitch); | ||
68 | + *value = 0; | ||
69 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
70 | + } | ||
71 | + } | ||
72 | + | ||
73 | + if (motor_file != NULL) | ||
74 | + { | ||
75 | + fclose(motor_file); | ||
76 | + } | ||
77 | + | ||
78 | + *value = MotorFineTuningPitch; | ||
79 | + | ||
80 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
81 | +} | ||
82 | + | ||
83 | + | ||
84 | +/******* | ||
85 | + * | ||
86 | + * pitch轴微调值的写入 | ||
87 | + * | ||
88 | + * | ||
89 | + * ************/ | ||
90 | +T_JZsdkReturnCode MotorFineTuning_WritePitch(int Pitch) | ||
91 | +{ | ||
92 | + //写入文件 | ||
93 | + FILE *motor_file; | ||
94 | + motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
95 | + if (motor_file == NULL) | ||
96 | + { | ||
97 | + return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER; | ||
98 | + } | ||
99 | + | ||
100 | + int ret = fwrite((int *) &Pitch, 1, sizeof(unsigned int),motor_file); | ||
101 | + if (ret != sizeof(unsigned int)) | ||
102 | + { | ||
103 | + JZSDK_LOG_ERROR("MotorFineTuning_WritePitch error."); | ||
104 | + } | ||
105 | + else | ||
106 | + { | ||
107 | + JZSDK_LOG_DEBUG("MotorFineTuning_WritePitch=%d\n",Pitch); | ||
108 | + } | ||
109 | + | ||
110 | + fclose(motor_file); | ||
111 | + | ||
112 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
113 | +} | ||
114 | + |
1 | +/* | ||
2 | + * @Author: ookk303 | ||
3 | + * @Date: 2024-08-28 14:58:07 | ||
4 | + * @LastEditors: Do not edit | ||
5 | + * @LastEditTime: 2024-08-28 14:58:27 | ||
6 | + * @Description: | ||
7 | + * @FilePath: \JZSDK_Linux\Module\Gimbal\Gimbal_MotorFineTuning\MotorFineTuning.h | ||
8 | + */ | ||
1 | /** | 9 | /** |
2 | ******************************************************************** | 10 | ******************************************************************** |
3 | - * @file GIMBAL_V3S_H10T_H.h | ||
4 | - * v3s板子的h10t云台头文件 | 11 | + * @file MotorFineTuning.h |
12 | + * MotorFineTuning.h 的头文件 | ||
5 | * | 13 | * |
6 | ********************************************************************* | 14 | ********************************************************************* |
7 | */ | 15 | */ |
8 | 16 | ||
9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 17 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
10 | -#ifndef GIMBAL_V3S_H10T_H | ||
11 | -#define GIMBAL_V3S_H10T_H | 18 | +#ifndef MOTORFINE_TUNING_H |
19 | +#define MOTORFINE_TUNING_H | ||
12 | 20 | ||
13 | /* Includes ------------------------------------------------------------------*/ | 21 | /* Includes ------------------------------------------------------------------*/ |
14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 22 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
@@ -23,12 +31,9 @@ extern "C" { | @@ -23,12 +31,9 @@ extern "C" { | ||
23 | /* Exported types ------------------------------------------------------------*/ | 31 | /* Exported types ------------------------------------------------------------*/ |
24 | 32 | ||
25 | /* Exported functions --------------------------------------------------------*/ | 33 | /* Exported functions --------------------------------------------------------*/ |
26 | -int Gimbal_V3S_H10T_set_angle(int angle); | ||
27 | -void Gimbal_V3S_H10T_init_motor(void); | ||
28 | -int Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
29 | -T_JZsdkReturnCode Gimbal_V3S_H10T_set_PitchFineTuning(int Pitch); | ||
30 | - | ||
31 | - | 34 | +T_JZsdkReturnCode Read_MotorFineTuning_Pitch(int *value); |
35 | +T_JZsdkReturnCode MotorFineTuning_Init(int *pitch, int *yaw, int *roll); | ||
36 | +T_JZsdkReturnCode MotorFineTuning_WritePitch(int Pitch); | ||
32 | 37 | ||
33 | #ifdef __cplusplus | 38 | #ifdef __cplusplus |
34 | } | 39 | } |
Module/Gimbal/Gimbal_Param.h
0 → 100644
1 | +/** | ||
2 | + ******************************************************************** | ||
3 | + * @file Gimbal_Param.h | ||
4 | + * Gimbal_Param.h的头文件 | ||
5 | + * | ||
6 | + ********************************************************************* | ||
7 | + */ | ||
8 | + | ||
9 | +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | +#ifndef GIMBAL_PARAM_H | ||
11 | +#define GIMBAL_PARAM_H | ||
12 | + | ||
13 | +/* Includes ------------------------------------------------------------------*/ | ||
14 | +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
15 | +#include "BaseConfig.h" | ||
16 | + | ||
17 | +#ifdef __cplusplus | ||
18 | +extern "C" { | ||
19 | +#endif | ||
20 | + | ||
21 | +/* Exported constants --------------------------------------------------------*/ | ||
22 | +/* 常亮定义*/ | ||
23 | + | ||
24 | +/* Exported types ------------------------------------------------------------*/ | ||
25 | + | ||
26 | +/* Exported functions --------------------------------------------------------*/ | ||
27 | + | ||
28 | +#if DEVICE_VERSION == JZ_C1 | ||
29 | + | ||
30 | +#elif DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T | ||
31 | + | ||
32 | +#define PITCH_PWM_MAX 2000 | ||
33 | +#define PITCH_PWM_MIN 1000 | ||
34 | +#define MAX_PITCH 0 | ||
35 | +#define MIN_PITCH -900 | ||
36 | + | ||
37 | +#elif DEVICE_VERSION == JZ_H10 | ||
38 | + | ||
39 | +#define PITCH_PWM_MAX 0 | ||
40 | +#define PITCH_PWM_MIN 0 | ||
41 | +#define MAX_PITCH 0 | ||
42 | +#define MIN_PITCH -600 | ||
43 | + | ||
44 | +#elif DEVICE_VERSION == JZ_H10T | ||
45 | + | ||
46 | +#define PITCH_PWM_MAX 820 | ||
47 | +#define PITCH_PWM_MIN 700 | ||
48 | +#define MAX_PITCH 0 | ||
49 | +#define MIN_PITCH -600 | ||
50 | + | ||
51 | +#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \ | ||
52 | + || DEVICE_VERSION == TF_A1 | ||
53 | + | ||
54 | +#define PITCH_PWM_MAX 0 | ||
55 | +#define PITCH_PWM_MIN 0 | ||
56 | +#define MAX_PITCH 0 | ||
57 | +#define MIN_PITCH -900 | ||
58 | + | ||
59 | +#elif DEVICE_VERSION == JZ_H1T | ||
60 | + | ||
61 | +#define PITCH_PWM_MAX 0 | ||
62 | +#define PITCH_PWM_MIN 0 | ||
63 | +#define MAX_PITCH 300 | ||
64 | +#define MIN_PITCH -900 | ||
65 | + | ||
66 | +#else | ||
67 | + | ||
68 | +#define PITCH_PWM_MAX 0 | ||
69 | +#define PITCH_PWM_MIN 0 | ||
70 | +#define MAX_PITCH 0 | ||
71 | +#define MIN_PITCH 0 | ||
72 | +#endif | ||
73 | + | ||
74 | + | ||
75 | +#ifdef __cplusplus | ||
76 | +} | ||
77 | +#endif | ||
78 | + | ||
79 | +#endif |
@@ -8,6 +8,8 @@ | @@ -8,6 +8,8 @@ | ||
8 | #include <termios.h> | 8 | #include <termios.h> |
9 | #include <sys/time.h> | 9 | #include <sys/time.h> |
10 | 10 | ||
11 | +#include "JZsdkLib.h" | ||
12 | + | ||
11 | static void *UartDeal_rece(void *arg); | 13 | static void *UartDeal_rece(void *arg); |
12 | static void *UartDeal_send(void *arg); | 14 | static void *UartDeal_send(void *arg); |
13 | static int Gimbal_Uart_fd = 0; | 15 | static int Gimbal_Uart_fd = 0; |
@@ -17,7 +19,7 @@ static int Gimbal_Uart_fd = 0; | @@ -17,7 +19,7 @@ static int Gimbal_Uart_fd = 0; | ||
17 | 创建一个接收Gimbal的接收线程 | 19 | 创建一个接收Gimbal的接收线程 |
18 | 20 | ||
19 | ******************************************************************/ | 21 | ******************************************************************/ |
20 | -int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd) | 22 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartReceive_Init(int Uart_fd) |
21 | { | 23 | { |
22 | int ret = 0; | 24 | int ret = 0; |
23 | pthread_t Uart_rece_task; | 25 | pthread_t Uart_rece_task; |
@@ -30,10 +32,12 @@ int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd) | @@ -30,10 +32,12 @@ int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd) | ||
30 | ret = pthread_create(&Uart_rece_task,&task_attribute,UartDeal_rece,NULL); //串口接收线程 | 32 | ret = pthread_create(&Uart_rece_task,&task_attribute,UartDeal_rece,NULL); //串口接收线程 |
31 | if(ret != 0) | 33 | if(ret != 0) |
32 | { | 34 | { |
33 | - printf("创建展架串口接收线程失败!\n"); | 35 | + JZSDK_LOG_ERROR("创建展架串口接收线程失败!\n"); |
36 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
34 | } | 37 | } |
35 | else{ | 38 | else{ |
36 | - printf("创建展架串口接收线程成功!\n"); | 39 | + JZSDK_LOG_DEBUG("创建展架串口接收线程成功!\n"); |
40 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
37 | } | 41 | } |
38 | } | 42 | } |
39 | 43 | ||
@@ -82,9 +86,41 @@ static void *UartDeal_rece(void *arg) | @@ -82,9 +86,41 @@ static void *UartDeal_rece(void *arg) | ||
82 | * 发送函数 | 86 | * 发送函数 |
83 | * | 87 | * |
84 | * ****************/ | 88 | * ****************/ |
85 | -int Gimbal_H3_H150ST_UartDeal_UartSend(unsigned char *send, int num) | 89 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartDeal_UartSend(unsigned char *send, int num) |
86 | { | 90 | { |
87 | 91 | ||
88 | write(Gimbal_Uart_fd,send, num); | 92 | write(Gimbal_Uart_fd,send, num); |
89 | - return 0; | 93 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
94 | +} | ||
95 | + | ||
96 | + | ||
97 | +/********** | ||
98 | + * | ||
99 | + * 发送任务函数 | ||
100 | + * | ||
101 | + * ***********/ | ||
102 | +static void JZsdk_Uart_UartSend_Task(void *data) | ||
103 | +{ | ||
104 | + Gimbal_SpecialUart_UartDeal_UartSend(data, 4); | ||
105 | +} | ||
106 | + | ||
107 | +/**************** | ||
108 | + * | ||
109 | + * | ||
110 | + * 发送函数 | ||
111 | + * | ||
112 | + * ****************/ | ||
113 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartSend(unsigned char *data, int num) | ||
114 | +{ | ||
115 | + unsigned char *str = (unsigned char*)malloc(sizeof(data)); | ||
116 | + memcpy(str, data, sizeof(data)); | ||
117 | + | ||
118 | + T_JZsdkReturnCode ret = TaskManagement_SubmitTask(JZsdk_Uart_UartSend_Task, (void *)str); | ||
119 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
120 | + { | ||
121 | + free(str); | ||
122 | + return ret; | ||
123 | + } | ||
124 | + | ||
125 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
90 | } | 126 | } |
@@ -23,8 +23,8 @@ extern "C" { | @@ -23,8 +23,8 @@ extern "C" { | ||
23 | /* Exported types ------------------------------------------------------------*/ | 23 | /* Exported types ------------------------------------------------------------*/ |
24 | 24 | ||
25 | /* Exported functions --------------------------------------------------------*/ | 25 | /* Exported functions --------------------------------------------------------*/ |
26 | -int Gimbal_H3_H150ST_UartDeal_Receive(int Uart_fd); | ||
27 | -int Gimbal_H3_H150ST_UartDeal_UartSend(unsigned char *send, int num); | 26 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartReceive_Init(int Uart_fd); |
27 | +T_JZsdkReturnCode Gimbal_SpecialUart_UartSend(unsigned char *send, int num); | ||
28 | 28 | ||
29 | #ifdef __cplusplus | 29 | #ifdef __cplusplus |
30 | } | 30 | } |
Module/Gimbal/Gimbal_V3S/Gimbal_V3S.h
已删除
100644 → 0
1 | -/** | ||
2 | - ******************************************************************** | ||
3 | - * @file GIMBAL_H3.h | ||
4 | - * GIMBAL_H3的头文件 | ||
5 | - * | ||
6 | - ********************************************************************* | ||
7 | - */ | ||
8 | - | ||
9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | -#ifndef GIMBAL_V3S_H | ||
11 | -#define GIMBAL_V3S_H | ||
12 | - | ||
13 | -/* Includes ------------------------------------------------------------------*/ | ||
14 | - | ||
15 | -#ifdef __cplusplus | ||
16 | -extern "C" { | ||
17 | -#endif | ||
18 | - | ||
19 | -/* Exported constants --------------------------------------------------------*/ | ||
20 | -/* 常亮定义*/ | ||
21 | -#include "Gimbal_V3S_H10T/Gimbal_V3S_H10T.h" | ||
22 | -#include "Gimbal_V3S_U3/Gimbal_V3S_U3.h" | ||
23 | -#include "Gimbal_V3S_H1T/Gimbal_V3S_H1T.h" | ||
24 | -#include "Gimbal_V3S_TFA1/Gimbal_V3S_TFA1.h" | ||
25 | - | ||
26 | -/* Exported types ------------------------------------------------------------*/ | ||
27 | - | ||
28 | -/* Exported functions --------------------------------------------------------*/ | ||
29 | - | ||
30 | - | ||
31 | -#ifdef __cplusplus | ||
32 | -} | ||
33 | -#endif | ||
34 | - | ||
35 | -#endif |
1 | -/* Includes ------------------------------------------------------------------*/ | ||
2 | -#include <stdio.h> | ||
3 | -#include <pthread.h> | ||
4 | -#include <stdlib.h> | ||
5 | - | ||
6 | -#include "./Gimbal_V3S_H10T.h" | ||
7 | - | ||
8 | -#include "ircut.h" | ||
9 | - | ||
10 | -/* Private constants ---------------------------------------------------------*/ | ||
11 | -#define MOTOR_FILE_PATH "/root/motor" | ||
12 | -#define V3S_H10T_angle_PWM_MIN 700 | ||
13 | -#define V3S_H10T_angle_PWM_MAX 820 | ||
14 | - | ||
15 | -#define V3S_H10T_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
16 | - | ||
17 | -/* Private types -------------------------------------------------------------*/ | ||
18 | - | ||
19 | -/* Private functions declaration ---------------------------------------------*/ | ||
20 | - | ||
21 | -static int V3S_H10T_motor_precise_adjustment_pitch =0;//默认微调值为0 | ||
22 | - | ||
23 | -static void *Gimbal_V3S_H10T_Motor_control(void *arg); | ||
24 | -static int V3S_H10T_Read_MotorAdjustmentPitch(void); | ||
25 | -static void V3S_H10T_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
26 | - | ||
27 | -int Gimbal_V3S_H10T_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
28 | -{ | ||
29 | - *AdjustmentPitch = V3S_H10T_motor_precise_adjustment_pitch; | ||
30 | -} | ||
31 | - | ||
32 | -void Gimbal_V3S_H10T_init_motor(void) | ||
33 | -{ | ||
34 | - V3S_H10T_motor_precise_adjustment_pitch = V3S_H10T_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
35 | - Gimbal_V3S_H10T_set_angle(0); | ||
36 | -} | ||
37 | - | ||
38 | - | ||
39 | -int Gimbal_V3S_H10T_set_angle(int angle) | ||
40 | -{ | ||
41 | - //传入的角度 -600~0 | ||
42 | - int PWM_num = 0; | ||
43 | - | ||
44 | - printf("V3S_H10T_angle:%d\n",angle); | ||
45 | - | ||
46 | - if(angle >= 0 ) | ||
47 | - { | ||
48 | - angle = 0; | ||
49 | - } | ||
50 | - else if(angle <= -600) | ||
51 | - { | ||
52 | - angle = -600; | ||
53 | - } | ||
54 | - | ||
55 | - else if( (angle > -600) && (angle < 0) ) | ||
56 | - { | ||
57 | - //angle不变 | ||
58 | - } | ||
59 | - | ||
60 | - //因为PWM写的时候是按90度写的,所以分母是900 | ||
61 | - PWM_num = ( angle * (V3S_H10T_angle_PWM_MAX-V3S_H10T_angle_PWM_MIN) /900 ) + V3S_H10T_angle_PWM_MAX; | ||
62 | - | ||
63 | - if (PWM_num > V3S_H10T_angle_PWM_MAX) | ||
64 | - { | ||
65 | - PWM_num = V3S_H10T_angle_PWM_MAX; | ||
66 | - } | ||
67 | - if (PWM_num < V3S_H10T_angle_PWM_MIN) | ||
68 | - { | ||
69 | - PWM_num = V3S_H10T_angle_PWM_MIN; | ||
70 | - } | ||
71 | - | ||
72 | - Ircut_PWM_control(PWM_num); | ||
73 | -} | ||
74 | - | ||
75 | - | ||
76 | -//云台微调 | ||
77 | -T_JZsdkReturnCode Gimbal_V3S_H10T_set_PitchFineTuning(int Pitch) | ||
78 | -{ | ||
79 | - //微调的角度值 提高Pitch | ||
80 | - V3S_H10T_motor_precise_adjustment_pitch += Pitch; | ||
81 | - | ||
82 | - //写入本地文件 | ||
83 | - V3S_H10T_Write_MotorAdjustmentPitch(V3S_H10T_motor_precise_adjustment_pitch); | ||
84 | - | ||
85 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
86 | - | ||
87 | -} | ||
88 | - | ||
89 | -//从文件中读出电机微调值 | ||
90 | -static int V3S_H10T_Read_MotorAdjustmentPitch(void) | ||
91 | -{ | ||
92 | - FILE *motor_file; | ||
93 | - int MotorAdjustmentPitch = 0; | ||
94 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
95 | - if (motor_file == NULL) | ||
96 | - { | ||
97 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
98 | - if (motor_file == NULL) | ||
99 | - { | ||
100 | - return 0; | ||
101 | - } | ||
102 | - } | ||
103 | - else | ||
104 | - { | ||
105 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
106 | - if (ret != 0) { | ||
107 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
108 | - } | ||
109 | - | ||
110 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
111 | - if (ret != sizeof(unsigned int)) { | ||
112 | - printf("Read motor weitiao error.\r\n"); | ||
113 | - } | ||
114 | - else{ | ||
115 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
116 | - } | ||
117 | - } | ||
118 | - fclose(motor_file); | ||
119 | - | ||
120 | - return MotorAdjustmentPitch; | ||
121 | -} | ||
122 | - | ||
123 | -//写入电机微调值刀文件中 | ||
124 | -static void V3S_H10T_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
125 | -{ | ||
126 | - //写入文件 | ||
127 | - FILE *motor_file; | ||
128 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
129 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
130 | - if (ret != sizeof(unsigned int)) { | ||
131 | - printf("Write motor weitiao error.\r\n"); | ||
132 | - } | ||
133 | - else{ | ||
134 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
135 | - } | ||
136 | - | ||
137 | - fclose(motor_file); | ||
138 | -} | ||
139 | - | ||
140 | - |
1 | -/* Includes ------------------------------------------------------------------*/ | ||
2 | -#include <stdio.h> | ||
3 | -#include <pthread.h> | ||
4 | -#include <stdlib.h> | ||
5 | - | ||
6 | -#include "./Gimbal_V3S_H1T.h" | ||
7 | -#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
8 | - | ||
9 | -#include "ircut.h" | ||
10 | -#include "BaseConfig.h" | ||
11 | - | ||
12 | -/* Private constants ---------------------------------------------------------*/ | ||
13 | - | ||
14 | - | ||
15 | -/* Private types -------------------------------------------------------------*/ | ||
16 | - | ||
17 | -/* Private functions declaration ---------------------------------------------*/ | ||
18 | - | ||
19 | -/********************* | ||
20 | - * | ||
21 | - * | ||
22 | - * 用于控制T60s的云台 | ||
23 | - * | ||
24 | - * | ||
25 | - * *************/ | ||
26 | - | ||
27 | -static void *Gimbal_V3S_H1T_Motor_control(void *arg); | ||
28 | -static int V3S_H1T_Read_MotorAdjustmentPitch(void); | ||
29 | -static void V3S_H1T_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
30 | - | ||
31 | -void Gimbal_V3S_H1T_init_motor(void) | ||
32 | -{ | ||
33 | - // 不用去特地初始化t60的云台 | ||
34 | -} | ||
35 | - | ||
36 | - | ||
37 | -int Gimbal_V3S_H1T_set_PitchAngle(int angle) | ||
38 | -{ | ||
39 | - printf("V3S_H1T_angle:%d\n",angle); | ||
40 | - | ||
41 | - if(angle >= 300 ) | ||
42 | - { | ||
43 | - angle = 300; | ||
44 | - } | ||
45 | - else if(angle <= -900) | ||
46 | - { | ||
47 | - angle = -900; | ||
48 | - } | ||
49 | - | ||
50 | - else if( (angle > -900) && (angle < 0) ) | ||
51 | - { | ||
52 | - //angle不变 | ||
53 | - } | ||
54 | - | ||
55 | - //发送角度给串口1 | ||
56 | - JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_1, angle); | ||
57 | - | ||
58 | -} | ||
59 | - | ||
60 | -//微调云台 | ||
61 | -T_JZsdkReturnCode Gimbal_V3S_H1T_set_PitchFineTuning(int PitchFineTuning) | ||
62 | -{ | ||
63 | - JZsdk_Uart_Send_SetGimbalFineTuningPitch(UART_DEV_1, PitchFineTuning); | ||
64 | - | ||
65 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
66 | -} | ||
67 | - | ||
68 | -//查询云台微调值 | ||
69 | -int Gimbal_V3S_H1T_CheckStatus_GimbalFineTuning() | ||
70 | -{ | ||
71 | - JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(UART_DEV_1, 0); | ||
72 | -} | ||
73 | - | ||
74 | -//设置云台联动 | ||
75 | -int Gimbal_V3S_H1T_Set_GimbalLinkageControl(int value) | ||
76 | -{ | ||
77 | - JZsdk_Uart_Send_Set_GimbalLinkageControl(UART_DEV_1, 0, value); | ||
78 | -} | ||
79 | - | ||
80 | -//刷新云台联动值 | ||
81 | -int Gimbal_V3S_H1T_CheckStatus_GimbalLinkage() | ||
82 | -{ | ||
83 | - JZsdk_Uart_Send_CheckStatus_GimbalLinkage(UART_DEV_1, 0); | ||
84 | -} | ||
85 | - | ||
86 | -//查询云台值 | ||
87 | -T_JZsdkReturnCode Gimbal_V3S_H1T_CheckStatus_GimbalAngle() | ||
88 | -{ | ||
89 | - JZsdk_Uart_Send_CheckStatus_GimbalAngle(UART_DEV_1, 0); | ||
90 | -} |
1 | -/** | ||
2 | - ******************************************************************** | ||
3 | - * @file Gimbal_V3S_H1T.h | ||
4 | - * v3s板子的h1t云台头文件 | ||
5 | - * | ||
6 | - ********************************************************************* | ||
7 | - */ | ||
8 | - | ||
9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | -#ifndef GIMBAL_V3S_H1T_H | ||
11 | -#define GIMBAL_V3S_H1T_H | ||
12 | - | ||
13 | -/* Includes ------------------------------------------------------------------*/ | ||
14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
15 | - | ||
16 | -#ifdef __cplusplus | ||
17 | -extern "C" { | ||
18 | -#endif | ||
19 | - | ||
20 | -/* Exported constants --------------------------------------------------------*/ | ||
21 | -/* 常亮定义*/ | ||
22 | - | ||
23 | -/* Exported types ------------------------------------------------------------*/ | ||
24 | - | ||
25 | -/* Exported functions --------------------------------------------------------*/ | ||
26 | -void Gimbal_V3S_H1T_init_motor(void); | ||
27 | -int Gimbal_V3S_H1T_set_PitchAngle(int angle); | ||
28 | -T_JZsdkReturnCode Gimbal_V3S_H1T_set_PitchFineTuning(int PitchFineTuning); | ||
29 | -int Gimbal_V3S_H1T_CheckStatus_GimbalFineTuning(); | ||
30 | -int Gimbal_V3S_H1T_Set_GimbalLinkageControl(int value); | ||
31 | -int Gimbal_V3S_H1T_CheckStatus_GimbalLinkage(); | ||
32 | -T_JZsdkReturnCode Gimbal_V3S_H1T_CheckStatus_GimbalAngle(); | ||
33 | - | ||
34 | - | ||
35 | - | ||
36 | -#ifdef __cplusplus | ||
37 | -} | ||
38 | -#endif | ||
39 | - | ||
40 | -#endif |
1 | -/* Includes ------------------------------------------------------------------*/ | ||
2 | -#include <stdio.h> | ||
3 | -#include <pthread.h> | ||
4 | -#include <stdlib.h> | ||
5 | - | ||
6 | -#include "./Gimbal_V3S_TFA1.h" | ||
7 | -#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
8 | - | ||
9 | -#include "ircut.h" | ||
10 | -#include "BaseConfig.h" | ||
11 | - | ||
12 | -/* Private constants ---------------------------------------------------------*/ | ||
13 | -#define MOTOR_FILE_PATH "/root/motor" | ||
14 | - | ||
15 | -#define V3S_TFA1_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
16 | - | ||
17 | -/* Private types -------------------------------------------------------------*/ | ||
18 | - | ||
19 | -/* Private functions declaration ---------------------------------------------*/ | ||
20 | - | ||
21 | -static int V3S_TFA1_motor_precise_adjustment_pitch =0;//默认微调值为0 | ||
22 | - | ||
23 | -static int V3S_TFA1_Read_MotorAdjustmentPitch(void); | ||
24 | -static void V3S_TFA1_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
25 | - | ||
26 | -void Gimbal_V3S_TFA1_init_motor(void) | ||
27 | -{ | ||
28 | - V3S_TFA1_motor_precise_adjustment_pitch = V3S_TFA1_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
29 | - Gimbal_V3S_TFA1_set_angle(0); | ||
30 | -} | ||
31 | - | ||
32 | - | ||
33 | -static int Gimbal_TFA1_sendAngle(int angle) | ||
34 | -{ | ||
35 | - if(angle >= 0 ) | ||
36 | - { | ||
37 | - angle = 0; | ||
38 | - } | ||
39 | - else if(angle <= -900) | ||
40 | - { | ||
41 | - angle = -900; | ||
42 | - } | ||
43 | - | ||
44 | - else if( (angle > -900) && (angle < 0) ) | ||
45 | - { | ||
46 | - //angle不变 | ||
47 | - } | ||
48 | - | ||
49 | - //发送角度给串口2 | ||
50 | - JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_2, angle); | ||
51 | -} | ||
52 | - | ||
53 | -int Gimbal_V3S_TFA1_set_angle(int angle) | ||
54 | -{ | ||
55 | - Gimbal_TFA1_sendAngle(angle); | ||
56 | -} | ||
57 | - | ||
58 | - | ||
59 | -//云台微调 | ||
60 | -T_JZsdkReturnCode Gimbal_V3S_TFA1_set_PitchFineTuning(int Pitch) | ||
61 | -{ | ||
62 | - //微调的角度值 提高Pitch | ||
63 | - V3S_TFA1_motor_precise_adjustment_pitch += Pitch; | ||
64 | - | ||
65 | - //写入本地文件 | ||
66 | - V3S_TFA1_Write_MotorAdjustmentPitch(V3S_TFA1_motor_precise_adjustment_pitch); | ||
67 | - | ||
68 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
69 | - | ||
70 | -} | ||
71 | - | ||
72 | -//从文件中读出电机微调值 | ||
73 | -static int V3S_TFA1_Read_MotorAdjustmentPitch(void) | ||
74 | -{ | ||
75 | - FILE *motor_file; | ||
76 | - int MotorAdjustmentPitch = 0; | ||
77 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
78 | - if (motor_file == NULL) | ||
79 | - { | ||
80 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
81 | - if (motor_file == NULL) | ||
82 | - { | ||
83 | - return 0; | ||
84 | - } | ||
85 | - } | ||
86 | - else | ||
87 | - { | ||
88 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
89 | - if (ret != 0) { | ||
90 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
91 | - } | ||
92 | - | ||
93 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
94 | - if (ret != sizeof(unsigned int)) { | ||
95 | - printf("Read motor weitiao error.\r\n"); | ||
96 | - } | ||
97 | - else{ | ||
98 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
99 | - } | ||
100 | - } | ||
101 | - fclose(motor_file); | ||
102 | - | ||
103 | - return MotorAdjustmentPitch; | ||
104 | -} | ||
105 | - | ||
106 | -//写入电机微调值刀文件中 | ||
107 | -static void V3S_TFA1_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
108 | -{ | ||
109 | - //写入文件 | ||
110 | - FILE *motor_file; | ||
111 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
112 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
113 | - if (ret != sizeof(unsigned int)) { | ||
114 | - printf("Write motor weitiao error.\r\n"); | ||
115 | - } | ||
116 | - else{ | ||
117 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
118 | - } | ||
119 | - | ||
120 | - fclose(motor_file); | ||
121 | -} | ||
122 | - | ||
123 | -int Gimbal_V3S_TFA1_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
124 | -{ | ||
125 | - *AdjustmentPitch = V3S_TFA1_motor_precise_adjustment_pitch; | ||
126 | -} | ||
127 | - | ||
128 | -//TFA1范围 | ||
129 | -T_JZsdkReturnCode V3S_TFA1_SetGimbalRange(int Range) | ||
130 | -{ | ||
131 | - if (Range == 0xFF) | ||
132 | - { | ||
133 | - printf("设置TFA1云台最大值\n"); | ||
134 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
135 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
136 | - } | ||
137 | - else if (Range == 0x00) | ||
138 | - { | ||
139 | - printf("设置TFA1云台最小值\n"); | ||
140 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
141 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
142 | - } | ||
143 | - | ||
144 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
145 | -} | ||
146 | - | ||
147 | -int Get_V3S_TFA1_motor_precise_adjustment_pitch() | ||
148 | -{ | ||
149 | - return V3S_TFA1_motor_precise_adjustment_pitch; | ||
150 | -} |
1 | -/** | ||
2 | - ******************************************************************** | ||
3 | - * @file Gimbal_V3S_TFA1.h | ||
4 | - * v3s板子的A1云台头文件 | ||
5 | - * | ||
6 | - ********************************************************************* | ||
7 | - */ | ||
8 | - | ||
9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | -#ifndef GIMBAL_V3S_TFA1_H | ||
11 | -#define GIMBAL_V3S_TFA1_H | ||
12 | - | ||
13 | -/* Includes ------------------------------------------------------------------*/ | ||
14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
15 | - | ||
16 | -#ifdef __cplusplus | ||
17 | -extern "C" { | ||
18 | -#endif | ||
19 | - | ||
20 | -/* Exported constants --------------------------------------------------------*/ | ||
21 | -/* 常亮定义*/ | ||
22 | - | ||
23 | -/* Exported types ------------------------------------------------------------*/ | ||
24 | - | ||
25 | -/* Exported functions --------------------------------------------------------*/ | ||
26 | -void Gimbal_V3S_TFA1_init_motor(void); | ||
27 | -int Gimbal_V3S_TFA1_set_angle(int angle); | ||
28 | -T_JZsdkReturnCode V3S_TFA1_SetGimbalRange(int Range); | ||
29 | -T_JZsdkReturnCode Gimbal_V3S_TFA1_set_PitchFineTuning(int Pitch); | ||
30 | -int Gimbal_V3S_TFA1_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
31 | -int Get_V3S_TFA1_motor_precise_adjustment_pitch(); | ||
32 | - | ||
33 | - | ||
34 | - | ||
35 | -#ifdef __cplusplus | ||
36 | -} | ||
37 | -#endif | ||
38 | - | ||
39 | -#endif |
1 | -/* Includes ------------------------------------------------------------------*/ | ||
2 | -#include <stdio.h> | ||
3 | -#include <pthread.h> | ||
4 | -#include <stdlib.h> | ||
5 | - | ||
6 | -#include "./Gimbal_V3S_U3.h" | ||
7 | -#include "JZsdk_uart/JZsdk_Uart_Input.h" | ||
8 | - | ||
9 | -#include "ircut.h" | ||
10 | -#include "BaseConfig.h" | ||
11 | - | ||
12 | -/* Private constants ---------------------------------------------------------*/ | ||
13 | -#define MOTOR_FILE_PATH "/root/motor" | ||
14 | - | ||
15 | -#define V3S_U3_MOTOR_ADJUSTMENT 5 //云台微调值 | ||
16 | - | ||
17 | -/* Private types -------------------------------------------------------------*/ | ||
18 | - | ||
19 | -/* Private functions declaration ---------------------------------------------*/ | ||
20 | - | ||
21 | -static int V3S_U3_motor_precise_adjustment_pitch =0;//默认微调值为0 | ||
22 | - | ||
23 | -static void *Gimbal_V3S_U3_Motor_control(void *arg); | ||
24 | -static int V3S_U3_Read_MotorAdjustmentPitch(void); | ||
25 | -static void V3S_U3_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch); | ||
26 | - | ||
27 | -void Gimbal_V3S_U3_init_motor(void) | ||
28 | -{ | ||
29 | - V3S_U3_motor_precise_adjustment_pitch = V3S_U3_Read_MotorAdjustmentPitch();//获取微调角度-读文件获取 | ||
30 | - Gimbal_V3S_U3_set_angle(0); | ||
31 | -} | ||
32 | - | ||
33 | - | ||
34 | -int Gimbal_V3S_U3_set_angle(int angle) | ||
35 | -{ | ||
36 | - //微调角度值 | ||
37 | - printf("V3S_U3_angle:%d\n",angle); | ||
38 | - | ||
39 | - if(angle >= 0 ) | ||
40 | - { | ||
41 | - angle = 0; | ||
42 | - } | ||
43 | - else if(angle <= -900) | ||
44 | - { | ||
45 | - angle = -900; | ||
46 | - } | ||
47 | - | ||
48 | - else if( (angle > -900) && (angle < 0) ) | ||
49 | - { | ||
50 | - //angle不变 | ||
51 | - } | ||
52 | - | ||
53 | - //发送角度给串口2 | ||
54 | - JZsdk_Uart_Send_SetGimbalPitch(UART_DEV_2, angle); | ||
55 | -} | ||
56 | - | ||
57 | -//云台微调 | ||
58 | -T_JZsdkReturnCode Gimbal_V3S_U3_set_PitchFineTuning(int Pitch) | ||
59 | -{ | ||
60 | - //微调的角度值 提高Pitch | ||
61 | - V3S_U3_motor_precise_adjustment_pitch += Pitch; | ||
62 | - | ||
63 | - //写入本地文件 | ||
64 | - V3S_U3_Write_MotorAdjustmentPitch(V3S_U3_motor_precise_adjustment_pitch); | ||
65 | - | ||
66 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
67 | - | ||
68 | -} | ||
69 | - | ||
70 | -//从文件中读出电机微调值 | ||
71 | -static int V3S_U3_Read_MotorAdjustmentPitch(void) | ||
72 | -{ | ||
73 | - FILE *motor_file; | ||
74 | - int MotorAdjustmentPitch = 0; | ||
75 | - motor_file = fopen(MOTOR_FILE_PATH, "rb+"); | ||
76 | - if (motor_file == NULL) | ||
77 | - { | ||
78 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
79 | - if (motor_file == NULL) | ||
80 | - { | ||
81 | - return 0; | ||
82 | - } | ||
83 | - } | ||
84 | - else | ||
85 | - { | ||
86 | - int ret = fseek(motor_file, 0, SEEK_SET); | ||
87 | - if (ret != 0) { | ||
88 | - printf("Seek log count file error, ret: %d.\r\n", ret); | ||
89 | - } | ||
90 | - | ||
91 | - ret = fread((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int), motor_file); | ||
92 | - if (ret != sizeof(unsigned int)) { | ||
93 | - printf("Read motor weitiao error.\r\n"); | ||
94 | - } | ||
95 | - else{ | ||
96 | - printf("Read motor weitiao=%d\n",MotorAdjustmentPitch); | ||
97 | - } | ||
98 | - } | ||
99 | - fclose(motor_file); | ||
100 | - | ||
101 | - return MotorAdjustmentPitch; | ||
102 | -} | ||
103 | - | ||
104 | -//写入电机微调值刀文件中 | ||
105 | -static void V3S_U3_Write_MotorAdjustmentPitch(int MotorAdjustmentPitch) | ||
106 | -{ | ||
107 | - //写入文件 | ||
108 | - FILE *motor_file; | ||
109 | - motor_file = fopen(MOTOR_FILE_PATH, "wb+"); | ||
110 | - int ret = fwrite((unsigned int *) &MotorAdjustmentPitch, 1, sizeof(unsigned int),motor_file); | ||
111 | - if (ret != sizeof(unsigned int)) { | ||
112 | - printf("Write motor weitiao error.\r\n"); | ||
113 | - } | ||
114 | - else{ | ||
115 | - printf("Write motor weitiao=%d\n",MotorAdjustmentPitch); | ||
116 | - } | ||
117 | - | ||
118 | - fclose(motor_file); | ||
119 | -} | ||
120 | - | ||
121 | -int Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(int *AdjustmentPitch) | ||
122 | -{ | ||
123 | - *AdjustmentPitch = V3S_U3_motor_precise_adjustment_pitch; | ||
124 | -} | ||
125 | - | ||
126 | -//U3范围 | ||
127 | -T_JZsdkReturnCode V3S_U3_SetGimbalRange(int Range) | ||
128 | -{ | ||
129 | - if (Range == 0xFF) | ||
130 | - { | ||
131 | - printf("设置u3云台最大值\n"); | ||
132 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
133 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
134 | - } | ||
135 | - else if (Range == 0x00) | ||
136 | - { | ||
137 | - printf("设置u3云台最小值\n"); | ||
138 | - JZsdk_Uart_Send_SetGimbalRange(UART_DEV_2, 0, Range); | ||
139 | - return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
140 | - } | ||
141 | - | ||
142 | - return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
143 | -} |
1 | -/** | ||
2 | - ******************************************************************** | ||
3 | - * @file Gimbal_V3S_U3.h | ||
4 | - * v3s板子的u3云台头文件 | ||
5 | - * | ||
6 | - ********************************************************************* | ||
7 | - */ | ||
8 | - | ||
9 | -/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | ||
10 | -#ifndef GIMBAL_V3S_U3_H | ||
11 | -#define GIMBAL_V3S_U3_H | ||
12 | - | ||
13 | -/* Includes ------------------------------------------------------------------*/ | ||
14 | -#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
15 | - | ||
16 | -#ifdef __cplusplus | ||
17 | -extern "C" { | ||
18 | -#endif | ||
19 | - | ||
20 | -/* Exported constants --------------------------------------------------------*/ | ||
21 | -/* 常亮定义*/ | ||
22 | - | ||
23 | -/* Exported types ------------------------------------------------------------*/ | ||
24 | - | ||
25 | -/* Exported functions --------------------------------------------------------*/ | ||
26 | -void Gimbal_V3S_U3_init_motor(void); | ||
27 | -int Gimbal_V3S_U3_set_angle(int angle); | ||
28 | -T_JZsdkReturnCode V3S_U3_SetGimbalRange(int Range); | ||
29 | -T_JZsdkReturnCode Gimbal_V3S_U3_set_PitchFineTuning(int Pitch); | ||
30 | -int Gimbal_V3S_U3_CheckStatus_GimbalFineTuning(int *AdjustmentPitch); | ||
31 | - | ||
32 | - | ||
33 | - | ||
34 | -#ifdef __cplusplus | ||
35 | -} | ||
36 | -#endif | ||
37 | - | ||
38 | -#endif |
@@ -56,6 +56,17 @@ T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value) | @@ -56,6 +56,17 @@ T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value) | ||
56 | { | 56 | { |
57 | JZsdk_RawBadPixelCheck_Flag = value; //原始盲点记录标志 | 57 | JZsdk_RawBadPixelCheck_Flag = value; //原始盲点记录标志 |
58 | JZsdk_GrayBadPixelCheck_flag = value; //灰度图坏点纠正标志 | 58 | JZsdk_GrayBadPixelCheck_flag = value; //灰度图坏点纠正标志 |
59 | +} | ||
60 | + | ||
61 | +//单点纠正开关 | ||
62 | +/******************** | ||
63 | + * | ||
64 | + * 该功能为一次性功能 | ||
65 | + * | ||
66 | + * | ||
67 | + * **************************/ | ||
68 | +T_JZsdkReturnCode JZsdk_CameraSPC_ResetSwitch(int value) | ||
69 | +{ | ||
59 | JZsdk_SPCCheck_flag = value; //单点纠正标志 | 70 | JZsdk_SPCCheck_flag = value; //单点纠正标志 |
60 | } | 71 | } |
61 | 72 |
@@ -54,6 +54,8 @@ typedef enum GasEnhancementColor | @@ -54,6 +54,8 @@ typedef enum GasEnhancementColor | ||
54 | T_JZsdkReturnCode JZsdk_Camera_ShutterSwitch(int value); | 54 | T_JZsdkReturnCode JZsdk_Camera_ShutterSwitch(int value); |
55 | T_JZsdkReturnCode Camera_param(int flagcode, enum CameraParam paramflag, int *value); | 55 | T_JZsdkReturnCode Camera_param(int flagcode, enum CameraParam paramflag, int *value); |
56 | T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value); | 56 | T_JZsdkReturnCode JZsdk_Camera_BadPixelSwitch(int value); |
57 | +T_JZsdkReturnCode JZsdk_CameraSPC_ResetSwitch(int value); | ||
58 | +T_JZsdkReturnCode JZsdk_H150ST_CameraInit(int width, int height, int frame_num); | ||
57 | 59 | ||
58 | #ifdef __cplusplus | 60 | #ifdef __cplusplus |
59 | } | 61 | } |
Module/MediaProc/Camera/H150ST/H150ST_Cam.c
0 → 100644
1 | +#include <stdio.h> | ||
2 | +#include <string.h> | ||
3 | +#include <stdlib.h> | ||
4 | +#include <pthread.h> | ||
5 | +#include <unistd.h> | ||
6 | + | ||
7 | +#include "JZsdkLib.h" | ||
8 | +#include "version_choose.h" | ||
9 | +#include "BaseConfig.h" | ||
10 | + | ||
11 | +#include "../V4L2_camera/V4L2_Record.h" | ||
12 | +#include "../../StreamProc/StreamProc.h" | ||
13 | +#include "../../MediaParm.h" | ||
14 | +#include "../../VideoMgmt/VideoMgmt.h" | ||
15 | +#include "../../StreamProc/StreamProc.h" | ||
16 | +#include "Ircut/ircut.h" | ||
17 | +#include "../Camera.h" | ||
18 | + | ||
19 | +#include "UI_control/UI_control.h" | ||
20 | +static int CameraFd = 0; | ||
21 | + | ||
22 | +//光学相机数据读取线程 | ||
23 | +static void *JZsdk_Cam_Data_Thread(void *args) | ||
24 | +{ | ||
25 | + while (1) | ||
26 | + { | ||
27 | + unsigned int buf_size = 0; | ||
28 | + unsigned char *buf = NULL; | ||
29 | + | ||
30 | + //从相机中读取一张照片 | ||
31 | + V4L2_CameraFrameRecord_OnlyGetFrame(&buf, &buf_size); | ||
32 | + | ||
33 | + if (buf == NULL) | ||
34 | + { | ||
35 | + JZSDK_LOG_ERROR("相机数据读取失败"); | ||
36 | + continue; | ||
37 | + } | ||
38 | + | ||
39 | + //放入缓冲池 | ||
40 | + VideoMgmt_write_data(&VideoMgmt_FirstVideo_index, buf, buf_size); | ||
41 | + | ||
42 | + //归还图片 | ||
43 | + V4L2_CameraFrameRecord_OnlyReturnFrame(); | ||
44 | + } | ||
45 | +} | ||
46 | + | ||
47 | +//150st相机初始化 | ||
48 | +T_JZsdkReturnCode JZsdk_H150ST_CameraInit(int width, int height, int frame_num) | ||
49 | +{ | ||
50 | + T_JZsdkReturnCode ret; | ||
51 | + | ||
52 | + //初始化摄像头 | ||
53 | + ret = V4l2_Camarainit2(&CameraFd,width,height,frame_num); | ||
54 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
55 | + { | ||
56 | + return ret; | ||
57 | + } | ||
58 | + | ||
59 | + | ||
60 | + //初始化数据接收线程 | ||
61 | + pthread_t ReadDataTask; | ||
62 | + pthread_attr_t task_attribute; //线程属性 | ||
63 | + pthread_attr_init(&task_attribute); //初始化线程属性 | ||
64 | + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | ||
65 | + int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Cam_Data_Thread,NULL); //线程 | ||
66 | + if(opus_Protection != 0) | ||
67 | + { | ||
68 | + JZSDK_LOG_ERROR("创建v4l2线程失败!"); | ||
69 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
70 | + } | ||
71 | + | ||
72 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
73 | +} |
1 | /** | 1 | /** |
2 | ******************************************************************** | 2 | ******************************************************************** |
3 | - * @file GIMBAL_H3.h | ||
4 | - * GIMBAL_H3的头文件 | 3 | + * @file H150ST_Cam.h |
4 | + * H150ST_Cam.h 的头文件 | ||
5 | * | 5 | * |
6 | ********************************************************************* | 6 | ********************************************************************* |
7 | */ | 7 | */ |
8 | 8 | ||
9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ | 9 | /* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/ |
10 | -#ifndef GIMBAL_H3_H | ||
11 | -#define GIMBAL_H3_H | 10 | +#ifndef H150ST_CAM_H |
11 | +#define H150ST_CAM_H | ||
12 | 12 | ||
13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
14 | +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | ||
14 | 15 | ||
15 | #ifdef __cplusplus | 16 | #ifdef __cplusplus |
16 | extern "C" { | 17 | extern "C" { |
@@ -18,12 +19,13 @@ extern "C" { | @@ -18,12 +19,13 @@ extern "C" { | ||
18 | 19 | ||
19 | /* Exported constants --------------------------------------------------------*/ | 20 | /* Exported constants --------------------------------------------------------*/ |
20 | /* 常亮定义*/ | 21 | /* 常亮定义*/ |
21 | -#include "Gimbal_H3_H150ST/Gimbal_H3_H150ST.h" | ||
22 | -#include "Gimbal_H3_H10/Gimbal_H3_H10.h" | 22 | + |
23 | 23 | ||
24 | /* Exported types ------------------------------------------------------------*/ | 24 | /* Exported types ------------------------------------------------------------*/ |
25 | 25 | ||
26 | /* Exported functions --------------------------------------------------------*/ | 26 | /* Exported functions --------------------------------------------------------*/ |
27 | +T_JZsdkReturnCode JZsdk_H150ST_CameraInit(int width, int height, int frame_num); | ||
28 | + | ||
27 | 29 | ||
28 | 30 | ||
29 | #ifdef __cplusplus | 31 | #ifdef __cplusplus |
@@ -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 | } |
-
请 注册 或 登录 后发表评论