作者 潘浩彬

1稳定版更新

正在显示 38 个修改的文件 包含 4866 行增加0 行删除

要显示太多修改。

为保证性能只显示 38 of 38+ 个文件。

  1 +{
  2 + "files.associations": {
  3 + "typeinfo": "c",
  4 + "jzsdk_code.h": "c",
  5 + "jzsdk_getframetemplate.h": "c",
  6 + "uart_config.h": "c",
  7 + "version_choose.h": "c",
  8 + "msp_cmn.h": "c",
  9 + "qtts.h": "c",
  10 + "msp_errors.h": "c",
  11 + "jzsdklib.h": "c",
  12 + "megaphone_inputandoutput.h": "c",
  13 + "tts_sample.h": "c",
  14 + "cn_tts.h": "c",
  15 + "intl_tts.h": "c",
  16 + "megaphone_music.h": "c",
  17 + "gimbal_h3_h10.h": "c",
  18 + "gimbal_h3_h150st.h": "c",
  19 + "uartconnection.h": "c",
  20 + "megaphone_tts.h": "c"
  21 + }
  22 +}
  1 +# cmake 最低版本要求
  2 +cmake_minimum_required(VERSION 2.8)
  3 +
  4 +# 编译标志
  5 +set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++")
  6 +#"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。
  7 +#"-std=gnu99":指定C语言标准为GNU C99(也就是C99加上GNU的扩展特性),该标准对于一些特性和库的使用是必须的。
  8 +#"-lm":指定在编译时链接数学库,以使用一些数学函数。
  9 +#"-ldl":指定在编译时链接动态库加载库,以使用动态加载。
  10 +#"-lstdc++":指定在编译时链接C++标准库,以使用C++的一些特性和函数。
  11 +
  12 +# 配置编译器
  13 +# 交叉编译链①
  14 +set(CMAKE_C_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-gcc")
  15 +set(CMAKE_CXX_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-g++")
  16 +
  17 +# 本地测试编译链
  18 +# set(CMAKE_C_COMPILER /usr/bin/gcc)
  19 +# set(CMAKE_CXX_COMPILER /usr/bin/g++)
  20 +
  21 +# 工程名 JZ_UART_APP
  22 +project(JZ_UART_APP)
  23 +# 设置滤波方式 24行不能被改动,因为会被sh修改滤波方式
  24 +set(filtering_type directed_stopband_filtering)
  25 +
  26 +# 海外版本 27行不能改动
  27 +set(firewarm_origin DOMESTIC_VERSION)
  28 +
  29 +
  30 +# 指定源文件
  31 +file(GLOB_RECURSE APPLICATION_SRC application/*.c)
  32 +file(GLOB_RECURSE JZSDK_SRC JZsdk/*.c)
  33 +file(GLOB_RECURSE JZSDK_UART_DEAL_SRC JZsdk_Uart/*.c)
  34 +file(GLOB_RECURSE GIMBAL_SRC Module/Gimbal/*.c)
  35 +file(GLOB_RECURSE MEGAPHONE_SRC Module/Megaphone/*.c)
  36 +file(GLOB_RECURSE LIGHTING_SRC Module/Lighting/*.c)
  37 +
  38 +file(GLOB_RECURSE MODULE_IRCUT_SRC Module/Ircut/*.c)
  39 +file(GLOB_RECURSE MODULE_UICONTROL_SRC Module/UI_control/*.c)
  40 +
  41 +
  42 +
  43 +# 生成可执行文件
  44 +add_executable(
  45 + JZ_UART_APP
  46 + ${APPLICATION_SRC}
  47 + ${JZSDK_SRC}
  48 + ${JZSDK_UART_DEAL_SRC}
  49 + ${MEGAPHONE_SRC}
  50 + ${MODULE_IRCUT_SRC}
  51 + ${GIMBAL_SRC}
  52 + ${MODULE_UICONTROL_SRC}
  53 + ${LIGHTING_SRC}
  54 +)
  55 +
  56 +# 头文件路径
  57 +include_directories(./application)
  58 +include_directories(./JZsdk)
  59 +include_directories(./JZsdk_Uart)
  60 +
  61 +include_directories(./Module/Megaphone)
  62 +include_directories(./Module/Ircut)
  63 +include_directories(./Module/Ircut/H3_ircut/wiringPi)
  64 +include_directories(./Module/Gimbal)
  65 +include_directories(./Module/Lighting)
  66 +include_directories(./Module/UI_control)
  67 +
  68 +# 库文件路径
  69 +if(${filtering_type} STREQUAL "directed_stopband_filtering")
  70 + message("\n滤波库:高通滤波\n")
  71 + target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/directed_stopband_filtering/libAudioPlayer.so)
  72 +elseif(${filtering_type} STREQUAL "high_pass_filtering")
  73 + message("\n滤波库:带阻滤波\n")
  74 + target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/high_pass_filtering/libAudioPlayer.so)
  75 +else()
  76 + message(FATAL_ERROR "Invalid filtering type")
  77 +endif()
  78 +
  79 +if(${firewarm_origin} STREQUAL "OVERSEAS_VERSION")
  80 + message("\n固件版本为海外版\n")
  81 + target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/intl_tts/libportaudio.so.2)
  82 + target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/intl_tts/libTTS_Player.so)
  83 +
  84 +else()
  85 + message("\n固件版本为国内版\n")
  86 +endif()
  87 +
  88 +target_link_libraries(${PROJECT_NAME}
  89 +
  90 + ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/libmsc.so
  91 + ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/opus/libopus.so
  92 +)
  93 +
  1 +#include <stdio.h>
  2 +#include "JZsdkLib.h"
  3 +
  4 +//初始化sdk
  5 +T_JZsdkReturnCode JZsdk_LibInit()
  6 +{
  7 + //1、初始化log
  8 + JZsdk_LoggerInit();
  9 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdkLib.h
  4 + * JZsdk的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDKLIB_H
  11 +#define JZSDKLIB_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#include "JZsdk_Base/JZsdkBase.h"
  22 +#include "JZsdk_CommonFuntion/JZsdkCommonFuntion.h"
  23 +//#include "JZsdk_Normal_Module/JZsdk_normal_module.h"
  24 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  25 +
  26 +/* Exported types ------------------------------------------------------------*/
  27 +
  28 +/* Exported functions --------------------------------------------------------*/
  29 +T_JZsdkReturnCode JZsdk_LibInit();
  30 +
  31 +
  32 +#ifdef __cplusplus
  33 +}
  34 +#endif
  35 +
  36 +#endif
  37 +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdkBase.h
  4 + * JZsdk基础部件的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDKBASE_H
  11 +#define JZSDKBASE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#include "JZsdk_Logger/JZsdk_Logger.h"
  22 +#include "JZsdk_Osal/JZsdk_FileSystm.h"
  23 +#include "JZsdk_Delay/JZsdk_Delay.h"
  24 +#include "JZsdk_Code/JZsdk_FLagCode.h"
  25 +/* Exported types ------------------------------------------------------------*/
  26 +
  27 +
  28 +/* Exported functions --------------------------------------------------------*/
  29 +
  30 +
  31 +#ifdef __cplusplus
  32 +}
  33 +#endif
  34 +
  35 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_Code.h
  4 + * 用于记录各类码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_CODE_H
  11 +#define JZSDK_CODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +#include "JZsdk_InsCode.h"
  23 +#include "JZsdk_FLagCode.h"
  24 +#include "JZsdk_ReturnCode.h"
  25 +
  26 +/* Exported types ------------------------------------------------------------*/
  27 +
  28 +
  29 +/* Exported functions --------------------------------------------------------*/
  30 +
  31 +#ifdef __cplusplus
  32 +}
  33 +#endif
  34 +
  35 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_ErrorCode.h
  4 + * 用于错误码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_ERRORCODE_H
  11 +#define JZSDK_ERRORCODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +typedef enum {
  25 + JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS = 0x0000,
  26 + JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE = 0x0001
  27 +} JZ_SYSTEM_Code;
  28 +
  29 +typedef enum {
  30 + JZ_ERROR_SYSTEM_FRAME_ERROR = 0x0100,
  31 +
  32 +} JZ_Syetem_frame_ErrorCode;
  33 +
  34 +typedef enum {
  35 + JZ_ERRORCODE_MUSIC_NOT_FOUND_IN_LIST = 0x1000
  36 +
  37 +} JZ_Megaphone_music_ErrorCode;
  38 +
  39 +typedef enum {
  40 + JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON = 0x1201
  41 +
  42 +} JZ_Megaphone_opus_ErrorCode;
  43 +
  44 +typedef enum {
  45 + JZ_ERRORCODE_TTS_INVALID_TONE = 0x1300,
  46 + JZ_ERRORCODE_TTS_INVALID_SPEED = 0x1301,
  47 + JZ_ERRORCODE_TTS_INVALID_ADDTONE = 0x1302,
  48 +
  49 +} JZ_Megaphone_TTS_ErrorCode;
  50 +
  51 +typedef enum {
  52 + JZ_ERRORCODE_GIMBAL_INVALID_PITCH = 0x4000,
  53 + JZ_ERRORCODE_GIMBAL_INVALID_YAW = 0x4001,
  54 + JZ_ERRORCODE_GIMBAL_INVALID_ROLL = 0x4002,
  55 +
  56 +} JZ_Gimbal_ErrorCode;
  57 +/* Exported functions --------------------------------------------------------*/
  58 +
  59 +#ifdef __cplusplus
  60 +}
  61 +#endif
  62 +
  63 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_FLagCode.h
  4 + * 用于标识码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FLAGCODE_H
  11 +#define JZSDK_FLAGCODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#define JZ_FLAGCODE_OFF 0x00
  22 +#define JZ_FLAGCODE_ON 0x01
  23 +
  24 +/* Exported types ------------------------------------------------------------*/
  25 +
  26 +
  27 +/* Exported functions --------------------------------------------------------*/
  28 +
  29 +#ifdef __cplusplus
  30 +}
  31 +#endif
  32 +
  33 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_InsCode.h
  4 + * 用于错误码的表
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_INSCODE_H
  11 +#define JZSDK_INSCODE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +typedef enum {
  23 +
  24 +//5A类帧
  25 + JZ_INSCODE_5AFRAME_FRAME = 0x10000000, //接收类帧
  26 +
  27 + JZ_INSCODE_5AFRAME_ASKFORCONNECT = 0x10000100, //申请连接
  28 +
  29 + JZ_INSCODE_5AFRAME_REALTIMEMP2_START = 0x10000200, //开启实时MP2
  30 + JZ_INSCODE_5AFRAME_REALTIMEMP2_TRANSMISSION = 0x10000201, //传输实时MP2
  31 + JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP = 0x10000202, //结束实时MP2
  32 +
  33 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START = 0x10000300, //打开音频文件上传
  34 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_TRANSMISSION = 0x10000301, //传输音频文件
  35 + JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP = 0x10000302, //关闭音频文件上传
  36 +
  37 + JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE = 0x10000400, //播放指定音频
  38 + JZ_INSCODE_5AFRAME_AUDIO_CONTINUE = 0x10000401, //音频继续播放
  39 + JZ_INSCODE_5AFRAME_AUDIO_PAUSE = 0x10000402, //音频暂停播放
  40 + JZ_INSCODE_5AFRAME_AUDIO_STOP = 0x10000403, //音频停止播放
  41 +
  42 + JZ_INSCODE_5AFRAME_AUDIO_LASTSONG = 0x10000410, //音频上一曲
  43 + JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG = 0x10000411, //音频下一曲
  44 +
  45 + JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST = 0x10000420, //获取音频列表
  46 +
  47 +
  48 + JZ_INSCODE_5AFRAME_AMPLIFIER_STOP = 0x10000500, //强制关闭功放
  49 + JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN = 0x10000501, //强制开启功放
  50 + JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO = 0x10000502, //恢复自动功放
  51 +
  52 + JZ_INSCODE_5AFRAME_VOLUME = 0x10000600, //调节音量
  53 +
  54 + JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME = 0x10000620, //查询音量
  55 + JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY = 0x10000621, //查询播放状态
  56 + JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL = 0x10000622, //查询云台角度
  57 + JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING = 0x10000623, //查询云台微调角度
  58 +
  59 + JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME = 0x10000624, //查询播放文件名
  60 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号
  61 + JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环
  62 + JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色
  63 + JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速
  64 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE = 0x10000629, //查询探照灯 灯3个属性
  65 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10000630, //查询探照灯流明
  66 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10000631, //查询探照灯频率
  67 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10000632, //查询探照灯模式
  68 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10000633, //查询探照灯温度
  69 +
  70 + JZ_INSCODE_5AFRAME_CHECKSTATUS_LASER_STATUS = 0x10000634, //查询激光状态
  71 + JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10000635, //查询警灯状态
  72 + JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10000636, //查询警灯颜色
  73 + JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER = 0x10000637, //查询序列号
  74 +
  75 +
  76 + JZ_INSCODE_5AFRAME_PLAY_LOOP = 0x10000690, //开启关闭循环
  77 +
  78 + JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频
  79 + JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音
  80 + JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频
  81 +
  82 +
  83 + JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色
  84 + JZ_INSCODE_5AFRAME_TTS_SET_SPEED = 0x10000802, //TTS设置语速
  85 + JZ_INSCODE_5AFRAME_TTS_TRANS_START = 0x10000803, //TTS开始发送
  86 + JZ_INSCODE_5AFRAME_TTS_TRANS_TRANSMISSION = 0x10000804, //TTS正在接收
  87 + JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕
  88 +
  89 + JZ_INSCODE_5AFRAME_OPUS_TRANS_START = 0x10000900, //opus传输开始
  90 + JZ_INSCODE_5AFRAME_OPUS_TRANS_TRANSMISSION = 0x10000901, //opus传输中
  91 + JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束
  92 + JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放
  93 +
  94 + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音
  95 + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_TRANSMISSION = 0x10000A01, //传输opus实时语音
  96 + JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音
  97 +
  98 + JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL = 0x10000B00, //云台俯仰控制
  99 + JZ_INSCODE_5AFRAME_GIMBAL_YAW_CONTROL = 0x10000B01, //云台朝向控制
  100 + JZ_INSCODE_5AFRAME_GIMBAL_ROLL_CONTROL = 0x10000B02, //云台旋转控制
  101 + JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL = 0x10000B04, //云台俯仰微调
  102 + JZ_INSCODE_5AFRAME_GIMBAL_YAW_FINETUNING_CONTROL = 0x10000B05, //云台朝向微调
  103 + JZ_INSCODE_5AFRAME_GIMBAL_ROLL_FINETUNING_CONTROL = 0x10000B06, //云台旋转微调
  104 +
  105 +
  106 + JZ_INSCODE_5AFRAME_LASER_CONTROL = 0x10000C00, //激光控制
  107 +
  108 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL = 0x10000E00, //探照灯开光
  109 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN = 0x10000E10, //设置探照灯亮度
  110 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY = 0x10000E20, //设置把爆闪频率
  111 + JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL = 0x10000E21,//探照灯消息订阅控制
  112 +
  113 + JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL = 0x10000F00, //警示灯模式控制
  114 + JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR = 0x10000F10, //警示灯颜色控制
  115 +
  116 + JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL = 0x10001000, //对外供电开关
  117 + JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10001001, //对外供电查询
  118 +
  119 +//5B类帧
  120 + JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧
  121 +
  122 + JZ_INSCODE_5BFRAME_INITIATECONNECT = 0x10004101, //主动连接
  123 +
  124 + JZ_INSCODE_5BFRAME_SUCESS = 0x10004200, //操作成功
  125 + JZ_INSCODE_5BFRAME_DEFEAT = 0x10004201, //操作失败
  126 +
  127 + JZ_INSCODE_5BFRAME_MUSICLIST_START = 0x10004300, //开启发送音乐列表帧
  128 + JZ_INSCODE_5BFRAME_MUSICLIST_TRANS = 0x10004301, //发送音乐列表帧
  129 + JZ_INSCODE_5BFRAME_MUSICLIST_STOP = 0x10004302, //结束发送音乐列表帧
  130 +
  131 + JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS = 0x10004310, //音频播放状态返回帧
  132 + JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END = 0x10004311, //音频播放状态结束帧
  133 +
  134 + JZ_INSCODE_5BFRAME_VOLUME = 0x10004400, //音量返回帧
  135 + JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS = 0x10004401, //发送音频循环播放状态
  136 + JZ_INSCODE_5BFRAME_TTS_TONE = 0x10004402, //发送tts音色
  137 + JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速
  138 + JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字
  139 +
  140 +
  141 + JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度
  142 + JZ_INSCODE_5BFRAME_GIMBAL_YAW = 0x10004501, //云台航向角度
  143 + JZ_INSCODE_5BFRAME_GIMBAL_ROLL = 0x10004502, //
  144 +
  145 + JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING = 0x10004510, //云台俯仰微调值
  146 +
  147 +
  148 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10004600, //查询探照灯温度
  149 + JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS = 0x10004601, //查询激光状态
  150 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10004602, //查询探照灯频率
  151 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10004603, //查询探照灯模式
  152 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10004604, //查询探照灯流明
  153 +
  154 + JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10004700, //警示灯模式控制
  155 + JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10004701, //警示灯颜色控制
  156 +
  157 +
  158 + JZ_INSCODE_5BFRAME_SORTWAREVERSION = 0x10004800, //发送软件版本号
  159 + JZ_INSCODE_5BFRAME_HARDWAREVERSION = 0x10004801, //发送硬件版本号
  160 + JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER = 0x10004802, //回复序列号
  161 +
  162 + JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER = 0x10004900, //对外供电查询
  163 +
  164 +//6A类
  165 + JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧
  166 +
  167 + JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN = 0x10008101, //设置坐标0值
  168 + JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE = 0x10008102, //设置云台范围最大最小值
  169 + JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE = 0x10008103, //设置灯光范围最大最小值
  170 + JZ_INSCODE_6AFRAME_SET_SERIALNUMBER = 0x10008104, //设置序列号
  171 + JZ_INSCODE_6AFRAME_SERVO_SELFCHECK = 0x10008105, //舵机自检
  172 + JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL = 0x10008106, //开关云台联动
  173 +
  174 + JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x10008400, //查询从设备设备名
  175 + JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x10008401, //查询云台联动
  176 +
  177 +//6B类
  178 + JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x1000C400, //回复从设备名
  179 + JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x1000C401, //回复云台联动
  180 +
  181 +
  182 +
  183 +} JZ_InsCode;
  184 +
  185 +
  186 +/* Exported types ------------------------------------------------------------*/
  187 +
  188 +
  189 +/* Exported functions --------------------------------------------------------*/
  190 +
  191 +#ifdef __cplusplus
  192 +}
  193 +#endif
  194 +
  195 +#endif
  1 +#include <stdint.h>
  2 +#include <stdbool.h>
  3 +#include <stddef.h>
  4 +#include <string.h>
  5 +#include <stdlib.h>
  6 +#include <stdio.h>
  7 +#include <string.h>
  8 +
  9 +#include "./JZsdk_Code.h"
  10 +
  11 +
  12 +
  13 +//获取返回码的信息
  14 +const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode)
  15 +{
  16 + switch (ReturnCode) {
  17 + case JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON:
  18 + return "实时语音被开启,该操作失败";
  19 +
  20 + default:
  21 + return "未知错误:Unknown error.";
  22 + }
  23 +}
  1 +
  2 +
  3 +/**
  4 + ********************************************************************
  5 + * @file JZsdk_ReturnCode.h
  6 + * 用于记录各类码的表
  7 + *
  8 + *********************************************************************
  9 + */
  10 +
  11 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  12 +#ifndef JZSDK_RETURNCODE_H
  13 +#define JZSDK_RETURNCODE_H
  14 +
  15 +/* Includes ------------------------------------------------------------------*/
  16 +#include <stdint.h>
  17 +#include "JZsdk_ErrorCode.h"
  18 +
  19 +#ifdef __cplusplus
  20 +extern "C" {
  21 +#endif
  22 +
  23 +/* Exported constants --------------------------------------------------------*/
  24 +/* 常亮定义*/
  25 +
  26 +
  27 +
  28 +
  29 +
  30 +
  31 +
  32 +/* Exported types ------------------------------------------------------------*/
  33 +//重定义一个返回码
  34 +typedef uint64_t T_JZsdkReturnCode;
  35 +
  36 +/* Exported functions --------------------------------------------------------*/
  37 +const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode);
  38 +
  39 +#ifdef __cplusplus
  40 +}
  41 +#endif
  42 +
  43 +#endif
  1 +#include <stdio.h>
  2 +#include "JZsdk_Delay.h"
  3 +#include <unistd.h>
  4 +/*
  5 +* 用于延时(粗略)
  6 +* 需要优化
  7 +*/
  8 +int delayMs(unsigned long msec)
  9 +{
  10 + usleep(msec * 1000);
  11 +}
  12 +
  13 +/*
  14 +* 用于延时(粗略)
  15 +* 需要优化
  16 +*/
  17 +int delayS(unsigned long sec)
  18 +{
  19 + delayMs(sec * 1000);
  20 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_FileSystem.h
  4 + * 用于文件系统操作
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_DELAY_H
  11 +#define JZSDK_DELAY_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  27 +int delayMs(unsigned long msec);
  28 +int delayS(unsigned long sec);
  29 +
  30 +#ifdef __cplusplus
  31 +}
  32 +#endif
  33 +
  34 +#endif
  35 +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
  1 +#include <stdio.h>
  2 +#include "./JZsdk_FrameComparsion.h"
  3 +#include "../JZsdk_Code/JZsdk_Code.h"
  4 +
  5 +/*************************
  6 + *
  7 + * 获取帧的序列号
  8 + *
  9 + * ***************************/
  10 +int JZsdk_Get_FrameSequence(char *DealBuf)
  11 +{
  12 + return DealBuf[6];
  13 +}
  14 +
  15 +/***************************
  16 + * 、
  17 + *
  18 + * 帧校对 获取功能
  19 + *
  20 + *
  21 + * ***********************/
  22 +int JZsdk_FrameComparsion(char *getdata, int len)
  23 +{
  24 + //1、判断是否是5A帧
  25 + if (getdata[0] == 0x5A && getdata[1] == 0x5A && getdata[2] == 0x77)
  26 + {
  27 + printf("JZsdk_FrameComparsion:5A帧\n");
  28 + return JZsdk_5AFrameComparsion(getdata, len);
  29 + }
  30 +
  31 + //2、判断是否是5B帧
  32 + if (getdata[0] == 0x5b && getdata[1] == 0x5b && getdata[2] == 0x77)
  33 + {
  34 + printf("JZsdk_FrameComparsion:5B帧\n");
  35 + return JZsdk_5BFrameComparsion(getdata, len);
  36 + }
  37 +
  38 + //3、判断是否是6A帧
  39 + if (getdata[0] == 0x6A && getdata[1] == 0x6A && getdata[2] == 0x77)
  40 + {
  41 + printf("JZsdk_FrameComparsion:6A帧\n");
  42 + return JZsdk_6AFrameComparsion(getdata, len);
  43 + }
  44 +
  45 + //4、判断是否是6B帧
  46 + if (getdata[0] == 0x6b && getdata[1] == 0x6b && getdata[2] == 0x77)
  47 + {
  48 + printf("JZsdk_FrameComparsion:6B帧\n");
  49 + return JZsdk_6BFrameComparsion(getdata, len);
  50 + }
  51 +
  52 + //判断帧头帧尾
  53 + if (
  54 + ( (getdata[0]!= 0x5a) && (getdata[1] != 0x5a) && (getdata[2]!=0x77) )
  55 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  56 + )
  57 + {
  58 + printf("接受到的帧,没有帧头或者帧尾,退出recv帧判断函数\n");
  59 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  60 + }
  61 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_FrameComparsion.h
  4 + * 用于帧对比的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FRAMECOMPARSION_H
  11 +#define JZSDK_FRAMECOMPARSION_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#include "JZsdk_FrameComparsion_5Aframe.h"
  22 +#include "JZsdk_FrameComparsion_5Bframe.h"
  23 +#include "JZsdk_FrameComparsion_6Aframe.h"
  24 +#include "JZsdk_FrameComparsion_6Bframe.h"
  25 +#include "JZsdk_GetFrameTemplate.h"
  26 +
  27 +/* Exported types ------------------------------------------------------------*/
  28 +
  29 +
  30 +/* Exported functions --------------------------------------------------------*/
  31 +int JZsdk_Get_FrameSequence(char *DealBuf);
  32 +int JZsdk_FrameComparsion(char *getdata, int len);
  33 +
  34 +#ifdef __cplusplus
  35 +}
  36 +#endif
  37 +
  38 +#endif
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +/******************************************************
  5 +
  6 + 接收一级功能码区
  7 +
  8 +/******************************************************/
  9 +//一级功能码是连接功能
  10 +static int Comparison_5AFRAME_FirstLevelCode_0x50(char *getdata)
  11 +{
  12 + //二级功能位
  13 + switch (getdata[8])
  14 + {
  15 + //开启连接
  16 + case 0x51:
  17 + return JZ_INSCODE_5AFRAME_ASKFORCONNECT;
  18 + break;
  19 +
  20 + default:
  21 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  22 + break;
  23 + }
  24 +}
  25 +//一级功能码是语音 或是 文件功能
  26 +static int Comparison_5AFRAME_FirstLevelCode_0x51(char *getdata)
  27 +{
  28 + //二级功能位
  29 + switch (getdata[8])
  30 + {
  31 + //开启语音
  32 + case 0xb1:
  33 + return JZ_INSCODE_5AFRAME_REALTIMEMP2_START;
  34 + break;
  35 +
  36 + //结束语音
  37 + case 0xb2:
  38 + return JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP;
  39 + break;
  40 +
  41 + //打开音频文件上传
  42 + case 0x01:
  43 + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START;
  44 + break;
  45 +
  46 + //关闭音频文件上传
  47 + case 0x03:
  48 + return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP;
  49 + break;
  50 +
  51 + default:
  52 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  53 + break;
  54 + }
  55 +}
  56 +//一级功能码是音频/功放/音量调节
  57 +static int Comparison_5AFRAME_FirstLevelCode_0x52(char *getdata)
  58 +{
  59 + //二级功能位
  60 + switch (getdata[8])
  61 + {
  62 + //播放指定音频
  63 + case 0x02:
  64 + return JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE;
  65 + break;
  66 +
  67 + //音频继续播放
  68 + case 0x04:
  69 + return JZ_INSCODE_5AFRAME_AUDIO_CONTINUE;
  70 + break;
  71 +
  72 + //音频暂停播放
  73 + case 0x05:
  74 + return JZ_INSCODE_5AFRAME_AUDIO_PAUSE;
  75 + break;
  76 +
  77 + //音频停止播放
  78 + case 0x06:
  79 + return JZ_INSCODE_5AFRAME_AUDIO_STOP;
  80 + break;
  81 +
  82 + //音频上一曲
  83 + case 0x07:
  84 + return JZ_INSCODE_5AFRAME_AUDIO_LASTSONG;
  85 + break;
  86 +
  87 + //音频下一曲
  88 + case 0x08:
  89 + return JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG;
  90 + break;
  91 +
  92 + //强制关闭功放
  93 + case 0x20:
  94 + return JZ_INSCODE_5AFRAME_AMPLIFIER_STOP;
  95 + break;
  96 +
  97 + //强制开启功放
  98 + case 0x21:
  99 + return JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN;
  100 + break;
  101 +
  102 + //恢复自动功放
  103 + case 0x22:
  104 + return JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO;
  105 + break;
  106 +
  107 + //调节音量
  108 + case 0x10:
  109 + return JZ_INSCODE_5AFRAME_VOLUME;
  110 + break;
  111 +
  112 + default:
  113 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  114 + break;
  115 + }
  116 +}
  117 +//一级功能码是查询状态
  118 +static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata)
  119 +{
  120 + //二级功能位
  121 + switch (getdata[8])
  122 + {
  123 + //查询音量
  124 + case 0x01:
  125 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME;
  126 + break;
  127 +
  128 + //查询播放状态
  129 + case 0x02:
  130 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY;
  131 + break;
  132 +
  133 + //查询云台角度(已舍弃)
  134 + case 0x03:
  135 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL;
  136 + break;
  137 +
  138 + //查询播放文件名
  139 + case 0x04:
  140 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME;
  141 + break;
  142 +
  143 + //查询是否打开循环
  144 + case 0x05:
  145 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY;
  146 + break;
  147 +
  148 + //查询音色
  149 + case 0x06:
  150 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE;
  151 + break;
  152 +
  153 + //查询语速
  154 + case 0x07:
  155 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED;
  156 + break;
  157 +
  158 +
  159 + //查询软件版本号
  160 + case 0xf1:
  161 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION;
  162 + break;
  163 +
  164 + default:
  165 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  166 + break;
  167 + }
  168 +
  169 +}
  170 +//一级功能码是删除
  171 +static int Comparison_5AFRAME_FirstLevelCode_0x54(char *getdata)
  172 +{
  173 + //二级功能位
  174 + switch (getdata[8])
  175 + {
  176 + //删除音频
  177 + case 0x02:
  178 + return JZ_INSCODE_5AFRAME_DELETE_AUDIO;
  179 + break;
  180 +
  181 + //删除录音
  182 + case 0x03:
  183 + return JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD;
  184 + break;
  185 +
  186 + // //删除视频
  187 + // case 0x02:
  188 + // return JZ_INSCODE_DELETE_VIDEO_RECORD;
  189 + // break;
  190 +
  191 + default:
  192 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  193 + break;
  194 + }
  195 +}
  196 +//一级功能码开启关闭循环
  197 +static int Comparison_5AFRAME_FirstLevelCode_0x55(char *getdata)
  198 +{
  199 + //二级功能位
  200 + switch (getdata[8])
  201 + {
  202 + //开启关闭循环
  203 + case 0x00:
  204 + return JZ_INSCODE_5AFRAME_PLAY_LOOP;
  205 + break;
  206 +
  207 + default:
  208 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  209 + break;
  210 + }
  211 +}
  212 +//一级功能码
  213 +static int Comparison_5AFRAME_FirstLevelCode_0x56(char *getdata)
  214 +{
  215 + //二级功能位
  216 + switch (getdata[8])
  217 + {
  218 + default:
  219 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  220 + break;
  221 + }
  222 +}
  223 +//一级功能码是 文本播放
  224 +static int Comparison_5AFRAME_FirstLevelCode_0x57(char *getdata)
  225 +{
  226 + //二级功能位
  227 + switch (getdata[8])
  228 + {
  229 + //设置音色
  230 + case 0x01:
  231 + return JZ_INSCODE_5AFRAME_TTS_SET_TONE;
  232 + break;
  233 +
  234 + //设置语速
  235 + case 0x02:
  236 + return JZ_INSCODE_5AFRAME_TTS_SET_SPEED;
  237 + break;
  238 +
  239 + //开始发送TTS
  240 + case 0x03:
  241 + return JZ_INSCODE_5AFRAME_TTS_TRANS_START;
  242 + break;
  243 +
  244 + case 0x04:
  245 + return JZ_INSCODE_5AFRAME_TTS_TRANS_STOP;
  246 + break;
  247 +
  248 + default:
  249 + break;
  250 + }
  251 +}
  252 +//一级功能 查询列表
  253 +static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
  254 +{
  255 + //二级功能位
  256 + switch (getdata[8])
  257 + {
  258 + //设置音色
  259 + case 0x01:
  260 + return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST;
  261 + break;
  262 +
  263 + default:
  264 + break;
  265 + }
  266 +}
  267 +//一级功能码opus功能
  268 +static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata)
  269 +{
  270 + //二级功能位
  271 + switch (getdata[8])
  272 + {
  273 + //opus录音传输
  274 + //opus传输开始
  275 + case 0xF1:
  276 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_START;
  277 + break;
  278 +
  279 + //opus传输结束
  280 + case 0xF2:
  281 + return JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP;
  282 + break;
  283 +
  284 + //opus播放
  285 + case 0x01:
  286 + return JZ_INSCODE_5AFRAME_OPUS_PLAY;
  287 + break;
  288 +
  289 + //opus实时语音开始
  290 + case 0xE1:
  291 + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START;
  292 + break;
  293 +
  294 + case 0xE2:
  295 + return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP;
  296 + break;
  297 +
  298 + default:
  299 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  300 + break;
  301 + }
  302 +}
  303 +
  304 +//一级功能码,硬件引脚控制
  305 +static int Comparison_5AFRAME_FirstLevelCode_0x5A(char *getdata)
  306 +{
  307 + //二级功能位
  308 + switch (getdata[8])
  309 + {
  310 + //对外供电开关
  311 + case 0x01:
  312 + return JZ_INSCODE_5AFRAME_OUTPUTPOWER_CONTROL;
  313 + break;
  314 +
  315 + //对外供电查询
  316 + case 0x02:
  317 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_OUTPUTPOWER;
  318 + break;
  319 +
  320 + default:
  321 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  322 + break;
  323 + }
  324 +}
  325 +
  326 +//一级功能码 激光控制
  327 +static int Comparison_5AFRAME_FirstLevelCode_0x60(char *getdata)
  328 +{
  329 + //二级功能位
  330 + switch (getdata[8])
  331 + {
  332 + //激光控制
  333 + case 0x51:
  334 + return JZ_INSCODE_5AFRAME_LASER_CONTROL;
  335 + break;
  336 +
  337 + default:
  338 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  339 + break;
  340 + }
  341 +}
  342 +
  343 +//一级功能码 爆闪频率
  344 +static int Comparison_5AFRAME_FirstLevelCode_0x61(char *getdata)
  345 +{
  346 + //二级功能位
  347 + switch (getdata[8])
  348 + {
  349 + //爆闪频率
  350 + case 0x51:
  351 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY;
  352 + break;
  353 +
  354 + default:
  355 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  356 + break;
  357 + }
  358 +}
  359 +
  360 +//一级功能码 灯光控制
  361 +static int Comparison_5AFRAME_FirstLevelCode_0x62(char *getdata)
  362 +{
  363 + //二级功能位
  364 + switch (getdata[8])
  365 + {
  366 + //灯光模式
  367 + case 0x51:
  368 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL;
  369 + break;
  370 +
  371 + default:
  372 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  373 + break;
  374 + }
  375 +}
  376 +
  377 +//一级功能码 灯光亮度
  378 +static int Comparison_5AFRAME_FirstLevelCode_0x63(char *getdata)
  379 +{
  380 + //二级功能位
  381 + switch (getdata[8])
  382 + {
  383 + //灯光亮度
  384 + case 0x51:
  385 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN;
  386 + break;
  387 +
  388 + default:
  389 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  390 + break;
  391 + }
  392 +}
  393 +
  394 +//一级功能码云台功能
  395 +static int Comparison_5AFRAME_FirstLevelCode_0x64(char *getdata)
  396 +{
  397 + //二级功能位
  398 + switch (getdata[8])
  399 + {
  400 + //云台俯仰控制
  401 + case 0x51:
  402 + return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL;
  403 + break;
  404 +
  405 + //云台俯仰微调控制
  406 + case 0x52:
  407 + return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL;
  408 + break;
  409 +
  410 + default:
  411 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  412 + break;
  413 + }
  414 +}
  415 +
  416 +//一级功能码 云台航向
  417 +static int Comparison_5AFRAME_FirstLevelCode_0x65(char *getdata)
  418 +{
  419 +
  420 +}
  421 +
  422 +//一级功能码 警灯模式控制
  423 +static int Comparison_5AFRAME_FirstLevelCode_0x66(char *getdata)
  424 +{
  425 + switch (getdata[8])
  426 + {
  427 + //警灯模式控制
  428 + case 0x51:
  429 + return JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL;
  430 + break;
  431 +
  432 + default:
  433 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  434 + break;
  435 + }
  436 +}
  437 +
  438 +//一级功能码 警灯眼色选择
  439 +static int Comparison_5AFRAME_FirstLevelCode_0x67(char *getdata)
  440 +{
  441 + switch (getdata[8])
  442 + {
  443 + //警灯颜色选择
  444 + case 0x51:
  445 + return JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR;
  446 + break;
  447 +
  448 + default:
  449 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  450 + break;
  451 + }
  452 +}
  453 +
  454 +//一级功能码 探照灯消息订阅
  455 +static int Comparison_5AFRAME_FirstLevelCode_0x68(char *getdata)
  456 +{
  457 + switch (getdata[8])
  458 + {
  459 + //探照灯消息订阅
  460 + case 0x51:
  461 + return JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL;
  462 + break;
  463 +
  464 + default:
  465 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  466 + break;
  467 + }
  468 +
  469 +}
  470 +
  471 +//一级功能码 私有协议
  472 +static int Comparison_5AFRAME_FirstLevelCode_0x69(char *getdata)
  473 +{
  474 +
  475 +}
  476 +
  477 +//一级功能码 6F查询帧
  478 +static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata)
  479 +{
  480 + //二级功能位
  481 + switch (getdata[8])
  482 + {
  483 + //灯光查询
  484 + case 0x51:
  485 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE;
  486 + break;
  487 +
  488 + //温度查询
  489 + case 0x52:
  490 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE;
  491 + break;
  492 +
  493 + //激光查询
  494 + case 0x53:
  495 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  496 + break;
  497 +
  498 + //云台角度查询
  499 + case 0x54:
  500 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL;
  501 + break;
  502 +
  503 + //警灯状态查询
  504 + case 0x55:
  505 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS;
  506 + break;
  507 +
  508 + //警灯颜色查询
  509 + case 0x56:
  510 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR;
  511 + break;
  512 +
  513 + //产品序列号查询
  514 + case 0x57:
  515 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER;
  516 + break;
  517 +
  518 + //云台微调值查询
  519 + case 0x58:
  520 + return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING;
  521 + break;
  522 +
  523 + default:
  524 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  525 + break;
  526 + }
  527 +}
  528 +
  529 +/******************************************************************
  530 +
  531 + 回复帧对比
  532 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  533 +
  534 +******************************************************************/
  535 +int JZsdk_5AFrameComparsion(char *getdata, int len)
  536 +{
  537 + //1、判断帧头帧尾
  538 + if (
  539 + ( (getdata[0]!= 0x5a) && (getdata[1] != 0x5a) && (getdata[2]!=0x77) )
  540 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  541 + )
  542 + {
  543 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5AFrameComparsion函数\n");
  544 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  545 + }
  546 +
  547 + //一级功能码
  548 + switch (getdata[7])
  549 + {
  550 +/*********************************************************************************************************************************************************
  551 + *
  552 + * 连接请求码
  553 + *
  554 +*********************************************************************************************************************************************************/
  555 + //一级功能码是连接请求
  556 + case 0x50:
  557 + return Comparison_5AFRAME_FirstLevelCode_0x50(getdata);
  558 + break;
  559 +
  560 +/*********************************************************************************************************************************************************
  561 + *
  562 + * 喊话器功能码
  563 + *
  564 +*********************************************************************************************************************************************************/
  565 + //一级功能码 语音 / 音频文件功能
  566 + case 0x51:
  567 + return Comparison_5AFRAME_FirstLevelCode_0x51(getdata);
  568 + break;
  569 +
  570 + //一级功能码 音频/ 功放/ 音量调节
  571 + case 0x52:
  572 + return Comparison_5AFRAME_FirstLevelCode_0x52(getdata);
  573 + break;
  574 +
  575 + //一级功能码 查询状态
  576 + case 0x53:
  577 + return Comparison_5AFRAME_FirstLevelCode_0x53(getdata);
  578 + break;
  579 +
  580 + //一级功能码 删除
  581 + case 0x54:
  582 + return Comparison_5AFRAME_FirstLevelCode_0x54(getdata);
  583 + break;
  584 +
  585 + //一级功能码 开启关闭循环
  586 + case 0x55:
  587 + return Comparison_5AFRAME_FirstLevelCode_0x55(getdata);
  588 + break;
  589 +
  590 + //一级功能码
  591 + case 0x56:
  592 + return Comparison_5AFRAME_FirstLevelCode_0x56(getdata);
  593 + break;
  594 +
  595 + //一级功能码 TTS
  596 + case 0x57:
  597 + return Comparison_5AFRAME_FirstLevelCode_0x57(getdata);
  598 + break;
  599 +
  600 + //一级功能码 查询列表功能
  601 + case 0x58:
  602 + return Comparison_5AFRAME_FirstLevelCode_0x58(getdata);
  603 + break;
  604 +
  605 + //一级功能码 opus
  606 + case 0x59:
  607 + return Comparison_5AFRAME_FirstLevelCode_0x59(getdata);
  608 + break;
  609 +
  610 + //一级功能码,硬件引脚控制
  611 + case 0x5A:
  612 + return Comparison_5AFRAME_FirstLevelCode_0x5A(getdata);
  613 + break;
  614 +
  615 + //一级功能码 激光控制
  616 + case 0x60:
  617 + return Comparison_5AFRAME_FirstLevelCode_0x60(getdata);
  618 + break;
  619 +
  620 + //一级功能码 爆闪控制
  621 + case 0x61:
  622 + return Comparison_5AFRAME_FirstLevelCode_0x61(getdata);
  623 + break;
  624 +
  625 + //一级功能码 灯光控制
  626 + case 0x62:
  627 + return Comparison_5AFRAME_FirstLevelCode_0x62(getdata);
  628 + break;
  629 +
  630 + //一级功能码 灯光亮度
  631 + case 0x63:
  632 + return Comparison_5AFRAME_FirstLevelCode_0x63(getdata);
  633 + break;
  634 +
  635 + //一级功能码 云台俯仰
  636 + case 0x64:
  637 + return Comparison_5AFRAME_FirstLevelCode_0x64(getdata);
  638 + break;
  639 +
  640 + //一级功能码 云台航向
  641 + case 0x65:
  642 + return Comparison_5AFRAME_FirstLevelCode_0x65(getdata);
  643 + break;
  644 +
  645 + //一级功能码 警灯模式控制
  646 + case 0x66:
  647 + return Comparison_5AFRAME_FirstLevelCode_0x66(getdata);
  648 + break;
  649 +
  650 + //一级功能码 警灯眼色选择
  651 + case 0x67:
  652 + return Comparison_5AFRAME_FirstLevelCode_0x67(getdata);
  653 + break;
  654 +
  655 + //一级功能码 探照灯消息订阅
  656 + case 0x68:
  657 + return Comparison_5AFRAME_FirstLevelCode_0x68(getdata);
  658 + break;
  659 +
  660 + //一级功能码 私有协议
  661 + case 0x69:
  662 + return Comparison_5AFRAME_FirstLevelCode_0x69(getdata);
  663 + break;
  664 +
  665 + //一级功能码 6f查询帧
  666 + case 0x6F:
  667 + return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata);
  668 + break;
  669 +
  670 +
  671 + break;
  672 +
  673 + //一级功能码
  674 +
  675 +/*********************************************************************************************************************************************************
  676 + *
  677 + *
  678 + *
  679 +*********************************************************************************************************************************************************/
  680 + default:
  681 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  682 + break;
  683 + }
  684 +}
  685 +
  1 +/**********************************************************************
  2 + * @file
  3 + *
  4 + *
  5 + *********************************************************************
  6 + */
  7 +
  8 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  9 +#ifndef JZSDK_FRAMECOMPARSION_5AFRAME_H
  10 +#define JZSDK_FRAMECOMPARSION_5AFRAME_H
  11 +
  12 +/* Includes ------------------------------------------------------------------*/
  13 +
  14 +#ifdef __cplusplus
  15 +extern "C" {
  16 +#endif
  17 +
  18 +/* Exported constants --------------------------------------------------------*/
  19 +/* 常亮定义*/
  20 +
  21 +/* Exported types ------------------------------------------------------------*/
  22 +
  23 +/* Exported functions --------------------------------------------------------*/
  24 +
  25 +int JZsdk_5AFrameComparsion(char *getdata, int len);
  26 +
  27 +#ifdef __cplusplus
  28 +}
  29 +#endif
  30 +
  31 +#endif
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +
  5 +/******************************************************
  6 +
  7 + 接收一级功能码区
  8 +
  9 +/******************************************************/
  10 +//一级功能码是连接功能
  11 +static int Comparison_5BFRAME_FirstLevelCode_0x50(char *getdata)
  12 +{
  13 + //二级功能位
  14 + switch (getdata[8])
  15 + {
  16 + //回复连接
  17 + case 0x51:
  18 + return JZ_INSCODE_5BFRAME_INITIATECONNECT;
  19 + break;
  20 +
  21 + default:
  22 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  23 + break;
  24 + }
  25 +}
  26 +
  27 +//一级功能码是操作功能
  28 +static int Comparison_5BFRAME_FirstLevelCode_0x51(char *getdata)
  29 +{
  30 + //二级功能位
  31 + switch (getdata[8])
  32 + {
  33 + //回复操作成功
  34 + case 0x01:
  35 + return JZ_INSCODE_5BFRAME_SUCESS;
  36 + break;
  37 +
  38 + //回复操作失败
  39 + case 0xff:
  40 + return JZ_INSCODE_5BFRAME_DEFEAT;
  41 + break;
  42 +
  43 + default:
  44 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  45 + break;
  46 + }
  47 +}
  48 +//一级功能码是音频列表功能
  49 +static int Comparison_5BFRAME_FirstLevelCode_0x53(char *getdata)
  50 +{
  51 + //二级功能位
  52 + switch (getdata[8])
  53 + {
  54 + //音量返回
  55 + case 0x01:
  56 + return JZ_INSCODE_5BFRAME_VOLUME;
  57 + break;
  58 +
  59 + //播放状态返回
  60 + case 0x02:
  61 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS;
  62 + break;
  63 +
  64 + //当前播放文件名返回
  65 + case 0x04:
  66 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME;
  67 + break;
  68 +
  69 + //查询是否开启循环
  70 + case 0x05:
  71 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS;
  72 + break;
  73 +
  74 + //查询音色
  75 + case 0x06:
  76 + return JZ_INSCODE_5BFRAME_TTS_TONE;
  77 + break;
  78 +
  79 + //查询语速
  80 + case 0x07:
  81 + return JZ_INSCODE_5BFRAME_TTS_SPEED;
  82 + break;
  83 +
  84 + //版本返回
  85 + case 0xf1:
  86 + return JZ_INSCODE_5BFRAME_SORTWAREVERSION;
  87 + break;
  88 +
  89 + //播放结束(主动返回)
  90 + case 0xff:
  91 + return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END;
  92 + break;
  93 +
  94 + default:
  95 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  96 + break;
  97 + }
  98 +}
  99 +
  100 +//一级功能码是音频列表功能
  101 +static int Comparison_5BFRAME_FirstLevelCode_0x58(char *getdata)
  102 +{
  103 + //二级功能位
  104 + switch (getdata[8])
  105 + {
  106 + //查询列表开始
  107 + case 0x00:
  108 + return JZ_INSCODE_5BFRAME_MUSICLIST_START;
  109 + break;
  110 +
  111 + //文件列表帧
  112 + case 0x02:
  113 + return JZ_INSCODE_5BFRAME_MUSICLIST_TRANS;
  114 + break;
  115 +
  116 + //结束列表返回
  117 + case 0xff:
  118 + return JZ_INSCODE_5BFRAME_MUSICLIST_STOP;
  119 + break;
  120 +
  121 + default:
  122 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  123 + break;
  124 + }
  125 +}
  126 +
  127 +//一级功能码是硬件引脚控制
  128 +static int Comparison_5BFRAME_FirstLevelCode_0x5A(char *getdata)
  129 +{
  130 + //二级功能位
  131 + switch (getdata[8])
  132 + {
  133 + //回复对供电开关状态返回
  134 + case 0x02:
  135 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER;
  136 + break;
  137 +
  138 + default:
  139 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  140 + break;
  141 + }
  142 +}
  143 +
  144 +//一级功能码是激光
  145 +static int Comparison_5BFRAME_FirstLevelCode_0x60(char *getdata)
  146 +{
  147 + //二级功能位
  148 + switch (getdata[8])
  149 + {
  150 + //回复激光查询
  151 + case 0x51:
  152 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS;
  153 + break;
  154 +
  155 + default:
  156 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  157 + break;
  158 + }
  159 +}
  160 +
  161 +//一级功能码是回复灯光频率
  162 +static int Comparison_5BFRAME_FirstLevelCode_0x61(char *getdata)
  163 +{
  164 + //二级功能位
  165 + switch (getdata[8])
  166 + {
  167 + //回复灯光频率
  168 + case 0x51:
  169 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY;
  170 + break;
  171 +
  172 + default:
  173 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  174 + break;
  175 + }
  176 +}
  177 +
  178 +//一级功能码是回复灯光模式
  179 +static int Comparison_5BFRAME_FirstLevelCode_0x62(char *getdata)
  180 +{
  181 + //二级功能位
  182 + switch (getdata[8])
  183 + {
  184 + //回复灯光模式
  185 + case 0x51:
  186 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE;
  187 + break;
  188 +
  189 + default:
  190 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  191 + break;
  192 + }
  193 +}
  194 +
  195 +//一级功能码是回复灯光亮度
  196 +static int Comparison_5BFRAME_FirstLevelCode_0x63(char *getdata)
  197 +{
  198 + //二级功能位
  199 + switch (getdata[8])
  200 + {
  201 + //回复灯光亮度
  202 + case 0x51:
  203 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN;
  204 + break;
  205 +
  206 + default:
  207 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  208 + break;
  209 + }
  210 +}
  211 +
  212 +//一级功能码是云台俯仰
  213 +static int Comparison_5BFRAME_FirstLevelCode_0x64(char *getdata)
  214 +{
  215 + //二级功能位
  216 + switch (getdata[8])
  217 + {
  218 + //回复云台俯仰
  219 + case 0x51:
  220 + return JZ_INSCODE_5BFRAME_GIMBAL_PITCH;
  221 + break;
  222 +
  223 + //回复云台俯仰微调值
  224 + case 0x52:
  225 + return JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING;
  226 + break;
  227 +
  228 + default:
  229 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  230 + break;
  231 + }
  232 +}
  233 +//一级功能码是云台航向
  234 +static int Comparison_5BFRAME_FirstLevelCode_0x65(char *getdata)
  235 +{
  236 + //二级功能位
  237 + switch (getdata[8])
  238 + {
  239 + //回复云台航向
  240 + case 0x51:
  241 + return JZ_INSCODE_5BFRAME_GIMBAL_YAW;
  242 + break;
  243 +
  244 +
  245 + default:
  246 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  247 + break;
  248 + }
  249 +}
  250 +//一级功能码是回复警灯状态
  251 +static int Comparison_5BFRAME_FirstLevelCode_0x66(char *getdata)
  252 +{
  253 + //二级功能位
  254 + switch (getdata[8])
  255 + {
  256 + //回复警灯状态
  257 + case 0x51:
  258 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS;
  259 + break;
  260 +
  261 +
  262 + default:
  263 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  264 + break;
  265 + }
  266 +}//一级功能码是回复警灯颜色
  267 +static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata)
  268 +{
  269 + //二级功能位
  270 + switch (getdata[8])
  271 + {
  272 + //回复回复警灯颜色
  273 + case 0x51:
  274 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR;
  275 + break;
  276 +
  277 +
  278 + default:
  279 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  280 + break;
  281 + }
  282 +}//一级功能码是回复温度/序列号查询
  283 +static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata)
  284 +{
  285 + //二级功能位
  286 + switch (getdata[8])
  287 + {
  288 + //回复温度查询
  289 + case 0x51:
  290 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE;
  291 + break;
  292 +
  293 + //回复产品序列号
  294 + case 0x54:
  295 + return JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER;
  296 + break;
  297 +
  298 + default:
  299 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  300 + break;
  301 + }
  302 +}
  303 +/******************************************************************
  304 +
  305 + 回复帧对比
  306 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  307 +
  308 +******************************************************************/
  309 +int JZsdk_5BFrameComparsion(char *getdata, int len)
  310 +{
  311 + //1、判断帧头帧尾
  312 + if (
  313 + ( (getdata[0]!= 0x5B) && (getdata[1] != 0x5B) && (getdata[2]!=0x77) )
  314 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  315 + )
  316 + {
  317 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5BFrameComparsion函数\n");
  318 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  319 + }
  320 +
  321 + //一级功能码
  322 + switch (getdata[7])
  323 + {
  324 + case 0x50:
  325 + return Comparison_5BFRAME_FirstLevelCode_0x50(getdata);
  326 + break;
  327 +
  328 + case 0x51:
  329 + return Comparison_5BFRAME_FirstLevelCode_0x51(getdata);
  330 + break;
  331 +
  332 + case 0x53:
  333 + return Comparison_5BFRAME_FirstLevelCode_0x53(getdata);
  334 + break;
  335 +
  336 + case 0x58:
  337 + return Comparison_5BFRAME_FirstLevelCode_0x58(getdata);
  338 + break;
  339 +
  340 + case 0x5A:
  341 + return Comparison_5BFRAME_FirstLevelCode_0x5A(getdata);
  342 + break;
  343 +
  344 + case 0x60:
  345 + return Comparison_5BFRAME_FirstLevelCode_0x60(getdata);
  346 + break;
  347 +
  348 + case 0x61:
  349 + return Comparison_5BFRAME_FirstLevelCode_0x61(getdata);
  350 + break;
  351 +
  352 + case 0x62:
  353 + return Comparison_5BFRAME_FirstLevelCode_0x62(getdata);
  354 + break;
  355 +
  356 + case 0x63:
  357 + return Comparison_5BFRAME_FirstLevelCode_0x63(getdata);
  358 + break;
  359 +
  360 + case 0x64:
  361 + return Comparison_5BFRAME_FirstLevelCode_0x64(getdata);
  362 + break;
  363 +
  364 + case 0x65:
  365 + return Comparison_5BFRAME_FirstLevelCode_0x65(getdata);
  366 + break;
  367 +
  368 + case 0x66:
  369 + return Comparison_5BFRAME_FirstLevelCode_0x66(getdata);
  370 + break;
  371 +
  372 + case 0x67:
  373 + return Comparison_5BFRAME_FirstLevelCode_0x67(getdata);
  374 + break;
  375 +
  376 + case 0x69:
  377 + return Comparison_5BFRAME_FirstLevelCode_0x69(getdata);
  378 + break;
  379 +
  380 +
  381 + default:
  382 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  383 + break;
  384 + }
  385 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file
  4 + *
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FRAMECOMPARSION_5BFRAME_H
  11 +#define JZSDK_FRAMECOMPARSION_5BFRAME_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +/* Exported types ------------------------------------------------------------*/
  23 +
  24 +/* Exported functions --------------------------------------------------------*/
  25 +int JZsdk_5BFrameComparsion(char *getdata, int len);
  26 +
  27 +
  28 +#ifdef __cplusplus
  29 +}
  30 +#endif
  31 +
  32 +#endif
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +
  5 +//一级功能码是私有协议
  6 +static int Comparison_6AFRAME_FirstLevelCode_0x69(char *getdata)
  7 +{
  8 + //二级功能位
  9 + switch (getdata[8])
  10 + {
  11 + //设置当前为云台零值
  12 + case 0x51:
  13 + return JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN;
  14 + break;
  15 +
  16 + //设置云台当前为最大最小值
  17 + case 0x52:
  18 + return JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE;
  19 + break;
  20 +
  21 + //设置灯光当前亮度为最大最小值
  22 + case 0x53:
  23 + return JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE;
  24 + break;
  25 +
  26 + //设置产品序列号
  27 + case 0x54:
  28 + return JZ_INSCODE_6AFRAME_SET_SERIALNUMBER;
  29 + break;
  30 +
  31 + //舵机自检
  32 + case 0x55:
  33 + return JZ_INSCODE_6AFRAME_SERVO_SELFCHECK;
  34 + break;
  35 +
  36 + //开启关闭云台联动
  37 + case 0x56:
  38 + return JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL;
  39 + break;
  40 +
  41 + default:
  42 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  43 + break;
  44 + }
  45 +}
  46 +
  47 +
  48 +
  49 +//一级功能码是私有协议
  50 +static int Comparison_6AFRAME_FirstLevelCode_0x6F(char *getdata)
  51 +{
  52 + //二级功能位
  53 + switch (getdata[8])
  54 + {
  55 + //设置当前为云台零值
  56 + case 0x50:
  57 + return JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME;
  58 + break;
  59 +
  60 + //设置当前为云台零值
  61 + case 0x51:
  62 + return JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE;
  63 + break;
  64 +
  65 + default:
  66 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  67 + break;
  68 + }
  69 +}
  70 +
  71 +/******************************************************************
  72 +
  73 + 回复帧对比
  74 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  75 +
  76 +******************************************************************/
  77 +int JZsdk_6AFrameComparsion(char *getdata, int len)
  78 +{
  79 + //1、判断帧头帧尾
  80 + if (
  81 + ( (getdata[0]!= 0x6A) && (getdata[1] != 0x6A) && (getdata[2]!=0x77) )
  82 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  83 + )
  84 + {
  85 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_6AFrameComparsion函数\n");
  86 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  87 + }
  88 +
  89 + //一级功能码
  90 + switch (getdata[7])
  91 + {
  92 + case 0x69:
  93 + return Comparison_6AFRAME_FirstLevelCode_0x69(getdata);
  94 + break;
  95 +
  96 + case 0x6F:
  97 + return Comparison_6AFRAME_FirstLevelCode_0x6F(getdata);
  98 + break;
  99 +
  100 +
  101 + default:
  102 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  103 + break;
  104 + }
  105 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file
  4 + *
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FRAMECOMPARSION_6AFRAME_H
  11 +#define JZSDK_FRAMECOMPARSION_6AFRAME_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +/* Exported types ------------------------------------------------------------*/
  23 +
  24 +/* Exported functions --------------------------------------------------------*/
  25 +int JZsdk_6AFrameComparsion(char *getdata, int len);
  26 +
  27 +
  28 +#ifdef __cplusplus
  29 +}
  30 +#endif
  31 +
  32 +#endif
  33 +
  1 +#include <stdio.h>
  2 +#include "../JZsdk_Code/JZsdk_Code.h"
  3 +
  4 +
  5 +//一级功能码是私有协议
  6 +static int Comparison_6BFRAME_FirstLevelCode_0x6F(char *getdata)
  7 +{
  8 + //二级功能位
  9 + switch (getdata[8])
  10 + {
  11 + //从设备名返回
  12 + case 0x50:
  13 + return JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME;
  14 + break;
  15 +
  16 + //查询云台联动返回
  17 + case 0x51:
  18 + return JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE;
  19 + break;
  20 +
  21 +
  22 + default:
  23 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  24 + break;
  25 + }
  26 +}
  27 +
  28 +/******************************************************************
  29 +
  30 + 回复帧对比
  31 + 成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
  32 +
  33 +******************************************************************/
  34 +int JZsdk_6BFrameComparsion(char *getdata, int len)
  35 +{
  36 + //1、判断帧头帧尾
  37 + if (
  38 + ( (getdata[0]!= 0x6B) && (getdata[1] != 0x6B) && (getdata[2]!=0x77) )
  39 + || ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
  40 + )
  41 + {
  42 + printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_6BFrameComparsion函数\n");
  43 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  44 + }
  45 +
  46 + //一级功能码
  47 + switch (getdata[7])
  48 + {
  49 + case 0x6F:
  50 + return Comparison_6BFRAME_FirstLevelCode_0x6F(getdata);
  51 + break;
  52 +
  53 +
  54 + default:
  55 + return JZ_ERROR_SYSTEM_FRAME_ERROR;
  56 + break;
  57 + }
  58 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file
  4 + *
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +
  11 +
  12 +#ifndef JZSDK_FRAMECOMPARSION_6BFRAME_H
  13 +#define JZSDK_FRAMECOMPARSION_6BFRAME_H
  14 +
  15 +/* Includes ------------------------------------------------------------------*/
  16 +
  17 +#ifdef __cplusplus
  18 +extern "C" {
  19 +#endif
  20 +
  21 +/* Exported constants --------------------------------------------------------*/
  22 +/* 常亮定义*/
  23 +
  24 +/* Exported types ------------------------------------------------------------*/
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  27 +int JZsdk_6BFrameComparsion(char *getdata, int len);
  28 +
  29 +
  30 +#ifdef __cplusplus
  31 +}
  32 +#endif
  33 +
  34 +#endif
  35 +
  1 +#include <stdio.h>
  2 +#include <string.h>
  3 +#include "../JZsdk_Code/JZsdk_Code.h"
  4 +
  5 +/******************************************************
  6 +
  7 + 用于获取帧模板
  8 +
  9 +/******************************************************/
  10 +int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
  11 +{
  12 + printf("JZsdk_GetFrameTemplate:获取0x%x帧模板\n",InsCode);
  13 + switch (InsCode)
  14 + {
  15 +/********************************************************************************************************************************************************
  16 + *
  17 + * 5A帧
  18 + *
  19 +********************************************************************************************************************************************************/
  20 +
  21 + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY:
  22 + {
  23 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x61 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  24 + memcpy(str, sendbuf, 13);
  25 + *str_len = 13;
  26 + }
  27 + break;
  28 +
  29 + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL:
  30 + {
  31 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x62 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  32 + memcpy(str, sendbuf, 13);
  33 + *str_len = 13;
  34 + }
  35 + break;
  36 +
  37 + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN:
  38 + {
  39 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x63 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  40 + memcpy(str, sendbuf, 13);
  41 + *str_len = 13;
  42 + }
  43 + break;
  44 +
  45 + case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL:
  46 + {
  47 + char sendbuf[14] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0E ,0x00 ,0x00 ,0x64 ,0x51 ,0x00 ,0x00 ,0x00 ,0x00 ,0x23};
  48 + memcpy(str, sendbuf, 14);
  49 + *str_len = 14;
  50 + }
  51 + break;
  52 +
  53 + case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL:
  54 + {
  55 + char sendbuf[14] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0E ,0x00 ,0x00 ,0x64 ,0x52 ,0x00 ,0x00 ,0x00 ,0x00 ,0x23};
  56 + memcpy(str, sendbuf, 14);
  57 + *str_len = 14;
  58 + }
  59 + break;
  60 +
  61 + case JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL:
  62 + {
  63 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x66 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  64 + memcpy(str, sendbuf, 13);
  65 + *str_len = 13;
  66 + }
  67 + break;
  68 +
  69 + case JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR:
  70 + {
  71 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x67 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  72 + memcpy(str, sendbuf, 13);
  73 + *str_len = 13;
  74 + }
  75 + break;
  76 +
  77 + case JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL:
  78 + {
  79 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x68 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  80 + memcpy(str, sendbuf, 13);
  81 + *str_len = 13;
  82 + }
  83 + break;
  84 +
  85 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE:
  86 + {
  87 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  88 + memcpy(str, sendbuf, 13);
  89 + *str_len = 13;
  90 + }
  91 + break;
  92 +
  93 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE:
  94 + {
  95 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x52 ,0x00 ,0x00 ,0x00 ,0x23};
  96 + memcpy(str, sendbuf, 13);
  97 + *str_len = 13;
  98 + }
  99 + break;
  100 +
  101 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL:
  102 + {
  103 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x54 ,0x00 ,0x00 ,0x00 ,0x23};
  104 + memcpy(str, sendbuf, 13);
  105 + *str_len = 13;
  106 + }
  107 + break;
  108 +
  109 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS:
  110 + {
  111 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x55 ,0x00 ,0x00 ,0x00 ,0x23};
  112 + memcpy(str, sendbuf, 13);
  113 + *str_len = 13;
  114 + }
  115 + break;
  116 +
  117 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR:
  118 + {
  119 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x56 ,0x00 ,0x00 ,0x00 ,0x23};
  120 + memcpy(str, sendbuf, 13);
  121 + *str_len = 13;
  122 + }
  123 + break;
  124 +
  125 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER:
  126 + {
  127 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x57 ,0x00 ,0x00 ,0x00 ,0x23};
  128 + memcpy(str, sendbuf, 13);
  129 + *str_len = 13;
  130 + }
  131 + break;
  132 +
  133 + case JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING:
  134 + {
  135 + char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x58 ,0x00 ,0x00 ,0x00 ,0x23};
  136 + memcpy(str, sendbuf, 13);
  137 + *str_len = 13;
  138 + }
  139 + break;
  140 +/********************************************************************************************************************************************************
  141 + *
  142 + * 5B帧
  143 + *
  144 +********************************************************************************************************************************************************/
  145 + case JZ_INSCODE_5BFRAME_INITIATECONNECT:
  146 + {
  147 + char sendbuf[12] = {0x5B ,0x5B ,0x77 ,0x00 ,0x0c ,0x00 ,0x00 ,0x50 ,0x51 ,0x00 ,0x00 ,0x23};
  148 + memcpy(str, sendbuf, 12);
  149 + *str_len = 12;
  150 + }
  151 + break;
  152 +
  153 + case JZ_INSCODE_5BFRAME_SUCESS:
  154 + {
  155 + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x23};
  156 + memcpy(str, sendbuf, 12);
  157 + *str_len = 12;
  158 + }
  159 + break;
  160 +
  161 + case JZ_INSCODE_5BFRAME_DEFEAT:
  162 + {
  163 + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0xff, 0x00, 0x00, 0x23};
  164 + memcpy(str, sendbuf, 12);
  165 + *str_len = 12;
  166 + }
  167 + break;
  168 +
  169 +
  170 + case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END:
  171 + {
  172 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0xff, 0x00, 0x00, 0x23};
  173 + memcpy(str, sendbuf, 12);
  174 + *str_len = 12;
  175 + }
  176 + break;
  177 +
  178 + case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS:
  179 + {
  180 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x23};
  181 + memcpy(str, sendbuf, 12);
  182 + *str_len = 12;
  183 + }
  184 + break;
  185 +
  186 + case JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME:
  187 + {
  188 + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x04, 0x00, 0x00, 0x23};
  189 + memcpy(str, sendbuf, 12);
  190 + *str_len = 12;
  191 + }
  192 + break;
  193 +
  194 + case JZ_INSCODE_5BFRAME_VOLUME:
  195 + {
  196 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0x23};
  197 + memcpy(str, sendbuf, 12);
  198 + *str_len = 12;
  199 + }
  200 + break;
  201 +
  202 +
  203 +
  204 + case JZ_INSCODE_5BFRAME_SORTWAREVERSION:
  205 + {
  206 + char sendbuf[15] = { 0x5b, 0x5b, 0x77, 0x00, 0x0f, 0x00, 0x00, 0x53, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23};
  207 + memcpy(str, sendbuf, 15);
  208 + *str_len = 15;
  209 + }
  210 + break;
  211 +
  212 + case JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS:
  213 + {
  214 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x05, 0x00, 0x00, 0x23};
  215 + memcpy(str, sendbuf, 12);
  216 + *str_len = 12;
  217 + }
  218 + break;
  219 +
  220 + case JZ_INSCODE_5BFRAME_TTS_TONE:
  221 + {
  222 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x06, 0x00, 0x00, 0x23};
  223 + memcpy(str, sendbuf, 12);
  224 + *str_len = 12;
  225 + }
  226 + break;
  227 +
  228 + case JZ_INSCODE_5BFRAME_TTS_SPEED:
  229 + {
  230 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x23};
  231 + memcpy(str, sendbuf, 12);
  232 + *str_len = 12;
  233 + }
  234 + break;
  235 +
  236 + case JZ_INSCODE_5BFRAME_MUSICLIST_START:
  237 + {
  238 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23};
  239 + memcpy(str, sendbuf, 12);
  240 + *str_len = 12;
  241 + }
  242 + break;
  243 +
  244 + case JZ_INSCODE_5BFRAME_MUSICLIST_TRANS:
  245 + {
  246 + char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x23};
  247 + memcpy(str, sendbuf, 12);
  248 + *str_len = 12;
  249 + }
  250 + break;
  251 +
  252 + case JZ_INSCODE_5BFRAME_MUSICLIST_STOP:
  253 + {
  254 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0xff, 0x00, 0x00, 0x23};
  255 + memcpy(str, sendbuf, 12);
  256 + *str_len = 12;
  257 + }
  258 + break;
  259 +
  260 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER:
  261 + {
  262 + char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0C, 0x00, 0x00, 0x5A, 0x02, 0x00, 0x00, 0x23};
  263 + memcpy(str, sendbuf, 12);
  264 + *str_len = 12;
  265 + }
  266 + break;
  267 +
  268 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY:
  269 + {
  270 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x61, 0x51, 0x00, 0x00, 0x00, 0x23};
  271 + memcpy(str, sendbuf, 13);
  272 + *str_len = 13;
  273 + }
  274 + break;
  275 +
  276 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE:
  277 + {
  278 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x51, 0x00, 0x00, 0x00, 0x23};
  279 + memcpy(str, sendbuf, 13);
  280 + *str_len = 13;
  281 + }
  282 + break;
  283 +
  284 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN:
  285 + {
  286 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x63, 0x51, 0x00, 0x00, 0x00, 0x23};
  287 + memcpy(str, sendbuf, 13);
  288 + *str_len = 13;
  289 + }
  290 + break;
  291 +
  292 + case JZ_INSCODE_5BFRAME_GIMBAL_PITCH:
  293 + {
  294 + char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x64, 0x51, 0x00, 0x00, 0x00, 0x00, 0x23};
  295 + memcpy(str, sendbuf, 14);
  296 + *str_len = 14;
  297 + }
  298 + break;
  299 +
  300 + case JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING:
  301 + {
  302 + char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x64, 0x52, 0x00, 0x00, 0x00, 0x00, 0x23};
  303 + memcpy(str, sendbuf, 14);
  304 + *str_len = 14;
  305 + }
  306 + break;
  307 +
  308 + case JZ_INSCODE_5BFRAME_GIMBAL_YAW:
  309 + {
  310 + char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x65, 0x51, 0x00, 0x00, 0x00, 0x00, 0x23};
  311 + memcpy(str, sendbuf, 14);
  312 + *str_len = 14;
  313 + }
  314 + break;
  315 +
  316 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS:
  317 + {
  318 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x66, 0x51, 0x00, 0x00, 0x00, 0x23};
  319 + memcpy(str, sendbuf, 13);
  320 + *str_len = 13;
  321 + }
  322 + break;
  323 +
  324 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR:
  325 + {
  326 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x67, 0x51, 0x00, 0x00, 0x00, 0x23};
  327 + memcpy(str, sendbuf, 13);
  328 + *str_len = 13;
  329 + }
  330 + break;
  331 +
  332 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE:
  333 + {
  334 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x69, 0x51, 0x00, 0x00, 0x00, 0x23};
  335 + memcpy(str, sendbuf, 13);
  336 + *str_len = 13;
  337 + }
  338 + break;
  339 +
  340 + case JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER:
  341 + {
  342 + char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x6F, 0x57, 0x00, 0x00, 0x00, 0x23};
  343 + memcpy(str, sendbuf, 13);
  344 + *str_len = 13;
  345 + }
  346 + break;
  347 +
  348 +
  349 +
  350 +/********************************************************************************************************************************************************
  351 + *
  352 + * 6A帧
  353 + *
  354 +********************************************************************************************************************************************************/
  355 +
  356 + case JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE:
  357 + {
  358 + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x69 ,0x52 ,0x00 ,0x00 ,0x00 ,0x23};
  359 + memcpy(str, sendbuf, 13);
  360 + *str_len = 13;
  361 + }
  362 + break;
  363 +
  364 + case JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL:
  365 + {
  366 + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x69 ,0x56 ,0x00 ,0x00 ,0x00 ,0x23};
  367 + memcpy(str, sendbuf, 13);
  368 + *str_len = 13;
  369 + }
  370 + break;
  371 +
  372 + case JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME:
  373 + {
  374 + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x50 ,0x00 ,0x00 ,0x00 ,0x23};
  375 + memcpy(str, sendbuf, 13);
  376 + *str_len = 13;
  377 + }
  378 + break;
  379 +
  380 + case JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE:
  381 + {
  382 + char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  383 + memcpy(str, sendbuf, 13);
  384 + *str_len = 13;
  385 + }
  386 + break;
  387 +
  388 +
  389 +/********************************************************************************************************************************************************
  390 + *
  391 + * 6B帧
  392 + *
  393 +********************************************************************************************************************************************************/
  394 + case JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME:
  395 + {
  396 + char sendbuf[13] = {0x6B ,0x6B ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x50 ,0x00 ,0x00 ,0x00 ,0x23};
  397 + memcpy(str, sendbuf, 13);
  398 + *str_len = 13;
  399 + }
  400 + break;
  401 +
  402 + case JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE:
  403 + {
  404 + char sendbuf[13] = {0x6B ,0x6B ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
  405 + memcpy(str, sendbuf, 13);
  406 + *str_len = 13;
  407 + }
  408 + break;
  409 +
  410 + default:
  411 + printf("JZsdk_GetFrameTemplate:没有对应的帧模板\n");
  412 + break;
  413 + }
  414 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file
  4 + *
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_GET_FRAME_TEMPLATE_H
  11 +#define JZSDK_GET_FRAME_TEMPLATE_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +/* Exported types ------------------------------------------------------------*/
  23 +
  24 +/* Exported functions --------------------------------------------------------*/
  25 +int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len);
  26 +
  27 +
  28 +#ifdef __cplusplus
  29 +}
  30 +#endif
  31 +
  32 +#endif
  1 +/* 头文件 ------------------------------------------------------------------*/
  2 +#include <stdio.h>
  3 +#include <stdlib.h>
  4 +#include <string.h>
  5 +#include <stdarg.h>
  6 +#include <stdio.h>
  7 +
  8 +#include "JZsdk_Logger.h"
  9 +#include <time.h>
  10 +#include "JZsdkLib.h"
  11 +#include <pthread.h>
  12 +#include <sys/time.h>
  13 +
  14 +// 定义全局互斥锁
  15 +static pthread_mutex_t LogWriteMutex = PTHREAD_MUTEX_INITIALIZER;
  16 +
  17 +/* 全局变量 ------------------------------------------------------------------*/
  18 +static struct timeval g_start_time;
  19 +static FILE *logFile;
  20 +static char LogFileName[JZSDK_FILENAME_SIZE];
  21 +
  22 +/* 函数声明 ------------------------------------------------------------------*/
  23 +
  24 +static void *MonitorTask(void *arg)
  25 +{
  26 + while (1)
  27 + {
  28 + delayS(10);
  29 + JZSDK_LOG_INFO("Monitor");
  30 + }
  31 +}
  32 +
  33 +
  34 +
  35 +static int Log_Monitor()
  36 +{
  37 + pthread_t work_mode_task;
  38 + pthread_attr_t task_attribute; //线程属性
  39 + pthread_attr_init(&task_attribute); //初始化线程属性
  40 + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性
  41 + int timer = pthread_create(&work_mode_task,&task_attribute,MonitorTask,NULL); //线程
  42 + if(timer != 0)
  43 + {
  44 + printf("创建计时线程失败!\n");
  45 + }
  46 +}
  47 +
  48 +void createJZLOGFolder()
  49 +{
  50 + const char *path = "/root/sdcard/JZLOG";
  51 +
  52 + // 使用系统命令检测路径是否存在
  53 + char command[100];
  54 + snprintf(command, sizeof(command), "if [ ! -d \"%s\" ]; then mkdir -p \"%s\"; fi", path, path);
  55 + JZsdk_RunSystemCmd(command);
  56 +}
  57 +
  58 +int ReadLogNumFromFile()
  59 +{
  60 + const char *path = "/root/sdcard/JZLOG/thelast";
  61 + int logNum = 0;
  62 +
  63 + FILE *file = fopen(path, "r");
  64 + if (file == NULL)
  65 + {
  66 + // 如果文件不存在,则创建并设置LogNum为0
  67 + file = fopen(path, "w");
  68 + fprintf(file, "%d", logNum);
  69 + }
  70 + else
  71 + {
  72 + // 从文件中读取LogNum,并自增1
  73 + fscanf(file, "%d", &logNum);
  74 + logNum++;
  75 + fclose(file);
  76 +
  77 + // 将新的LogNum写回文件中
  78 + file = fopen(path, "w");
  79 + fprintf(file, "%d", logNum);
  80 + }
  81 + fclose(file);
  82 +
  83 + return logNum;
  84 +}
  85 +
  86 +T_JZsdkReturnCode JZsdk_LoggerInit()
  87 +{
  88 + //1、记录启动时间
  89 + gettimeofday(&g_start_time, 0);
  90 +
  91 + //2、检查是否存在log文件,不在则创建
  92 + createJZLOGFolder();
  93 +
  94 + //3、获取本地log个数
  95 + int LogNum = ReadLogNumFromFile();
  96 +
  97 + //4、获取本地时间,拼接出log文件名
  98 + time_t current_time;
  99 + struct tm *info;
  100 + char timeString[80];
  101 + time(&current_time);
  102 + info = localtime(&current_time);
  103 + strftime(timeString, sizeof(timeString), "%Y%m%d_%H-%M-%S", info);
  104 + snprintf(LogFileName, sizeof(LogFileName), "/root/sdcard/JZLOG/%d_%s", LogNum, timeString);
  105 +
  106 + printf("LogFileName:%s\n",LogFileName);
  107 +
  108 + // 在主函数或初始化阶段初始化互斥锁
  109 + pthread_mutex_init(&LogWriteMutex, NULL);
  110 +
  111 + //5、打开记录文件
  112 + logFile = fopen(LogFileName, "w");
  113 + if (logFile == NULL) {
  114 + // 文件打开失败,输出错误消息
  115 + printf("Failed to open file: %s", LogFileName);
  116 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  117 + }
  118 +
  119 + //6、写入开始时间
  120 + char logMessage[256];
  121 + snprintf(logMessage,256,"LOG_FILE:%s\n",LogFileName);
  122 + fprintf(logFile, "%s", logMessage);
  123 +
  124 + fclose(logFile);
  125 +
  126 +
  127 + //设立监控
  128 + Log_Monitor();
  129 +}
  130 +
  131 +
  132 +T_JZsdkReturnCode writeToLogFile(const char *data)
  133 +{
  134 + // 加锁
  135 + pthread_mutex_lock(&LogWriteMutex);
  136 +
  137 + logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据
  138 +
  139 + if (logFile == NULL) {
  140 + // 文件打开失败,输出错误消息
  141 + printf("Failed to open file: %s", LogFileName);
  142 + pthread_mutex_unlock(&LogWriteMutex);
  143 +
  144 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  145 + }
  146 +
  147 + fprintf(logFile, "%s", data); // 写入新的数据
  148 +
  149 + fclose(logFile);
  150 +
  151 + // 解锁
  152 + pthread_mutex_unlock(&LogWriteMutex);
  153 +}
  154 +
  155 +void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...)
  156 +{
  157 + // 将日志级别转换为相应的字符串
  158 + const char *JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "";
  159 + switch (level) {
  160 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG:
  161 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "DEBUG";
  162 + break;
  163 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO:
  164 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "INFO";
  165 + break;
  166 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN:
  167 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "WARNING";
  168 + break;
  169 + case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR:
  170 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "ERROR";
  171 + break;
  172 + default:
  173 + break;
  174 + }
  175 + // 使用可变参数处理传入的格式化字符串和可变参数
  176 + va_list args;
  177 + va_start(args, fmt);
  178 +
  179 + //格式化日志消息
  180 + char logMessage[512];
  181 + memset(logMessage, 0, sizeof(logMessage));
  182 + vsnprintf(logMessage, sizeof(logMessage), fmt, args);
  183 +
  184 + va_end(args);
  185 +
  186 + struct timeval current_time;
  187 + gettimeofday(&current_time, 0);
  188 +
  189 + long seconds = current_time.tv_sec - g_start_time.tv_sec;
  190 + long microseconds = current_time.tv_usec - g_start_time.tv_usec;
  191 + double elapsed = seconds + microseconds*1e-6;
  192 +
  193 + // 执行具体的日志输出操作
  194 + char finalLogMessage[612];
  195 + memset(finalLogMessage, 0, sizeof(finalLogMessage));
  196 + snprintf(finalLogMessage, 612, "[%s][%.4f]%s\n", JZSDK_LOGGER_CONSOLE_LOG_LEVEL, elapsed, logMessage);
  197 +
  198 + printf("%s",finalLogMessage);
  199 +
  200 + //写入日志
  201 + writeToLogFile(finalLogMessage);
  202 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_Logger.h
  4 + * 用于给h150s logger显示文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_LOGGER_H
  11 +#define JZSDK_LOGGER_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 +
  24 +typedef enum {
  25 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR = 0, /*!< Logger console error level. The method and level of the console are
  26 + associated with each other. If the level of the registered console
  27 + method is lower than this level, the level interface will not be
  28 + printed successfully. */
  29 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN = 1, /*!< Logger console warning level.The method and level of the console are
  30 + associated with each other. If the level of the registered console
  31 + method is lower than this level, the level interface will not be
  32 + printed successfully. */
  33 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO = 2, /*!< Logger console info level. The method and level of the console are
  34 + associated with each other. If the level of the registered console
  35 + method is lower than this level, the level interface will not be
  36 + printed successfully. */
  37 + JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG = 3, /*!< Logger console debug level. The method and level of the console are
  38 + associated with each other. If the level of the registered console
  39 + method is lower than this level, the level interface will not be
  40 + printed successfully. */
  41 +} E_JZsdkConsoleLogLevel;
  42 +/* Exported types ------------------------------------------------------------*/
  43 +
  44 +
  45 +/* Exported functions --------------------------------------------------------*/
  46 +void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...);
  47 +T_JZsdkReturnCode JZsdk_LoggerInit();
  48 +
  49 +/* Exported constants --------------------------------------------------------*/
  50 +#define JZSDK_LOG_DEBUG(fmt, ...) \
  51 + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
  52 +#define JZSDK_LOG_INFO(fmt, ...) \
  53 + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
  54 +#define JZSDK_LOG_WARN(fmt, ...) \
  55 + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
  56 +#define JZSDK_LOG_ERROR(fmt, ...) \
  57 + JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
  58 +
  59 +
  60 +#ifdef __cplusplus
  61 +}
  62 +#endif
  63 +
  64 +#endif
  65 +/************************ (C) COPYRIGHT JZSDK Innovations *******END OF FILE******/
  1 +#include <stdio.h>
  2 +#include "JZsdk_FileSystm.h"
  3 +#include <stdlib.h>
  4 +#include <stdbool.h>
  5 +#include <string.h>
  6 +
  7 +
  8 +/*
  9 +* 用于运行指令
  10 +*
  11 +*/
  12 +int JZsdk_RunSystemCmd(char *systemCmd)
  13 +{
  14 + //FILE *fp;
  15 +
  16 + //printf("JZsdk_RunSystemCmd:%s\n",systemCmd);
  17 +
  18 + // fp = popen(systemCmd, "r");
  19 + // if (fp == NULL) {
  20 + // return -1;
  21 + // }
  22 +
  23 + int status = system(systemCmd);
  24 + if (status == -1 || WIFEXITED(status) == false) {
  25 + printf("Call %s error, status = %d\n", systemCmd, status);
  26 + return -1;
  27 + }
  28 +
  29 + if (WEXITSTATUS(status) == 0) {
  30 + printf("指令执行成功%s\n",systemCmd);
  31 + return 0;
  32 + } else {
  33 + printf("Exit status is = %d", WEXITSTATUS(status));
  34 + return -2;
  35 + }
  36 + //pclose(fp);
  37 +
  38 + return 0;
  39 +}
  40 +
  41 +/*
  42 +
  43 + 运行命令 并读取返回值
  44 +
  45 +*/
  46 +// FILE* JZsdk_RunSystemCmd_ReturnFilePointer(char *systemCmd)
  47 +// {
  48 +// FILE *fp;
  49 +
  50 +// fp = popen(systemCmd, "r");
  51 +
  52 +// pclose(fp);
  53 +
  54 +// return fp;
  55 +// }
  56 +
  57 +
  58 +int JZsdk_Socket()
  59 +{
  60 +
  61 +}
  62 +
  63 +//获取设备序列号
  64 +T_JZsdkReturnCode GetSerialNumber(char *SerialNumber)
  65 +{
  66 + FILE *num_file;
  67 + char num_char[15];
  68 +
  69 + num_file = fopen("/root/num", "rb+");
  70 + if (num_file == NULL)
  71 + {
  72 + num_file = fopen("/root/num", "wb+");
  73 + if (num_file == NULL)
  74 + {
  75 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  76 + }
  77 + }
  78 + else
  79 + {
  80 + int ret = fseek(num_file, 0, SEEK_SET);
  81 + if (ret != 0) {
  82 + printf("Seek log count file error, ret: %d.\r\n", ret);
  83 + }
  84 +
  85 + ret = fread((char *) &num_char,14, sizeof(char), num_file);
  86 + if (ret != sizeof(char)) {
  87 + printf("Read num file error.\r\n");
  88 + }
  89 + else{
  90 + printf("Read num file=%s\n",&num_char);
  91 + }
  92 + }
  93 + fclose(num_file);
  94 +
  95 + if (SerialNumber != NULL)
  96 + {
  97 + memcpy(SerialNumber, num_char, 14);
  98 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  99 + }
  100 +
  101 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  102 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_FileSystem.h
  4 + * 用于文件系统操作
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_FILESYSTEM_H
  11 +#define JZSDK_FILESYSTEM_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include "../JZsdk_Code/JZsdk_Code.h"
  15 +
  16 +#ifdef __cplusplus
  17 +extern "C" {
  18 +#endif
  19 +
  20 +/* Exported constants --------------------------------------------------------*/
  21 +/* 常亮定义*/
  22 +#define JZSDK_FILENAME_SIZE 128
  23 +
  24 +/* Exported types ------------------------------------------------------------*/
  25 +
  26 +
  27 +/* Exported functions --------------------------------------------------------*/
  28 +int JZsdk_RunSystemCmd(char *systemCmd);
  29 +//FILE* JZsdk_RunSystemCmd_ReturnFilePointer(char *systemCmd);
  30 +T_JZsdkReturnCode GetSerialNumber(char *SerialNumber);
  31 +
  32 +#ifdef __cplusplus
  33 +}
  34 +#endif
  35 +
  36 +#endif
  37 +/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdkCommonFuntion.h
  4 + * JZsdk常用函数库的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDKCOMMONFUNTION_H
  11 +#define JZSDKCOMMONFUNTION_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +#include "JZsdk_string/JZsdk_string.h"
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  27 +
  28 +
  29 +#ifdef __cplusplus
  30 +}
  31 +#endif
  32 +
  33 +#endif
  1 +#include <stdio.h>
  2 +#include "JZsdk_string.h"
  3 +
  4 +/*
  5 +* 用于字符串转int型
  6 +*/
  7 +int JZsdk_String_str_to_int(const char *str)
  8 +{
  9 + int temp = 0;
  10 + const char *ptr = str; //ptr保存str字符串开头
  11 +
  12 + if (*str == '-' || *str == '+') //如果第一个字符是正负号,
  13 + { //则移到下一个字符
  14 + str++;
  15 + }
  16 + while(*str != 0)
  17 + {
  18 + if ((*str < '0') || (*str > '9')) //如果当前字符不是数字
  19 + { //则退出循环
  20 + break;
  21 + }
  22 + temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
  23 + str++; //移到下一个字符
  24 + }
  25 + if (*ptr == '-') //如果字符串是以“-”开头,则转换成其相反数
  26 + {
  27 + temp = -temp;
  28 + }
  29 +
  30 + return temp;
  31 +}
  32 +
  33 +
  34 +/*
  35 +* int型转字符串
  36 +*/
  37 +void JZsdk_String_int_to_str(int n, char *str)
  38 +{
  39 + char buf[10] = "";
  40 + int i = 0;
  41 + int len = 0;
  42 + int temp = n < 0 ? -n: n; // temp为n的绝对值
  43 +
  44 + if (str == NULL)
  45 + {
  46 + return;
  47 + }
  48 + while(temp)
  49 + {
  50 + buf[i++] = (temp % 10) + '0'; //把temp的每一位上的数存入buf
  51 + temp = temp / 10;
  52 + }
  53 +
  54 + len = n < 0 ? ++i: i; //如果n是负数,则多需要一位来存储负号
  55 + str[i] = 0; //末尾是结束符0
  56 + while(1)
  57 + {
  58 + i--;
  59 + if (buf[len-i-1] ==0)
  60 + {
  61 + break;
  62 + }
  63 + str[i] = buf[len-i-1]; //把buf数组里的字符拷到字符串
  64 + }
  65 + if (i == 0 )
  66 + {
  67 + str[i] = '-'; //如果是负数,添加一个负号
  68 + }
  69 +}
  70 +
  71 +/*
  72 +* longlong型转字符串型
  73 +*/
  74 +size_t JZsdk_String_longlong_to_str(char *s, long long value,int radix)
  75 +{
  76 + char *p, aux;
  77 + unsigned long long v;
  78 + size_t l;
  79 +
  80 + /* Generate the string representation, this method produces
  81 + * an reversed string. */
  82 + v = (value < 0) ? -value : value;
  83 + p = s;
  84 + do {
  85 + *p++ = '0' + (v % radix); // 2
  86 + v /= radix; // 2
  87 + } while (v);
  88 + if (value < 0) *p++ = '-';
  89 +
  90 + /* Compute length and add null term. */
  91 + l = p - s;
  92 + *p = '\0';
  93 +
  94 + /* Reverse the string. */
  95 + p--;
  96 + while (s < p) {
  97 + aux = *s;
  98 + *s = *p;
  99 + *p = aux;
  100 + s++;
  101 + p--;
  102 + }
  103 + return l;
  104 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_string.h
  4 + * 用于文件系统操作
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_STRING_H
  11 +#define JZSDK_STRING_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +
  25 +
  26 +/* Exported functions --------------------------------------------------------*/
  27 +int JZsdk_String_str_to_int(const char *str);
  28 +void JZsdk_String_int_to_str(int n, char *str);
  29 +size_t JZsdk_String_longlong_to_str(char *s, long long value,int radix);
  30 +
  31 +
  32 +#ifdef __cplusplus
  33 +}
  34 +#endif
  35 +
  36 +#endif
  1 +为方便在多个板子之间移植
  2 +sdk包被我分成了多个部分
  3 +1、Base文件
  4 +不需要依赖任何第三方环境,只需要在linux上跑,同时为其他地方,如module提供延时函数等
  5 +2、JZsdk_Normal_Module
  6 +功能模组合集,为了移植时不依赖第三方文件或板子环境,使用JZsdk_module_inport.c进行参数提供
  7 +当你需要使用第三方参数给module时,你应该把接口写在Module_InPort,后Module内的模块调用Module_Inport
  8 +
  9 +当你需要给第三方参数时
  10 +同样应该使用 JZsdk_Module_OutPort.c进行提供
  1 +#include <stdio.h>
  2 +#include <string.h>
  3 +#include <stdlib.h>
  4 +
  5 +#include "UartConnection/UartConnection.h"
  6 +#include "Megaphone_InputAndOutput.h"
  7 +#include "BaseConfig.h"
  8 +#include "version_choose.h"
  9 +
  10 +#include "JZsdk_Uart_UartDeal.h"
  11 +#include "Gimbal_InAndOut.h"
  12 +#include "Uart_Config.h"
  13 +#include "JZsdk_Uart_Send/JZsdk_Uart_Send.h"
  14 +
  15 +// 记录串口是否有被使用,方便ui_contrl进行信息反馈
  16 +struct UartDev_UseFlag
  17 +{
  18 + int UartDev_DEV1 ;
  19 + int UartDev_DEV2 ;
  20 + int UartDev_4G ;
  21 +};
  22 +static struct UartDev_UseFlag UartDevUseFlag = {JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF};
  23 +
  24 +
  25 +/****************
  26 + *
  27 + * 回复串口是否有被调用
  28 + *
  29 + * *************/
  30 +int JZsdk_Get_UartDev_UseFlag(int UART_DEV_NAME)
  31 +{
  32 + if (UART_DEV_NAME == UART_DEV_1)
  33 + {
  34 + return UartDevUseFlag.UartDev_DEV1;
  35 + }
  36 + if (UART_DEV_NAME == UART_DEV_2)
  37 + {
  38 + return UartDevUseFlag.UartDev_DEV2;
  39 + }
  40 + if (UART_DEV_NAME == UART_4G)
  41 + {
  42 + return UartDevUseFlag.UartDev_4G;
  43 + }
  44 +}
  45 +
  46 +/**************
  47 + *
  48 + * 串口部分初始化
  49 + *
  50 + * *********/
  51 +int JZsdk_Uart_Init(int UART_DEV_NAME)
  52 +{
  53 + int Uart_fd = 0;
  54 +
  55 + //初始化的是一号设备
  56 + if (UART_DEV_NAME == UART_DEV_1)
  57 + {
  58 + //1、串口初始化
  59 + Uart_fd = UartConnection_UartEnabled(UART_DEV1_NUM, UART_DEV1_BITRATE);
  60 +
  61 + //2、串口接收初始化
  62 + JZsdk_Uart_UartDeal_Receive(Uart_fd, UART_DEV_1);
  63 +
  64 + //3、将使用标识打开
  65 + UartDevUseFlag.UartDev_DEV1 = JZ_FLAGCODE_ON;
  66 + }
  67 +
  68 + //初始化的是二号设备
  69 + if (UART_DEV_NAME == UART_DEV_2)
  70 + {
  71 + //1、串口初始化
  72 + Uart_fd = UartConnection_UartEnabled(UART_DEV2_NUM, UART_DEV2_BITRATE);
  73 +
  74 + //2、串口接收初始化
  75 + JZsdk_Uart_UartDeal_Receive(Uart_fd, UART_DEV_2);
  76 +
  77 + //3、将使用标识打开
  78 + UartDevUseFlag.UartDev_DEV2 = JZ_FLAGCODE_ON;
  79 + }
  80 +
  81 + if (UART_DEV_NAME == UART_4G)
  82 + {
  83 + //1、串口初始化
  84 + Uart_fd = UartConnection_UartEnabled(COMM_4G_UART_NUM, COMM_4G_UART_BITRATE);
  85 +
  86 + //2、串口接收初始化
  87 + JZsdk_Uart_UartDeal_Receive(Uart_fd, UART_4G);
  88 +
  89 + //3、将使用标识打开
  90 + UartDevUseFlag.UartDev_4G = JZ_FLAGCODE_ON;
  91 + }
  92 +
  93 + printf("%x串口初始化完成\n", UART_DEV_NAME);
  94 +}
  95 +
  96 +
  97 +/*
  98 +*
  99 +* 发送播放结束状态帧
  100 +*
  101 +*/
  102 +int JZsdk_Uart_Reply_PlayStatus_end(int PortNum)
  103 +{
  104 + //发送播放状态结束帧
  105 + JZsdk_Uart_SendDeal_Send_PlayStatus_end(PortNum);
  106 +}
  107 +
  108 +/**************
  109 + *
  110 + * 发送发送播放状态帧
  111 + *
  112 + * ***********/
  113 +int JZsdk_Uart_Send_PlayStatus(int Uartport ,int num)
  114 +{
  115 + JZsdk_Uart_SendDeal_Send_PlayStatus(Uartport, num);
  116 +}
  117 +
  118 +/**************
  119 + *
  120 + * 发送音量
  121 + *
  122 + * ***********/
  123 +int JZsdk_Uart_Reply_Volume(int Uartport,int volume)
  124 +{
  125 + JZsdk_Uart_SendDeal_Reply_Volume(Uartport, volume);
  126 +}
  127 +
  128 +/**************
  129 + *
  130 + * 发送音色
  131 + *
  132 + * ***********/
  133 +int JZsdk_Uart_Reply_TTS_tone(int Uartport,int tone)
  134 +{
  135 + JZsdk_Uart_SendDeal_Reply_TTS_tone(Uartport, tone);
  136 +}
  137 +
  138 +/**************
  139 + *
  140 + * 发送语速
  141 + *
  142 + * ***********/
  143 +int JZsdk_Uart_Reply_TTS_speed(int Uartport,int speed)
  144 +{
  145 + JZsdk_Uart_SendDeal_Reply_TTS_speed(Uartport, speed);
  146 +}
  147 +
  148 +/**************
  149 + *
  150 + * 发送循环状态
  151 + *
  152 + * ***********/
  153 +int JZsdk_Uart_Reply_AudioPlayLoopStatus(int Uartport,int speed)
  154 +{
  155 + JZsdk_Uart_SendDeal_Reply_LoopPlayStatus(Uartport, speed);
  156 +}
  157 +
  158 +
  159 +/**************
  160 + *
  161 + * 发送云台俯仰角度查询值
  162 + *
  163 + * ***********/
  164 +int JZsdk_Uart_Reply_GimbalPitchAngle(int Uartport,int angle)
  165 +{
  166 + JZsdk_Uart_SendDeal_Reply_GimbalPitchAngle(Uartport, angle);
  167 +}
  168 +
  169 +/*************
  170 + *
  171 + * 设置云台俯仰角度
  172 + *
  173 + * **************/
  174 +int JZsdk_Uart_Send_SetGimbalPitch(int Uartport,int angle)
  175 +{
  176 + JZsdk_Uart_SendDeal_Set_GimbalPitchAngle(Uartport, angle);
  177 +}
  178 +
  179 +/*************
  180 + *
  181 + * 查询云台角度
  182 + *
  183 + * **************/
  184 +int JZsdk_Uart_Send_CheckStatus_GimbalAngle(int Uartport ,int FrameSequence)
  185 +{
  186 + JZsdk_Uart_SendDeal_CheckStatus_GimbalAngle(Uartport, FrameSequence);
  187 +}
  188 +
  189 +/*************
  190 + *
  191 + * 设置云台俯仰角度微调
  192 + *
  193 + * **************/
  194 +int JZsdk_Uart_Send_SetGimbalFineTuningPitch(int Uartport,int angle)
  195 +{
  196 + JZsdk_Uart_SendDeal_Set_GimbalFineTuningPitch(Uartport, angle);
  197 +}
  198 +
  199 +/*************
  200 + *
  201 + * 查询云台微调角度
  202 + *
  203 + * **************/
  204 +int JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(int Uartport,int FrameSequence)
  205 +{
  206 + JZsdk_Uart_SendDeal_CheckStatus_GimbalFineTuningPitch(Uartport,FrameSequence);
  207 +}
  208 +
  209 +/*************
  210 + *
  211 + * 发送云台俯仰微调值
  212 + *
  213 + * **************/
  214 +int JZsdk_Uart_Send_GimbalFineTuningPitch(int Uartport,int FrameSequence, int Pitch)
  215 +{
  216 + JZsdk_Uart_SendDeal_Reply_GimbalFineTuningPitch(Uartport,FrameSequence, Pitch);
  217 +}
  218 +
  219 +/*************
  220 + *
  221 + * 设置云台联动
  222 + *
  223 + * **************/
  224 +int JZsdk_Uart_Send_Set_GimbalLinkageControl(int Uartport,int FrameSequence, int value)
  225 +{
  226 + JZsdk_Uart_SendDeal_Set_GimbalLinkageControl(Uartport,FrameSequence, value);
  227 +}
  228 +
  229 +/*************
  230 + *
  231 + * 查询云台联动值
  232 + *
  233 + * **************/
  234 +int JZsdk_Uart_Send_CheckStatus_GimbalLinkage(int Uartport,int FrameSequence)
  235 +{
  236 + JZsdk_Uart_SendDeal_CheckStatus_GimbalLinkage(Uartport,FrameSequence);
  237 +}
  238 +
  239 +/*************
  240 + *
  241 + * 发送云台联动值
  242 + *
  243 + * **************/
  244 +int JZsdk_Uart_Send_GimbalLinkageControl(int Uartport,int FrameSequence, int value)
  245 +{
  246 + JZsdk_Uart_SendDeal_GimbalLinkageControl(Uartport,FrameSequence,value);
  247 +}
  248 +
  249 +/*************
  250 + *
  251 + * 设置云台最大最小值
  252 + *
  253 + * **************/
  254 +int JZsdk_Uart_Send_SetGimbalRange(int Uartport,int FrameSequence, int value)
  255 +{
  256 + JZsdk_Uart_SendDeal_SetGimbalRange(Uartport,FrameSequence,value);
  257 +}
  258 +
  259 +/*******************************************************************************************************************************
  260 + *
  261 + * 探照灯部分
  262 + *
  263 + * *******************************************************************************************************************************/
  264 +
  265 +/*************
  266 + *
  267 + * 设置探照灯爆闪频率
  268 + *
  269 + * **************/
  270 +int JZsdk_Uart_Send_SearchLight_SetFrequency(int Uartport,int Frequency)
  271 +{
  272 + JZsdk_Uart_SendDeal_Set_SearchLightFrequency(Uartport ,Frequency);
  273 +}
  274 +
  275 +/*************
  276 + *
  277 + * 探照灯控制
  278 + *
  279 + * **************/
  280 +int JZsdk_Uart_Send_SearchLight_Control(int Uartport,int mode)
  281 +{
  282 + JZsdk_Uart_SendDeal_SearchLight_Control(Uartport, mode);
  283 +}
  284 +
  285 +/*************
  286 + *
  287 + * 探照灯亮度
  288 + *
  289 + * **************/
  290 +int JZsdk_Uart_Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen)
  291 +{
  292 + JZsdk_Uart_SendDeal_SearchLight_SetLumen(Uartport, LeftLumen, RightLumen);
  293 +}
  294 +
  295 +/*************
  296 + *
  297 + * 查询爆闪频率
  298 + *
  299 + * **************/
  300 +int JZsdk_Uart_Send_SearchLight_CheckStatus_Frequency(int Uartport)
  301 +{
  302 + JZsdk_Uart_SendDeal_Set_SearchLight_CheckStatus_Frequency(Uartport);
  303 +}
  304 +
  305 +/*************
  306 + *
  307 + * 查询探照灯亮度
  308 + *
  309 + * **************/
  310 +int JZsdk_Uart_Send_SearchLight_CheckStatus_Lumen(int Uartport)
  311 +{
  312 + JZsdk_Uart_SendDeal_Set_SearchLight_CheckStatus_Lumen(Uartport);
  313 +}
  314 +
  315 +/*************
  316 + *
  317 + * 查询探照灯模式
  318 + *
  319 + * **************/
  320 +int JZsdk_Uart_Send_SearchLight_CheckStatus_Mode(int Uartport)
  321 +{
  322 + JZsdk_Uart_SendDeal_Set_SearchLight_CheckStatus_Mode(Uartport);
  323 +}
  324 +
  325 +/*************
  326 + *
  327 + * 查询探照灯属性
  328 + *
  329 + * **************/
  330 +int JZsdk_Uart_Send_SearchLight_CheckStatus_LightAttribute(int Uartport)
  331 +{
  332 + JZsdk_Uart_SendDeal_CheckStatus_LightAttribute(Uartport);
  333 +}
  334 +
  335 +/*************
  336 + *
  337 + * 查询探照灯温度
  338 + *
  339 + * **************/
  340 +int JZsdk_Uart_Send_SearchLight_CheckStatus_SearchLightTemperture(int Uartport)
  341 +{
  342 + JZsdk_Uart_SendDeal_CheckStatus_SearchLightTemperture(Uartport);
  343 +}
  344 +
  345 +
  346 +/*************
  347 + *
  348 + * 探照灯消息订阅
  349 + *
  350 + * **************/
  351 +int JZsdk_Uart_Send_MessageSubcription_Control(int Uartport,int value)
  352 +{
  353 + JZsdk_Uart_SendDeal_MessageSubcription_Control(Uartport, value);
  354 +}
  355 +/*******************************************************************************************************************************
  356 + *
  357 + * 警灯部分
  358 + *
  359 + * *******************************************************************************************************************************/
  360 +
  361 +/*************
  362 + *
  363 + * 设置警灯状态
  364 + *
  365 + * **************/
  366 +int JZsdk_Uart_Send_Set_WarningLight_Status(int Uartport,int status, int mode)
  367 +{
  368 + JZsdk_Uart_SendDeal_Set_WarningLight_Status(Uartport, status, mode);
  369 +}
  370 +/*************
  371 + *
  372 + * 设置警灯颜色
  373 + *
  374 + * **************/
  375 +int JZsdk_Uart_Send_Set_WarningLight_Color(int Uartport,int color1, int color2)
  376 +{
  377 + JZsdk_Uart_SendDeal_Set_WarningLight_Color(Uartport, color1, color2);
  378 +}
  379 +
  380 +/*******************************************************************************************************************************
  381 + *
  382 + * 5B类部分
  383 + *
  384 + * *******************************************************************************************************************************/
  385 +/*************
  386 + *
  387 + * 发送探照灯爆闪频率
  388 + *
  389 + * **************/
  390 +int JZsdk_Uart_Send_SearchLight_Frequency(int Uartport,int value)
  391 +{
  392 + JZsdk_Uart_SendDeal_SearchLight_Frequency(Uartport, value);
  393 +}
  394 +
  395 +/*************
  396 + *
  397 + * 发送探照灯模式
  398 + *
  399 + * **************/
  400 +int JZsdk_Uart_Send_SearchLight_Mode(int Uartport,int value)
  401 +{
  402 + JZsdk_Uart_SendDeal_SearchLight_Mode(Uartport, value);
  403 +}
  404 +
  405 +/*************
  406 + *
  407 + * 发送探照灯亮度
  408 + *
  409 + * **************/
  410 +int JZsdk_Uart_Send_SearchLight_Lumen(int Uartport,int LeftLumen, int RightLumen)
  411 +{
  412 + JZsdk_Uart_SendDeal_SearchLight_Lumen(Uartport, LeftLumen, RightLumen);
  413 +}
  414 +
  415 +/*************
  416 + *
  417 + * 发送探照灯温度
  418 + *
  419 + * **************/
  420 +int JZsdk_Uart_Send_SearchLight_Temperature(int Uartport,int LeftTemperature, int RightTemperature)
  421 +{
  422 + JZsdk_Uart_SendDeal_SearchLight_Temperature(Uartport, LeftTemperature, RightTemperature);
  423 +}
  424 +
  425 +
  426 +/*************
  427 + *
  428 + * 发送对外供电电源的状态
  429 + *
  430 + * **************/
  431 +int JZsdk_Uart_Send_OutputPowerStatus(int Uartport, int FrameSequence, int status)
  432 +{
  433 + JZsdk_Uart_SendDeal_OutputPowerStatus(Uartport, FrameSequence, status);
  434 +}
  435 +
  436 +/*******************************************************************************************************************************
  437 + *
  438 + * 警灯部分
  439 + *
  440 + * *******************************************************************************************************************************/
  441 +/*************
  442 + *
  443 + * 发送警灯状态
  444 + *
  445 + * **************/
  446 +int JZsdk_Uart_Send_WarningLight_Status(int Uartport, int status, int mode)
  447 +{
  448 + JZsdk_Uart_SendDeal_WarningLight_Status(Uartport, status, mode);
  449 +}
  450 +
  451 +/*************
  452 + *
  453 + * 发送警灯颜色
  454 + *
  455 + * **************/
  456 +int JZsdk_Uart_Send_WarningLight_Color(int Uartport, int color1, int color2)
  457 +{
  458 + JZsdk_Uart_SendDeal_WarningLight_Color(Uartport, color1, color2);
  459 +}
  460 +
  461 +
  462 +/*************
  463 + *
  464 + * 查询警灯状态
  465 + *
  466 + * **************/
  467 +int JZsdk_Uart_Send_CheckStatus_WarningLightStatus(int Uartport)
  468 +{
  469 + JZsdk_Uart_SendDeal_CheckStatus_WarningLightStatus(Uartport);
  470 +}
  471 +
  472 +
  473 +/*************
  474 + *
  475 + * 查询警灯颜色
  476 + *
  477 + * **************/
  478 +int JZsdk_Uart_Send_CheckStatus_WarningLightColor(int Uartport)
  479 +{
  480 + JZsdk_Uart_SendDeal_CheckStatus_WarningLightColor(Uartport);
  481 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_Uart_Input.h
  4 + * JZsdk_Uart_Input
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_UART_INPUT_H
  11 +#define JZSDK_UART_INPUT_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +
  20 +/* Exported constants --------------------------------------------------------*/
  21 +/* 常亮定义*/
  22 +
  23 +/* Exported types ------------------------------------------------------------*/
  24 +
  25 +/* Exported functions --------------------------------------------------------*/
  26 +int JZsdk_Uart_Init(int UART_DEV_NAME);
  27 +int JZsdk_Get_UartDev_UseFlag(int UART_DEV_NAME);
  28 +
  29 +int JZsdk_Uart_Reply_PlayStatus_end(int PortNum);
  30 +int JZsdk_Uart_Send_PlayStatus(int Uartport ,int num);
  31 +int JZsdk_Uart_Reply_Volume(int Uartport,int volume);
  32 +int JZsdk_Uart_Reply_TTS_tone(int Uartport,int tone);
  33 +int JZsdk_Uart_Reply_TTS_speed(int Uartport,int speed);
  34 +int JZsdk_Uart_Reply_AudioPlayLoopStatus(int Uartport,int speed);
  35 +
  36 +
  37 +int JZsdk_Uart_Reply_GimbalPitchAngle(int Uartport,int angle);
  38 +int JZsdk_Uart_Send_SetGimbalPitch(int Uartport,int angle);
  39 +int JZsdk_Uart_Send_SetGimbalFineTuningPitch(int Uartport,int angle);
  40 +int JZsdk_Uart_Send_Gimbal_Pitch(int Uartport, int pitch);
  41 +int JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(int Uartport,int FrameSequence);
  42 +int JZsdk_Uart_Send_GimbalFineTuningPitch(int Uartport,int FrameSequence, int Pitch);
  43 +int JZsdk_Uart_Send_Set_GimbalLinkageControl(int Uartport,int FrameSequence, int value);
  44 +int JZsdk_Uart_Send_CheckStatus_GimbalLinkage(int Uartport,int FrameSequence);
  45 +int JZsdk_Uart_Send_GimbalLinkageControl(int Uartport,int FrameSequence, int value);
  46 +int JZsdk_Uart_Send_CheckStatus_GimbalAngle(int Uartport ,int FrameSequence);
  47 +int JZsdk_Uart_Send_SetGimbalRange(int Uartport,int FrameSequence, int value);
  48 +
  49 +int JZsdk_Uart_Send_SearchLight_SetFrequency(int Uartport,int Frequency);
  50 +int JZsdk_Uart_Send_SearchLight_Control(int Uartport,int mode);
  51 +int JZsdk_Uart_Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen);
  52 +
  53 +int JZsdk_Uart_Send_MessageSubcription_Control(int Uartport,int value);
  54 +
  55 +int JZsdk_Uart_Send_Set_WarningLight_Status(int Uartport,int status, int mode);
  56 +int JZsdk_Uart_Send_Set_WarningLight_Color(int Uartport,int color1, int color2);
  57 +
  58 +int JZsdk_Uart_Send_SearchLight_CheckStatus_Frequency(int Uartport);
  59 +int JZsdk_Uart_Send_SearchLight_CheckStatus_Lumen(int Uartport);
  60 +int JZsdk_Uart_Send_SearchLight_CheckStatus_Mode(int Uartport);
  61 +int JZsdk_Uart_Send_SearchLight_CheckStatus_LightAttribute(int Uartport);
  62 +int JZsdk_Uart_Send_SearchLight_CheckStatus_SearchLightTemperture(int Uartport);
  63 +
  64 +int JZsdk_Uart_Send_SearchLight_Frequency(int Uartport,int value);
  65 +int JZsdk_Uart_Send_SearchLight_Mode(int Uartport,int value);
  66 +int JZsdk_Uart_Send_SearchLight_Lumen(int Uartport,int LeftLumen, int RightLumen);
  67 +int JZsdk_Uart_Send_SearchLight_Temperature(int Uartport,int LeftTemperature, int RightTemperature);
  68 +
  69 +
  70 +int JZsdk_Uart_Send_WarningLight_Status(int Uartport, int status, int mode);
  71 +int JZsdk_Uart_Send_WarningLight_Color(int Uartport, int color1, int color2);
  72 +int JZsdk_Uart_Send_CheckStatus_WarningLightStatus(int Uartport);
  73 +int JZsdk_Uart_Send_CheckStatus_WarningLightColor(int Uartport);
  74 +
  75 +
  76 +int JZsdk_Uart_Send_OutputPowerStatus(int Uartport, int FrameSequence, int status);
  77 +
  78 +
  79 +#ifdef __cplusplus
  80 +}
  81 +#endif
  82 +
  83 +#endif
  1 +#include <stdio.h>
  2 +#include <string.h>
  3 +#include <stdlib.h>
  4 +
  5 +#include "UartConnection/UartConnection.h"
  6 +#include "Megaphone_InputAndOutput.h"
  7 +#include "BaseConfig.h"
  8 +#include "version_choose.h"
  9 +
  10 +#include "JZsdk_Uart_UartDeal.h"
  11 +#include "Gimbal_InAndOut.h"
  12 +#include "Uart_Config.h"
  13 +#include "JZsdk_Uart_Send/JZsdk_Uart_Send.h"
  14 +
  15 +#include "UI_control.h"
  16 +#include "JZsdkLib.h"
  17 +
  18 +static int SecondaryDeviceName = 0x00; // 从设备名,用于多设备相连时通知控制端 从机设备名
  19 +
  20 +/******
  21 + *
  22 + * 开关功放
  23 + *
  24 + * *******/
  25 +int JZsdk_Uart_Set_Amplifier(int status)
  26 +{
  27 + Megaphone_set_amplifier(status);
  28 +}
  29 +
  30 +/******
  31 + *
  32 + * 调节音量
  33 + *
  34 + * *******/
  35 +T_JZsdkReturnCode JZsdk_Uart_Set_Volume(int DeviceName, int value)
  36 +{
  37 + return UIcontrol_SetVolume(DeviceName, value);
  38 +}
  39 +
  40 +/*********
  41 + *
  42 + * 1、TTS播放
  43 + *
  44 + * *********/
  45 +T_JZsdkReturnCode JZsdk_Uart_TTS_Play(int DeviceName, char *data, int len)
  46 +{
  47 + return UIcontrol_TTS_Play(DeviceName, data, len);
  48 +}
  49 +
  50 +/*********
  51 + *
  52 + * 2、TTS设置音色
  53 + *
  54 + * *********/
  55 +T_JZsdkReturnCode JZsdk_Uart_TTS_SetTone(int DeviceName, int tone)
  56 +{
  57 + return UIcontrol_Set_TTS_tone(DeviceName, tone);
  58 +}
  59 +
  60 +/*********
  61 + *
  62 + * 3、TTS设置语速
  63 + *
  64 + * *********/
  65 +T_JZsdkReturnCode JZsdk_Uart_TTS_SetSpeed(int DeviceName, int speed)
  66 +{
  67 + return UIcontrol_Set_TTS_speed(DeviceName, speed);
  68 +}
  69 +
  70 +/*********
  71 + *
  72 + * 刷新歌曲列表
  73 + *
  74 + *
  75 + **********/
  76 +int JZsdk_Uart_Flush_MusicList()
  77 +{
  78 + Megaphone_Flush_MusicList();
  79 +}
  80 +/*********
  81 + *
  82 + * 获取音乐总数
  83 + *
  84 + *
  85 + **********/
  86 +int JZsdk_Uart_get_music_list_sum()
  87 +{
  88 + return Megaphone_get_music_list_sum();
  89 +}
  90 +/*********
  91 + *
  92 + * 获取音乐名
  93 + *
  94 + *
  95 + **********/
  96 +int JZsdk_Uart_get_music_list_name(int num, char *music_name, int *music_name_length)
  97 +{
  98 + return Megaphone_get_music_list_name(num, music_name, music_name_length);
  99 +}
  100 +
  101 +/*********
  102 + *
  103 + * 查询音量
  104 + *
  105 + *
  106 + **********/
  107 +int JZsdk_Uart_CheckStatus_volume()
  108 +{
  109 + return Megaphone_get_music_volume();
  110 +}
  111 +/*********
  112 + *
  113 + * 查询播放状态
  114 + *
  115 + *
  116 + **********/
  117 +int JZsdk_Uart_CheckStatus_play()
  118 +{
  119 + return Megaphone_get_play_status();
  120 +}
  121 +/*********
  122 + *
  123 + * 查询云台角度
  124 + *
  125 + *
  126 + **********/
  127 +int JZsdk_Uart_CheckStatus_gimbal(int *PitchAngle, int *YawAngle)
  128 +{
  129 + UIcontrol_CheckStatus_GimbalAngle(PitchAngle, YawAngle);
  130 +}
  131 +/*********
  132 + *
  133 + * 查询云台微调值
  134 + *
  135 + *
  136 + **********/
  137 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_GimbalFineTuning(int DeviceName, int FrameSequence)
  138 +{
  139 + // 查询云台微调
  140 + printf("查询云台微调值\n");
  141 +
  142 + // 1、查询本地云台微调
  143 + int FineTunigPitch, FineTunigYaw;
  144 + int ret = UIcontrol_CheckStatus_GimbalPitchFineTuning(&FineTunigPitch, &FineTunigYaw);
  145 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  146 + {
  147 + // 回复操作失败
  148 + JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
  149 + return ret;
  150 + }
  151 +
  152 + // 2、发送本地云台微调
  153 + JZsdk_Uart_SendDeal_Reply_GimbalFineTuningPitch(DeviceName, FrameSequence, FineTunigPitch);
  154 +}
  155 +
  156 +/*********
  157 + *
  158 + * 查询播放文件名
  159 + *
  160 + *
  161 + **********/
  162 +int JZsdk_Uart_CheckStatus_PlayFileName(char *music_name, int *music_name_len)
  163 +{
  164 + Megaphone_get_play_FileName(music_name, music_name_len);
  165 +}
  166 +/*********
  167 + *
  168 + * 查询软件版本号
  169 + *
  170 + *
  171 + **********/
  172 +int JZsdk_Uart_CheckStatus_SoftwareVersion(char *majorVersion, char *minorVersion, char *modifyVersion, char *debugVersion)
  173 +{
  174 + *majorVersion = MAJOR_VERSION;
  175 + *minorVersion = MINOR_VERSION;
  176 + *modifyVersion = MODIFY_VERSION;
  177 + *debugVersion = DEBUG_VERSION;
  178 +}
  179 +/*********
  180 + *
  181 + * 查询是否打开循环
  182 + *
  183 + *
  184 + **********/
  185 +int JZsdk_Uart_CheckStatus_LoopPlay()
  186 +{
  187 +
  188 + return Megaphone_Get_LoopPlay();
  189 +}
  190 +/*********
  191 + *
  192 + * 查询音色
  193 + *
  194 + *
  195 + **********/
  196 +int JZsdk_Uart_CheckStatus_TTS_tone()
  197 +{
  198 +
  199 + return Megaphone_Get_TTS_tone();
  200 +}
  201 +/*********
  202 + *
  203 + * 查询语速
  204 + *
  205 + *
  206 + **********/
  207 +int JZsdk_Uart_CheckStatus_TTS_speed()
  208 +{
  209 +
  210 + return Megaphone_Get_TTS_speed();
  211 +}
  212 +
  213 +/***
  214 + *
  215 + *
  216 + * 播放歌曲
  217 + *
  218 + * ***/
  219 +T_JZsdkReturnCode JZsdk_Uart_PlayMusic(int DeviceName, char *music_name, int datasize)
  220 +{
  221 + return UIcontrol_PlayAudioFile(DeviceName, music_name, datasize);
  222 +}
  223 +
  224 +/*********
  225 + *
  226 + * 音频继续播放
  227 + *
  228 + *
  229 + **********/
  230 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayContinue(int DeviceName)
  231 +{
  232 + return UIcontrol_ContinuePlayAudio(DeviceName);
  233 +}
  234 +/*********
  235 + *
  236 + * 音频暂停播放
  237 + *
  238 + *
  239 + **********/
  240 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayPause(int DeviceName)
  241 +{
  242 + return UIcontrol_PausePlayAudio(DeviceName);
  243 +}
  244 +/*********
  245 + *
  246 + * 音频停止播放
  247 + *
  248 + *
  249 + **********/
  250 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayStop(int DeviceName)
  251 +{
  252 + return UIcontrol_StopPlayAudio(DeviceName);
  253 +}
  254 +
  255 +/*********
  256 + *
  257 + * 音频上一曲
  258 + *
  259 + *
  260 + **********/
  261 +T_JZsdkReturnCode JZsdk_Uart_audio_LastSong(int DeviceName)
  262 +{
  263 + return UIcontrol_LastSong(DeviceName);
  264 +}
  265 +
  266 +/*********
  267 + *
  268 + * 音频下一曲
  269 + *
  270 + *
  271 + **********/
  272 +T_JZsdkReturnCode JZsdk_Uart_audio_NextSong(int DeviceName)
  273 +{
  274 + return UIcontrol_NextSong(DeviceName);
  275 +}
  276 +
  277 +/*********
  278 + *
  279 + * 12、循环播放
  280 + *
  281 + *
  282 + **********/
  283 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayLoop(int DeviceName, int mode)
  284 +{
  285 + return UIcontrol_Set_AudioPlayLoop(DeviceName, mode);
  286 +}
  287 +
  288 +/****************************************************************************************************************************************************
  289 + *
  290 + * 录音opus 接口部分
  291 + *
  292 + ****************************************************************************************************************************************************/
  293 +
  294 +/*********
  295 + *
  296 + * 播放固定位置的opus音频
  297 + *
  298 + *
  299 + **********/
  300 +T_JZsdkReturnCode JZsdk_Uart_Opus_PlayFixedFile(int DeviceName)
  301 +{
  302 + return UIcontrol_Opus_PlayFixedFile(DeviceName);
  303 +}
  304 +
  305 +/*
  306 + *
  307 + * 存储opus文件开始
  308 + *
  309 + */
  310 +int JZsdk_Uart_SaveOpusStart(int decode_rate)
  311 +{
  312 + Megaphone_SaveOpusStart(decode_rate);
  313 +}
  314 +
  315 +/*
  316 + *
  317 + * 存储opus文件中
  318 + *
  319 + */
  320 +int JZsdk_Uart_SaveOpusTrans(char *SaveData, int size)
  321 +{
  322 + Megaphone_SaveOpusTrans(SaveData, size);
  323 +}
  324 +
  325 +/*
  326 + *
  327 + * 存储opus文件结束
  328 + *
  329 + */
  330 +int JZsdk_Uart_SaveOpusStop()
  331 +{
  332 + Megaphone_SaveOpusStop();
  333 +}
  334 +
  335 +/****************************************************************************************************************************************************
  336 + *
  337 + * 实时喊话opus 接口部分
  338 + *
  339 + ****************************************************************************************************************************************************/
  340 +int JZsdk_Uart_RealTimeVoiceStart(int decode_rate)
  341 +{
  342 + Megaphone_RealTimeVoice_Start(decode_rate);
  343 +}
  344 +
  345 +int JZsdk_Uart_RealTimeVoiceTrans(char *data, int length)
  346 +{
  347 + Megaphone_RealTimeVoice_Trans(data, length);
  348 +}
  349 +
  350 +int JZsdk_Uart_RealTimeVoiceClose()
  351 +{
  352 + Megaphone_RealTimeVoice_Close();
  353 +}
  354 +
  355 +/****************************************************************************************************************************************************
  356 + *
  357 + * 实时MP2 接口部分
  358 + *
  359 + ****************************************************************************************************************************************************/
  360 +T_JZsdkReturnCode JZsdk_Uart_RealTimeMP2_start(int decode_rate)
  361 +{
  362 + return Megaphone_RealTimeMP2_start();
  363 +}
  364 +
  365 +T_JZsdkReturnCode JZsdk_Uart_RealTimeMP2_Trans(unsigned char *data, int length)
  366 +{
  367 + return Megaphone_RealTimeMP2_trans(data, length);
  368 +}
  369 +
  370 +T_JZsdkReturnCode JZsdk_Uart_RealTimeMP2_Close()
  371 +{
  372 + Megaphone_RealTimeMP2_stop();
  373 +}
  374 +
  375 +/****************************************************************************************************************************************************
  376 + *
  377 + * 云台部分
  378 + *
  379 + ****************************************************************************************************************************************************/
  380 +
  381 +/*********
  382 + *
  383 + * 云台俯仰控制
  384 + *
  385 + *
  386 + **********/
  387 +T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchControl(int DeviceName, int Gimbal_angle)
  388 +{
  389 + return UIcontrol_Set_GimbalPitchAngle(DeviceName, Gimbal_angle);
  390 +}
  391 +
  392 +/*********
  393 + *
  394 + * 云台俯仰微调角度
  395 + *
  396 + *
  397 + **********/
  398 +T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchFineTuningControl(int DeviceName, int FrameSequence, int Gimbal_angle)
  399 +{
  400 + T_JZsdkReturnCode ret = UIcontrol_Set_GimbalPitchFineTuning(DeviceName, Gimbal_angle);
  401 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  402 + {
  403 + // 回复操作成功
  404 + JZsdk_Uart_SendDeal_Reply_Sucesss(DeviceName, FrameSequence);
  405 + }
  406 + else
  407 + {
  408 + // 回复操作失败
  409 + JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
  410 + }
  411 +}
  412 +
  413 +/****************************************************************************************************************************************************
  414 + *
  415 + * 探照灯部分
  416 + *
  417 + ****************************************************************************************************************************************************/
  418 +/*********
  419 + *
  420 + * 探照灯爆闪频率控制
  421 + *
  422 + *
  423 + **********/
  424 +T_JZsdkReturnCode JZsdk_Uart_Lighting_SetSearchLightFrequency(int DeviceName, int Frequency)
  425 +{
  426 + return UIcontrol_Set_SearchLightFrequency(DeviceName, Frequency);
  427 +}
  428 +
  429 +/*********
  430 + *
  431 + * 灯光模式控制
  432 + *
  433 + **********/
  434 +T_JZsdkReturnCode JZsdk_Uart_SearchLight_Control(int DeviceName, int mode)
  435 +{
  436 + return UIcontrol_SearchLightControl(DeviceName, mode);
  437 +}
  438 +
  439 +/*********
  440 + *
  441 + * 灯光亮度
  442 + *
  443 + **********/
  444 +T_JZsdkReturnCode JZsdk_Uart_SearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen)
  445 +{
  446 + return UIcontrol_Set_SearchLightLumen(DeviceName, LeftLumen, RightLumen);
  447 +}
  448 +
  449 +/*********
  450 + *
  451 + * 灯光属性查询
  452 + *
  453 + **********/
  454 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightLightAttribute(int DeviceName, int FrameSequence)
  455 +{
  456 + // 1、查询灯光属性
  457 + int Light_Frequency;
  458 + int Light_Mode;
  459 + int Light_LeftLumen;
  460 + int Light_RightLumen;
  461 + T_JZsdkReturnCode ret = UIcontrol_CheckStatus_SearchLightLightAttribute(&Light_Frequency, &Light_Mode, &Light_LeftLumen, &Light_RightLumen);
  462 +
  463 + // 2、回复灯光属性
  464 + JZsdk_Uart_SendDeal_SearchLight_Frequency(DeviceName, Light_Frequency);
  465 + JZsdk_Uart_SendDeal_SearchLight_Mode(DeviceName, Light_Mode);
  466 + JZsdk_Uart_SendDeal_SearchLight_Lumen(DeviceName, Light_LeftLumen, Light_RightLumen);
  467 +}
  468 +
  469 +/*********
  470 + *
  471 + * 灯光温度查询
  472 + *
  473 + **********/
  474 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightTemperture(int DeviceName, int FrameSequence)
  475 +{
  476 + // 1、查询灯光温度
  477 + int Light_LeftTemperature;
  478 + int Light_RightTemperature;
  479 + T_JZsdkReturnCode ret = UIcontrol_CheckStatus_SearchLightTemperture(&Light_LeftTemperature, &Light_RightTemperature);
  480 +
  481 + // 2、回复灯光温度
  482 + JZsdk_Uart_SendDeal_SearchLight_Temperature(DeviceName, Light_LeftTemperature, Light_RightTemperature);
  483 +}
  484 +
  485 +/*********
  486 + *
  487 + * 灯光消息订阅控制
  488 + *
  489 + **********/
  490 +T_JZsdkReturnCode JZsdk_Uart_SearchLight_SubscriptionControl(int DeviceName, int value)
  491 +{
  492 + if (DeviceName == UART_DEV_2)
  493 + {
  494 + JZsdk_Uart_SendDeal_MessageSubcription_Control(UART_DEV_1, value);
  495 + }
  496 + else if (DeviceName == UART_DEV_1)
  497 + {
  498 + JZsdk_Uart_SendDeal_MessageSubcription_Control(UART_DEV_2, value);
  499 + }
  500 +
  501 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  502 +}
  503 +
  504 +/*********
  505 + *
  506 + * 警灯模式控制
  507 + *
  508 + **********/
  509 +T_JZsdkReturnCode JZsdk_Uart_WarningLight_ModeControl(int DeviceName, int status, int mode)
  510 +{
  511 + return UIcontrol_Set_WarningLight_ModeControl(DeviceName, status, mode);
  512 +}
  513 +
  514 +/*********
  515 + *
  516 + * 警灯颜色控制
  517 + *
  518 + **********/
  519 +T_JZsdkReturnCode JZsdk_Uart_WarningLight_SetColor(int DeviceName, int color1, int color2)
  520 +{
  521 + return UIcontrol_Set_WarningLight_Color(DeviceName, color1, color2);
  522 +}
  523 +
  524 +/*********
  525 + *
  526 + * 警灯状态查询
  527 + *
  528 + **********/
  529 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightStatus(int DeviceName, int FrameSequence)
  530 +{
  531 + // 1、查询警灯状态查询
  532 + int status;
  533 + int Mode;
  534 + T_JZsdkReturnCode ret = UIcontrol_CheckStatus_WarningLightStatus(&status, &Mode);
  535 +
  536 + // 2、回复警灯状态查询
  537 + JZsdk_Uart_SendDeal_WarningLight_Status(DeviceName, status, Mode);
  538 +}
  539 +
  540 +/*********
  541 + *
  542 + * 警灯颜色查询
  543 + *
  544 + **********/
  545 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightColor(int DeviceName, int FrameSequence)
  546 +{
  547 + // 1、查询灯光温度
  548 + int color1;
  549 + int color2;
  550 +
  551 + T_JZsdkReturnCode ret = UIcontrol_CheckStatus_WarningLightColor(&color1, &color2);
  552 +
  553 + // 2、回复警灯颜色
  554 + JZsdk_Uart_SendDeal_WarningLight_Color(DeviceName, color1, color2);
  555 +}
  556 +
  557 +/*
  558 + *
  559 + * 获取本地主设备名
  560 + *
  561 + */
  562 +int JZsdk_Uart_GetVersionReplay()
  563 +{
  564 + switch (DEVICE_VERSION)
  565 + {
  566 + case JZ_H1E:
  567 + return 0x11;
  568 + break;
  569 +
  570 + case JZ_H150S:
  571 + return 0x13;
  572 + break;
  573 +
  574 + case JZ_H150T:
  575 + return 0x15;
  576 + break;
  577 +
  578 + case JZ_H10:
  579 + return 0x12;
  580 + break;
  581 + case JZ_H10T:
  582 + return 0x14;
  583 + break;
  584 +
  585 + case JZ_H1T:
  586 + return 0x16;
  587 + break;
  588 +
  589 + case JZ_U3:
  590 + return 0x17;
  591 + break;
  592 +
  593 + default:
  594 + return 0x00;
  595 + break;
  596 + };
  597 +}
  598 +
  599 +/*
  600 + *
  601 + * 设置工作模式
  602 + *
  603 + */
  604 +int JZsdk_Uart_SetMainWorkMode(int mode)
  605 +{
  606 + Main_WorkModeSet(mode);
  607 +}
  608 +
  609 +/*
  610 + *
  611 + * 查询序列号
  612 + *
  613 + */
  614 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SerialNumber(int UartPort, int FrameSequence)
  615 +{
  616 + // 1、获取序列号
  617 + char SerialNum[14];
  618 + T_JZsdkReturnCode ret = GetSerialNumber(SerialNum);
  619 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  620 + {
  621 + JZSDK_LOG_ERROR("获取序列号失败");
  622 +
  623 + JZsdk_Uart_SendDeal_Reply_Failure(UartPort, FrameSequence);
  624 +
  625 + return ret;
  626 + }
  627 +
  628 + // 2、发送序列号
  629 + JZsdk_Uart_SendDeal_SerialNumber(UartPort, FrameSequence, SerialNum);
  630 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  631 +}
  632 +
  633 +/****************************************************************************************************************************************************
  634 + *
  635 + * AudioFile 接口部分
  636 + *
  637 + ****************************************************************************************************************************************************/
  638 +/*
  639 +1、开始传输的音频文件保存
  640 +2、存储音频文件中
  641 +3、存储音频文件结束
  642 +*/
  643 +/*********
  644 + *
  645 + * 1、开始传输的音频文件保存
  646 + *
  647 + *
  648 + **********/
  649 +T_JZsdkReturnCode JZsdk_Uart_SaveAudioFileStart(char *FileName)
  650 +{
  651 + return Megaphone_SaveAudioFileStart(FileName);
  652 +}
  653 +
  654 +/*
  655 + *
  656 + * 2、存储音频文件中
  657 + *
  658 + */
  659 +int JZsdk_Uart_SaveAudioFileTrans(char *SaveData, int size)
  660 +{
  661 + Megaphone_SaveAudioFileTrans(SaveData, size);
  662 +}
  663 +
  664 +/*
  665 + *
  666 + * 3、存储音频文件结束
  667 + *
  668 + */
  669 +int JZsdk_Uart_SaveAudioFileStop()
  670 +{
  671 + Megaphone_SaveAudioFileStop();
  672 +}
  673 +
  674 +/****************************************************************************************************************************************************
  675 + *
  676 + * 对外供电部分
  677 + *
  678 + ****************************************************************************************************************************************************/
  679 +/*********
  680 + *
  681 + * 对外供电开关
  682 + *
  683 + **********/
  684 +T_JZsdkReturnCode JZsdk_Uart_OutPutPower_Control(int DeviceName, int FrameSequence, int Value)
  685 +{
  686 + //1、设置本地的值
  687 + T_JZsdkReturnCode ret = UIcontrol_Set_OutPutPower_Control(DeviceName, Value);
  688 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  689 + {
  690 + JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
  691 + }
  692 +
  693 + //2、回复操作成功
  694 + JZsdk_Uart_SendDeal_Reply_Sucesss(DeviceName, FrameSequence);
  695 +}
  696 +
  697 +/*********
  698 + *
  699 + * 对外电源查询
  700 + *
  701 + **********/
  702 +T_JZsdkReturnCode JZsdk_Uart_Checkstatus_OutPutPower(int DeviceName, int FrameSequence)
  703 +{
  704 + int OutPutPowerValue = JZ_FLAGCODE_OFF;
  705 +
  706 + //1、获取电源值
  707 + T_JZsdkReturnCode ret = UIcontrol_CheckStatus_OutPutPowerValue(&OutPutPowerValue);
  708 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  709 + {
  710 + JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
  711 + }
  712 +
  713 + //2、发送电源值
  714 + JZsdk_Uart_SendDeal_OutputPowerStatus(DeviceName, FrameSequence, OutPutPowerValue);
  715 +}
  716 +
  717 +
  718 +/********************************************************************************************************
  719 +********* ********|
  720 +********* ********|
  721 +********* ********|
  722 +********* ********|
  723 +********* ********|
  724 +********* 5B类部分 ********|
  725 +********* ********|
  726 +********* ********|
  727 +********* ********|
  728 +********* ********|
  729 +********* ********|
  730 +*********************************************************************************************************/
  731 +
  732 +/*******************************************************************************************************************************
  733 + *
  734 + * 灯光部分
  735 + *
  736 + * *****************************************************************************************************************************/
  737 +/*********
  738 + *
  739 + * 收到灯光频率
  740 + *
  741 + **********/
  742 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Frequency(int DeviceName, int Frequency)
  743 +{
  744 + UIcontrol_ObtainSearchLight_Frequency(DeviceName, Frequency);
  745 +}
  746 +
  747 +/*********
  748 + *
  749 + * 收到灯光模式
  750 + *
  751 + **********/
  752 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Mode(int DeviceName, int mode)
  753 +{
  754 + UIcontrol_ObtainSearchLight_Mode(DeviceName, mode);
  755 +}
  756 +
  757 +/*********
  758 + *
  759 + * 收到灯光亮度
  760 + *
  761 + **********/
  762 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen)
  763 +{
  764 + UIcontrol_ObtainSearchLight_Lumen(DeviceName, LeftLumen, RightLumen);
  765 +}
  766 +
  767 +/*********
  768 + *
  769 + * 收到探照灯温度
  770 + *
  771 + **********/
  772 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Temperature(int DeviceName, int LeftTemperature, int RightTemperature)
  773 +{
  774 + UIcontrol_ObtainSearchLight_Temperature(DeviceName, LeftTemperature, RightTemperature);
  775 +}
  776 +
  777 +/*******************************************************************************************************************************
  778 + *
  779 + * 云台部分
  780 + *
  781 + * *****************************************************************************************************************************/
  782 +/*********
  783 + *
  784 + * 收到云台俯仰
  785 + *
  786 + **********/
  787 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Pitch(int DeviceName, int pitch)
  788 +{
  789 + UIcontrol_ObtainGimbal_Pitch(DeviceName, pitch);
  790 +}
  791 +
  792 +/*********
  793 + *
  794 + * 收到云台航向
  795 + *
  796 + **********/
  797 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Yaw(int DeviceName, int yaw)
  798 +{
  799 +}
  800 +
  801 +/*********
  802 + *
  803 + * 收到云台俯仰微调值
  804 + *
  805 + **********/
  806 +T_JZsdkReturnCode JZsdl_Uart_ObtainGimbalPitchFineTuning(int DeviceName, int FrameSequence, int pitch)
  807 +{
  808 + printf("收到云台俯仰微调值\n");
  809 +
  810 + // 2、发送到本地处理
  811 + UIcontrol_Obtain_GimbalPitchFineTuninng(DeviceName, pitch);
  812 +
  813 + // 3、回复操作成功
  814 + JZsdk_Uart_SendDeal_Reply_Sucesss(DeviceName, FrameSequence);
  815 +}
  816 +
  817 +/*******************************************************************************************************************************
  818 + *
  819 + * 警灯部分
  820 + *
  821 + * *****************************************************************************************************************************/
  822 +/*********
  823 + *
  824 + * 收到警灯状态
  825 + *
  826 + **********/
  827 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Status(int DeviceName, int status, int mode)
  828 +{
  829 + UIcontrol_ObtainWarningLight_Status(DeviceName, status, mode);
  830 +}
  831 +
  832 +/*********
  833 + *
  834 + * 收到警灯颜色
  835 + *
  836 + **********/
  837 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Color(int DeviceName, int color1, int color2)
  838 +{
  839 + UIcontrol_ObtainWarningLight_Color(DeviceName, color1, color2);
  840 +}
  841 +
  842 +/*********
  843 + *
  844 + * 收到产品序列号
  845 + *
  846 + **********/
  847 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainSerialNumber(int DeviceName, int SerialNumber)
  848 +{
  849 +}
  850 +
  851 +/********************************************************************************************************
  852 +********* ********|
  853 +********* ********|
  854 +********* ********|
  855 +********* ********|
  856 +********* ********|
  857 +********* 6A类部分 ********|
  858 +********* ********|
  859 +********* ********|
  860 +********* ********|
  861 +********* ********|
  862 +********* ********|
  863 +*********************************************************************************************************/
  864 +
  865 +/*********
  866 + *
  867 + * 设置云台最大值最小值
  868 + *
  869 + **********/
  870 +T_JZsdkReturnCode JZsdk_Uart_SetGimbalRange(int DeviceName, int value)
  871 +{
  872 + return UIcontrol_SetGimbalRange(DeviceName, value);
  873 +}
  874 +
  875 +/*********
  876 + *
  877 + * 设置云台联动
  878 + *
  879 + **********/
  880 +T_JZsdkReturnCode JZsdk_Uart_GimbalLinkageControl(int DeviceName, int FrameSequence, int value)
  881 +{
  882 + // 1、设置本地的云台联动
  883 + int ret = UIcontrol_Set_GimbalLinkageControl(DeviceName, value);
  884 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  885 + {
  886 + // 回复操作成功
  887 + JZsdk_Uart_SendDeal_Reply_Sucesss(DeviceName, FrameSequence);
  888 + }
  889 + else
  890 + {
  891 + // 回复操作失败
  892 + JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
  893 + }
  894 +}
  895 +
  896 +/*********
  897 + *
  898 + * 查询云台联动
  899 + *
  900 + **********/
  901 +T_JZsdkReturnCode JZsdk_Uart_Checkstatus_GimbalLinkage(int DeviceName, int FrameSequence)
  902 +{
  903 + int LinkageValue;
  904 +
  905 + T_JZsdkReturnCode ret = UIcontrol_CheckStatus_GimbalLinkage(&LinkageValue);
  906 + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  907 + {
  908 + // 回复操作失败
  909 + JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
  910 + }
  911 +
  912 + // 成功则发送云台联动值
  913 + JZsdk_Uart_SendDeal_GimbalLinkageControl(DeviceName, FrameSequence, LinkageValue);
  914 +}
  915 +
  916 +/*
  917 + *
  918 + * 设置本地从设备名
  919 + *
  920 + */
  921 +T_JZsdkReturnCode JZsdk_Uart_SetSecondaryDeviceName(int DeviceName)
  922 +{
  923 + printf("设置本地从设备名%x\n", DeviceName);
  924 +
  925 + SecondaryDeviceName = DeviceName;
  926 +
  927 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  928 +}
  929 +
  930 +/*
  931 + *
  932 + * 获取本地从设备名
  933 + *
  934 + */
  935 +int JZsdk_Uart_GetSecondaryDeviceName()
  936 +{
  937 + return SecondaryDeviceName;
  938 +}
  939 +
  940 +/********************************************************************************************************
  941 +********* ********|
  942 +********* ********|
  943 +********* ********|
  944 +********* ********|
  945 +********* ********|
  946 +********* 6B类部分 ********|
  947 +********* ********|
  948 +********* ********|
  949 +********* ********|
  950 +********* ********|
  951 +********* ********|
  952 +*********************************************************************************************************/
  953 +
  954 +/**
  955 + *
  956 + * 查询从设备名
  957 + *
  958 + */
  959 +int JZsdk_Uart_QuerySecondaryDeviceName(int FrameSequence)
  960 +{
  961 + // 1、发送查询一遍从设备名, 通常位于 串口1
  962 + JZsdk_Uart_SendDeal_QuerySecondaryDeviceName(UART_DEV_1, FrameSequence);
  963 +}
  964 +
  965 +/*********
  966 + *
  967 + * 收到云台联动值
  968 + *
  969 + **********/
  970 +T_JZsdkReturnCode JZsdk_Uart_ObtainGimbalLinkage(int DeviceName, int FrameSequence, int value)
  971 +{
  972 + T_JZsdkReturnCode ret = UIcontrol_Obtain_GimbalLinkage(DeviceName, value);
  973 + if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
  974 + {
  975 + // 回复操作成功
  976 + JZsdk_Uart_SendDeal_Reply_Sucesss(UART_DEV_1, FrameSequence);
  977 + }
  978 + else
  979 + {
  980 + // 回复操作失败
  981 + JZsdk_Uart_SendDeal_Reply_Failure(UART_DEV_1, FrameSequence);
  982 + }
  983 +}
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_Uart_Output.h
  4 + * JZsdk_Uart_Output的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_UART_OUTPUT_H
  11 +#define JZSDK_UART_OUTPUT_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
  15 +
  16 +#ifdef __cplusplus
  17 +extern "C" {
  18 +#endif
  19 +
  20 +#include "Uart_Config.h"
  21 +
  22 +
  23 +/* Exported constants --------------------------------------------------------*/
  24 +/* 常亮定义*/
  25 +
  26 +/* Exported types ------------------------------------------------------------*/
  27 +
  28 +/* Exported functions --------------------------------------------------------*/
  29 +int JZsdk_Uart_Init(int UART_DEV_NAME);
  30 +int JZsdk_Get_UartDev_UseFlag(int UART_DEV_NAME);
  31 +
  32 +int JZsdk_Uart_Set_Amplifier(int status);
  33 +T_JZsdkReturnCode JZsdk_Uart_Set_Volume(int DeviceName, int value);
  34 +
  35 +T_JZsdkReturnCode JZsdk_Uart_TTS_Play(int DeviceName, char *data ,int len);
  36 +T_JZsdkReturnCode JZsdk_Uart_TTS_SetTone(int DeviceName, int tone);
  37 +T_JZsdkReturnCode JZsdk_Uart_TTS_SetSpeed(int DeviceName, int speed);
  38 +
  39 +
  40 +int JZsdk_Uart_Flush_MusicList();
  41 +int JZsdk_Uart_get_music_list_sum();
  42 +int JZsdk_Uart_get_music_list_name(int num, char *music_name, int *music_name_length);
  43 +
  44 +T_JZsdkReturnCode JZsdk_Uart_PlayMusic(int DeviceName, char *music_name, int datasize);
  45 +
  46 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayContinue(int DeviceName);
  47 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayPause(int DeviceName);
  48 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayStop(int DeviceName);
  49 +T_JZsdkReturnCode JZsdk_Uart_audio_LastSong(int DeviceName);
  50 +T_JZsdkReturnCode JZsdk_Uart_audio_NextSong(int DeviceName);
  51 +
  52 +int JZsdk_Uart_CheckStatus_volume();
  53 +int JZsdk_Uart_CheckStatus_play();
  54 +int JZsdk_Uart_CheckStatus_gimbal(int *PitchAngle, int *YawAngle);
  55 +int JZsdk_Uart_CheckStatus_PlayFileName(char *music_name, int *music_name_len);
  56 +int JZsdk_Uart_CheckStatus_SoftwareVersion(char *majorVersion, char *minorVersion, char *modifyVersion, char *debugVersion);
  57 +int JZsdk_Uart_CheckStatus_LoopPlay();
  58 +int JZsdk_Uart_CheckStatus_TTS_tone();
  59 +int JZsdk_Uart_CheckStatus_TTS_speed();
  60 +
  61 +T_JZsdkReturnCode JZsdk_Uart_audio_PlayLoop(int DeviceName, int mode);
  62 +
  63 +T_JZsdkReturnCode JZsdk_Uart_Opus_PlayFixedFile(int DeviceName);
  64 +
  65 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SerialNumber(int UartPort, int FrameSequence);
  66 +
  67 +
  68 +
  69 +int JZsdk_Uart_SaveOpusStart(int decode_rate);
  70 +int JZsdk_Uart_SaveOpusTrans(char *SaveData, int size);
  71 +int JZsdk_Uart_SaveOpusStop();
  72 +
  73 +int JZsdk_Uart_GetVersionReplay();
  74 +
  75 +int JZsdk_Uart_SetMainWorkMode(int mode);
  76 +
  77 +
  78 +//1、开始传输的音频文件保存
  79 +T_JZsdkReturnCode JZsdk_Uart_SaveAudioFileStart(char *FileName);
  80 +//2、存储opus文件中
  81 +int JZsdk_Uart_SaveAudioFileTrans(char *SaveData, int size);
  82 +//3、存储opus文件结束
  83 +int JZsdk_Uart_SaveAudioFileStop();
  84 +
  85 +int JZsdk_Uart_RealTimeVoiceStart(int decode_rate);
  86 +int JZsdk_Uart_RealTimeVoiceTrans(char *data, int length);
  87 +int JZsdk_Uart_RealTimeVoiceClose();
  88 +
  89 +//实时MP2语音实时喊话
  90 +int JZsdk_Uart_RealTimeMP2_start(int decode_rate);
  91 +int JZsdk_Uart_RealTimeMP2_Trans(unsigned char *data, int length);
  92 +int JZsdk_Uart_RealTimeMP2_Close();
  93 +
  94 +//云台部分
  95 +T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchControl(int DeviceName, int Gimbal_angle);
  96 +T_JZsdkReturnCode JZsdk_Uart_SetGimbalRange(int DeviceName, int value);
  97 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_GimbalFineTuning(int DeviceName, int FrameSequence);
  98 +T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchFineTuningControl(int DeviceName, int FrameSequence,int Gimbal_angle);
  99 +T_JZsdkReturnCode JZsdl_Uart_ObtainGimbalPitchFineTuning(int DeviceName, int FrameSequence,int pitch);
  100 +T_JZsdkReturnCode JZsdk_Uart_GimbalLinkageControl(int DeviceName, int FrameSequence, int value);
  101 +T_JZsdkReturnCode JZsdk_Uart_Checkstatus_GimbalLinkage(int DeviceName, int FrameSequence);
  102 +T_JZsdkReturnCode JZsdk_Uart_ObtainGimbalLinkage(int DeviceName,int FrameSequence, int value);
  103 +
  104 +//探照灯部分
  105 +T_JZsdkReturnCode JZsdk_Uart_Lighting_SetSearchLightFrequency(int DeviceName, int Frequency);
  106 +T_JZsdkReturnCode JZsdk_Uart_SearchLight_Control(int DeviceName, int mode);
  107 +T_JZsdkReturnCode JZsdk_Uart_SearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen);
  108 +T_JZsdkReturnCode JZsdk_Uart_SearchLight_SubscriptionControl(int DeviceName, int value);
  109 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightLightAttribute(int DeviceName, int FrameSequence);
  110 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightTemperture(int DeviceName, int FrameSequence);
  111 +
  112 +//警灯部分
  113 +T_JZsdkReturnCode JZsdk_Uart_WarningLight_ModeControl(int DeviceName, int status, int mode);
  114 +T_JZsdkReturnCode JZsdk_Uart_WarningLight_SetColor(int DeviceName, int color1, int color2);
  115 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightStatus(int DeviceName, int FrameSequence);
  116 +T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightColor(int DeviceName, int FrameSequence);
  117 +
  118 +
  119 +//5B部分
  120 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Frequency(int DeviceName, int Frequency);
  121 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Mode(int DeviceName, int mode);
  122 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen);
  123 +T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Temperature(int DeviceName, int LeftTemperature, int RightTemperature);
  124 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Pitch(int DeviceName, int pitch);
  125 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Yaw(int DeviceName, int yaw);
  126 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Status(int DeviceName, int status, int mode);
  127 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Color(int DeviceName, int color1, int color2);
  128 +T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainSerialNumber(int DeviceName, int SerialNumber);
  129 +
  130 +//获取本地从设备名
  131 +int JZsdk_Uart_GetSecondaryDeviceName();
  132 +//设置本地从设备名
  133 +T_JZsdkReturnCode JZsdk_Uart_SetSecondaryDeviceName(int DeviceName);
  134 +int JZsdk_Uart_QuerySecondaryDeviceName(int FrameSequence);
  135 +
  136 +
  137 +T_JZsdkReturnCode JZsdk_Uart_OutPutPower_Control(int DeviceName, int FrameSequence, int Value);
  138 +T_JZsdkReturnCode JZsdk_Uart_Checkstatus_OutPutPower(int DeviceName, int FrameSequence);
  139 +
  140 +#ifdef __cplusplus
  141 +}
  142 +#endif
  143 +
  144 +#endif
  1 +/**
  2 + ********************************************************************
  3 + * @file JZsdk_Uart_RecvDeal.h
  4 + * JZsdk_Uart_RecvDeal的头文件
  5 + *
  6 + *********************************************************************
  7 + */
  8 +
  9 +/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
  10 +#ifndef JZSDK_UART_RECVDEAL_H
  11 +#define JZSDK_UART_RECVDEAL_H
  12 +
  13 +/* Includes ------------------------------------------------------------------*/
  14 +
  15 +#ifdef __cplusplus
  16 +extern "C" {
  17 +#endif
  18 +
  19 +/* Exported constants --------------------------------------------------------*/
  20 +/* 常亮定义*/
  21 +
  22 +/* Exported types ------------------------------------------------------------*/
  23 +
  24 +/* Exported functions --------------------------------------------------------*/
  25 +int JZsdk_Uart_RecvDeal_CharmDeal_Uart_4G(unsigned char *getbuf, int len);
  26 +int JZsdk_Uart_RecvDeal_CharmDeal_Uart_DEV1(unsigned char *getbuf, int len);
  27 +int JZsdk_Uart_RecvDeal_CharmDeal_Uart_DEV2(unsigned char *getbuf, int len);
  28 +
  29 +
  30 +#ifdef __cplusplus
  31 +}
  32 +#endif
  33 +
  34 +#endif