作者 潘浩彬

串口程序,00.00.00.08版本

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

要显示太多修改。

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

{
"files.associations": {
"typeinfo": "c",
"jzsdk_code.h": "c",
"jzsdk_getframetemplate.h": "c"
}
}
\ No newline at end of file
... ...
# cmake 最低版本要求
cmake_minimum_required(VERSION 2.8)
# 编译标志
set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++")
#"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。
#"-std=gnu99":指定C语言标准为GNU C99(也就是C99加上GNU的扩展特性),该标准对于一些特性和库的使用是必须的。
#"-lm":指定在编译时链接数学库,以使用一些数学函数。
#"-ldl":指定在编译时链接动态库加载库,以使用动态加载。
#"-lstdc++":指定在编译时链接C++标准库,以使用C++的一些特性和函数。
# 配置编译器
# 交叉编译链①
set(CMAKE_C_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-g++")
# 本地测试编译链
# set(CMAKE_C_COMPILER /usr/bin/gcc)
# set(CMAKE_CXX_COMPILER /usr/bin/g++)
# 工程名 JZ_UART_APP
project(JZ_UART_APP)
# 设置滤波方式 24行不能被改动,因为会被sh修改滤波方式
set(filtering_type directed_stopband_filtering)
# 指定源文件
file(GLOB_RECURSE APPLICATION_SRC application/*.c)
file(GLOB_RECURSE JZSDK_SRC JZsdk/*.c)
file(GLOB_RECURSE JZSDK_UART_DEAL_SRC JZsdk_Uart/*.c)
file(GLOB_RECURSE GIMBAL_SRC Module/Gimbal/*.c)
file(GLOB_RECURSE MEGAPHONE_SRC Module/Megaphone/*.c)
file(GLOB_RECURSE LIGHTING_SRC Module/Lighting/*.c)
file(GLOB_RECURSE MODULE_IRCUT_SRC Module/Ircut/*.c)
file(GLOB_RECURSE MODULE_UICONTROL_SRC Module/UI_control/*.c)
# 生成可执行文件
add_executable(
JZ_UART_APP
${APPLICATION_SRC}
${JZSDK_SRC}
${JZSDK_UART_DEAL_SRC}
${MEGAPHONE_SRC}
${MODULE_IRCUT_SRC}
${GIMBAL_SRC}
${MODULE_UICONTROL_SRC}
${LIGHTING_SRC}
)
# 头文件路径
include_directories(./application)
include_directories(./JZsdk)
include_directories(./JZsdk_Uart)
include_directories(./Module/Megaphone)
include_directories(./Module/Ircut)
include_directories(./Module/Ircut/H3_ircut/wiringPi)
include_directories(./Module/Gimbal)
include_directories(./Module/Lighting)
include_directories(./Module/UI_control)
# 库文件路径
if(${filtering_type} STREQUAL "directed_stopband_filtering")
message("Using library for directed stopband filtering")
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/directed_stopband_filtering/libAudioPlayer.so)
elseif(${filtering_type} STREQUAL "high_pass_filtering")
message("Using library for high pass filtering")
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/high_pass_filtering/libAudioPlayer.so)
else()
message(FATAL_ERROR "Invalid filtering type")
endif()
target_link_libraries(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/libmsc.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/opus/libopus.so
)
... ...
#include <stdio.h>
#include "JZsdkLib.h"
//初始化sdk
T_JZsdkReturnCode JZsdk_LibInit()
{
//1、初始化log
JZsdk_LoggerInit();
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZsdkLib.h
* JZsdk的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDKLIB_H
#define JZSDKLIB_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#include "JZsdk_Base/JZsdkBase.h"
#include "JZsdk_CommonFuntion/JZsdkCommonFuntion.h"
//#include "JZsdk_Normal_Module/JZsdk_normal_module.h"
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
T_JZsdkReturnCode JZsdk_LibInit();
#ifdef __cplusplus
}
#endif
#endif
/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
... ...
/**
********************************************************************
* @file JZsdkBase.h
* JZsdk基础部件的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDKBASE_H
#define JZSDKBASE_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#include "JZsdk_Logger/JZsdk_Logger.h"
#include "JZsdk_Osal/JZsdk_FileSystm.h"
#include "JZsdk_Delay/JZsdk_Delay.h"
#include "JZsdk_Code/JZsdk_FLagCode.h"
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
/**
********************************************************************
* @file JZsdk_Code.h
* 用于记录各类码的表
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_CODE_H
#define JZSDK_CODE_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#include "JZsdk_InsCode.h"
#include "JZsdk_FLagCode.h"
#include "JZsdk_ReturnCode.h"
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
/**
********************************************************************
* @file JZsdk_ErrorCode.h
* 用于错误码的表
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_ERRORCODE_H
#define JZSDK_ERRORCODE_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
typedef enum {
JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS = 0x0000,
JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE = 0x0001
} JZ_SYSTEM_Code;
typedef enum {
JZ_ERROR_SYSTEM_FRAME_ERROR = 0x0100,
} JZ_Syetem_frame_ErrorCode;
typedef enum {
JZ_ERRORCODE_MUSIC_NOT_FOUND_IN_LIST = 0x1000
} JZ_Megaphone_music_ErrorCode;
typedef enum {
JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON = 0x1201
} JZ_Megaphone_opus_ErrorCode;
typedef enum {
JZ_ERRORCODE_TTS_INVALID_TONE = 0x1300,
JZ_ERRORCODE_TTS_INVALID_SPEED = 0x1301,
JZ_ERRORCODE_TTS_INVALID_ADDTONE = 0x1302,
} JZ_Megaphone_TTS_ErrorCode;
typedef enum {
JZ_ERRORCODE_GIMBAL_INVALID_PITCH = 0x4000,
JZ_ERRORCODE_GIMBAL_INVALID_YAW = 0x4001,
JZ_ERRORCODE_GIMBAL_INVALID_ROLL = 0x4002,
} JZ_Gimbal_ErrorCode;
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
/**
********************************************************************
* @file JZsdk_FLagCode.h
* 用于标识码的表
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FLAGCODE_H
#define JZSDK_FLAGCODE_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#define JZ_FLAGCODE_OFF 0x00
#define JZ_FLAGCODE_ON 0x01
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
/**
********************************************************************
* @file JZsdk_InsCode.h
* 用于错误码的表
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_INSCODE_H
#define JZSDK_INSCODE_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
typedef enum {
//5A类帧
JZ_INSCODE_5AFRAME_FRAME = 0x10000000, //接收类帧
JZ_INSCODE_5AFRAME_ASKFORCONNECT = 0x10000100, //申请连接
JZ_INSCODE_5AFRAME_REALTIMEMP2_START = 0x10000200, //开启实时MP2
JZ_INSCODE_5AFRAME_REALTIMEMP2_TRANSMISSION = 0x10000201, //传输实时MP2
JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP = 0x10000202, //结束实时MP2
JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START = 0x10000300, //打开音频文件上传
JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_TRANSMISSION = 0x10000301, //传输音频文件
JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP = 0x10000302, //关闭音频文件上传
JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE = 0x10000400, //播放指定音频
JZ_INSCODE_5AFRAME_AUDIO_CONTINUE = 0x10000401, //音频继续播放
JZ_INSCODE_5AFRAME_AUDIO_PAUSE = 0x10000402, //音频暂停播放
JZ_INSCODE_5AFRAME_AUDIO_STOP = 0x10000403, //音频停止播放
JZ_INSCODE_5AFRAME_AUDIO_LASTSONG = 0x10000410, //音频上一曲
JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG = 0x10000411, //音频下一曲
JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST = 0x10000420, //获取音频列表
JZ_INSCODE_5AFRAME_AMPLIFIER_STOP = 0x10000500, //强制关闭功放
JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN = 0x10000501, //强制开启功放
JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO = 0x10000502, //恢复自动功放
JZ_INSCODE_5AFRAME_VOLUME = 0x10000600, //调节音量
JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME = 0x10000620, //查询音量
JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY = 0x10000621, //查询播放状态
JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL = 0x10000622, //查询云台角度
JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING = 0x10000623, //查询云台微调角度
JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME = 0x10000624, //查询播放文件名
JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION = 0x10000625, //查询软件版本号
JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY = 0x10000626, //查询是否打开循环
JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE = 0x10000627, //查询音色
JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED = 0x10000628, //查询语速
JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE = 0x10000629, //查询探照灯 灯3个属性
JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10000630, //查询探照灯流明
JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10000631, //查询探照灯频率
JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10000632, //查询探照灯模式
JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10000633, //查询探照灯温度
JZ_INSCODE_5AFRAME_CHECKSTATUS_LASER_STATUS = 0x10000634, //查询激光状态
JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10000635, //查询警灯状态
JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10000636, //查询警灯颜色
JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER = 0x10000637, //查询序列号
JZ_INSCODE_5AFRAME_PLAY_LOOP = 0x10000690, //开启关闭循环
JZ_INSCODE_5AFRAME_DELETE_AUDIO = 0x10000700, //删除音频
JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD = 0x10000710, //删除录音
JZ_INSCODE_5AFRAME_DELETE_VIDEO_RECORD = 0x10000720, //删除视频
JZ_INSCODE_5AFRAME_TTS_SET_TONE = 0x10000801, //TTS设置音色
JZ_INSCODE_5AFRAME_TTS_SET_SPEED = 0x10000802, //TTS设置语速
JZ_INSCODE_5AFRAME_TTS_TRANS_START = 0x10000803, //TTS开始发送
JZ_INSCODE_5AFRAME_TTS_TRANS_TRANSMISSION = 0x10000804, //TTS正在接收
JZ_INSCODE_5AFRAME_TTS_TRANS_STOP = 0x10000805, //TTS发送完毕
JZ_INSCODE_5AFRAME_OPUS_TRANS_START = 0x10000900, //opus传输开始
JZ_INSCODE_5AFRAME_OPUS_TRANS_TRANSMISSION = 0x10000901, //opus传输中
JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP = 0x10000902, //opus传输结束
JZ_INSCODE_5AFRAME_OPUS_PLAY = 0x10000910, //opus播放
JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START = 0x10000A00, //开启opus实时语音
JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_TRANSMISSION = 0x10000A01, //传输opus实时语音
JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP = 0x10000A02, //结束opus实时语音
JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL = 0x10000B00, //云台俯仰控制
JZ_INSCODE_5AFRAME_GIMBAL_YAW_CONTROL = 0x10000B01, //云台朝向控制
JZ_INSCODE_5AFRAME_GIMBAL_ROLL_CONTROL = 0x10000B02, //云台旋转控制
JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL = 0x10000B04, //云台俯仰微调
JZ_INSCODE_5AFRAME_GIMBAL_YAW_FINETUNING_CONTROL = 0x10000B05, //云台朝向微调
JZ_INSCODE_5AFRAME_GIMBAL_ROLL_FINETUNING_CONTROL = 0x10000B06, //云台旋转微调
JZ_INSCODE_5AFRAME_LASER_CONTROL = 0x10000C00, //激光控制
JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL = 0x10000E00, //探照灯开光
JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN = 0x10000E10, //设置探照灯亮度
JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY = 0x10000E20, //设置把爆闪频率
JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL = 0x10000E21,//探照灯消息订阅控制
JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL = 0x10000F00, //警示灯模式控制
JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR = 0x10000F10, //警示灯颜色控制
//5B类帧
JZ_INSCODE_5BFRAME_FRAME = 0x10004000, //发送帧
JZ_INSCODE_5BFRAME_INITIATECONNECT = 0x10004101, //主动连接
JZ_INSCODE_5BFRAME_SUCESS = 0x10004200, //操作成功
JZ_INSCODE_5BFRAME_DEFEAT = 0x10004201, //操作失败
JZ_INSCODE_5BFRAME_MUSICLIST_START = 0x10004300, //开启发送音乐列表帧
JZ_INSCODE_5BFRAME_MUSICLIST_TRANS = 0x10004301, //发送音乐列表帧
JZ_INSCODE_5BFRAME_MUSICLIST_STOP = 0x10004302, //结束发送音乐列表帧
JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS = 0x10004310, //音频播放状态返回帧
JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END = 0x10004311, //音频播放状态结束帧
JZ_INSCODE_5BFRAME_VOLUME = 0x10004400, //音量返回帧
JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS = 0x10004401, //发送音频循环播放状态
JZ_INSCODE_5BFRAME_TTS_TONE = 0x10004402, //发送tts音色
JZ_INSCODE_5BFRAME_TTS_SPEED = 0x10004403, //发送tts语速
JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME = 0x10004404, //当前播放的音频名字
JZ_INSCODE_5BFRAME_GIMBAL_PITCH = 0x10004500, //云台俯仰角度
JZ_INSCODE_5BFRAME_GIMBAL_YAW = 0x10004501, //云台航向角度
JZ_INSCODE_5BFRAME_GIMBAL_ROLL = 0x10004502, //
JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING = 0x10004510, //云台俯仰微调值
JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE = 0x10004600, //查询探照灯温度
JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS = 0x10004601, //查询激光状态
JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY = 0x10004602, //查询探照灯频率
JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE = 0x10004603, //查询探照灯模式
JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN = 0x10004604, //查询探照灯流明
JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS = 0x10004700, //警示灯模式控制
JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR = 0x10004701, //警示灯颜色控制
JZ_INSCODE_5BFRAME_SORTWAREVERSION = 0x10004800, //发送软件版本号
JZ_INSCODE_5BFRAME_HARDWAREVERSION = 0x10004801, //发送硬件版本号
JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER = 0x10004802, //回复序列号
//6A类
JZ_INSCODE_6AFRAME_FRAME = 0x10008000, //发送帧
JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN = 0x10008101, //设置坐标0值
JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE = 0x10008102, //设置云台范围最大最小值
JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE = 0x10008103, //设置灯光范围最大最小值
JZ_INSCODE_6AFRAME_SET_SERIALNUMBER = 0x10008104, //设置序列号
JZ_INSCODE_6AFRAME_SERVO_SELFCHECK = 0x10008105, //舵机自检
JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL = 0x10008106, //开关云台联动
JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x10008400, //查询从设备设备名
JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x10008401, //查询云台联动
//6B类
JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME = 0x1000C400, //回复从设备名
JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE = 0x1000C401, //回复云台联动
} JZ_InsCode;
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "./JZsdk_Code.h"
//获取返回码的信息
const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode)
{
switch (ReturnCode) {
case JZ_ERRORCODE_REALTIMEVOICE_HAS_BEEN_ON:
return "实时语音被开启,该操作失败";
default:
return "未知错误:Unknown error.";
}
}
... ...
/**
********************************************************************
* @file JZsdk_ReturnCode.h
* 用于记录各类码的表
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_RETURNCODE_H
#define JZSDK_RETURNCODE_H
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include "JZsdk_ErrorCode.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
//重定义一个返回码
typedef uint64_t T_JZsdkReturnCode;
/* Exported functions --------------------------------------------------------*/
const char* JZsdk_GetReturnCodeMessage(T_JZsdkReturnCode ReturnCode);
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include "JZsdk_Delay.h"
#include <unistd.h>
/*
* 用于延时(粗略)
* 需要优化
*/
int delayMs(unsigned long msec)
{
usleep(msec * 1000);
}
/*
* 用于延时(粗略)
* 需要优化
*/
int delayS(unsigned long sec)
{
delayMs(sec * 1000);
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZsdk_FileSystem.h
* 用于文件系统操作
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_DELAY_H
#define JZSDK_DELAY_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int delayMs(unsigned long msec);
int delayS(unsigned long sec);
#ifdef __cplusplus
}
#endif
#endif
/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
... ...
#include <stdio.h>
#include "./JZsdk_FrameComparsion.h"
#include "../JZsdk_Code/JZsdk_Code.h"
/*************************
*
* 获取帧的序列号
*
* ***************************/
int JZsdk_Get_FrameSequence(char *DealBuf)
{
return DealBuf[6];
}
/***************************
* 、
*
* 帧校对 获取功能
*
*
* ***********************/
int JZsdk_FrameComparsion(char *getdata, int len)
{
//1、判断是否是5A帧
if (getdata[0] == 0x5A && getdata[1] == 0x5A && getdata[2] == 0x77)
{
printf("JZsdk_FrameComparsion:5A帧\n");
return JZsdk_5AFrameComparsion(getdata, len);
}
//2、判断是否是5B帧
if (getdata[0] == 0x5b && getdata[1] == 0x5b && getdata[2] == 0x77)
{
printf("JZsdk_FrameComparsion:5B帧\n");
return JZsdk_5BFrameComparsion(getdata, len);
}
//3、判断是否是6A帧
if (getdata[0] == 0x6A && getdata[1] == 0x6A && getdata[2] == 0x77)
{
printf("JZsdk_FrameComparsion:6A帧\n");
return JZsdk_6AFrameComparsion(getdata, len);
}
//4、判断是否是6B帧
if (getdata[0] == 0x6b && getdata[1] == 0x6b && getdata[2] == 0x77)
{
printf("JZsdk_FrameComparsion:6B帧\n");
return JZsdk_6BFrameComparsion(getdata, len);
}
//判断帧头帧尾
if (
( (getdata[0]!= 0x5a) && (getdata[1] != 0x5a) && (getdata[2]!=0x77) )
|| ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
)
{
printf("接受到的帧,没有帧头或者帧尾,退出recv帧判断函数\n");
return JZ_ERROR_SYSTEM_FRAME_ERROR;
}
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZsdk_FrameComparsion.h
* 用于帧对比的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FRAMECOMPARSION_H
#define JZSDK_FRAMECOMPARSION_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#include "JZsdk_FrameComparsion_5Aframe.h"
#include "JZsdk_FrameComparsion_5Bframe.h"
#include "JZsdk_FrameComparsion_6Aframe.h"
#include "JZsdk_FrameComparsion_6Bframe.h"
#include "JZsdk_GetFrameTemplate.h"
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_Get_FrameSequence(char *DealBuf);
int JZsdk_FrameComparsion(char *getdata, int len);
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include "../JZsdk_Code/JZsdk_Code.h"
/******************************************************
接收一级功能码区
/******************************************************/
//一级功能码是连接功能
static int Comparison_5AFRAME_FirstLevelCode_0x50(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//开启连接
case 0x51:
return JZ_INSCODE_5AFRAME_ASKFORCONNECT;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是语音 或是 文件功能
static int Comparison_5AFRAME_FirstLevelCode_0x51(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//开启语音
case 0xb1:
return JZ_INSCODE_5AFRAME_REALTIMEMP2_START;
break;
//结束语音
case 0xb2:
return JZ_INSCODE_5AFRAME_REALTIMEMP2_STOP;
break;
//打开音频文件上传
case 0x01:
return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_START;
break;
//关闭音频文件上传
case 0x03:
return JZ_INSCODE_5AFRAME_AUDIOFILE_TRANS_STOP;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是音频/功放/音量调节
static int Comparison_5AFRAME_FirstLevelCode_0x52(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//播放指定音频
case 0x02:
return JZ_INSCODE_5AFRAME_AUDIO_PLAYFILE;
break;
//音频继续播放
case 0x04:
return JZ_INSCODE_5AFRAME_AUDIO_CONTINUE;
break;
//音频暂停播放
case 0x05:
return JZ_INSCODE_5AFRAME_AUDIO_PAUSE;
break;
//音频停止播放
case 0x06:
return JZ_INSCODE_5AFRAME_AUDIO_STOP;
break;
//音频上一曲
case 0x07:
return JZ_INSCODE_5AFRAME_AUDIO_LASTSONG;
break;
//音频下一曲
case 0x08:
return JZ_INSCODE_5AFRAME_AUDIO_NEXTSONG;
break;
//强制关闭功放
case 0x20:
return JZ_INSCODE_5AFRAME_AMPLIFIER_STOP;
break;
//强制开启功放
case 0x21:
return JZ_INSCODE_5AFRAME_AMPLIFIER_OPEN;
break;
//恢复自动功放
case 0x22:
return JZ_INSCODE_5AFRAME_AMPLIFIER_AUTO;
break;
//调节音量
case 0x10:
return JZ_INSCODE_5AFRAME_VOLUME;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是查询状态
static int Comparison_5AFRAME_FirstLevelCode_0x53(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//查询音量
case 0x01:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_VOLUME;
break;
//查询播放状态
case 0x02:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAY;
break;
//查询云台角度(已舍弃)
case 0x03:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL;
break;
//查询播放文件名
case 0x04:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_PLAYFILENAME;
break;
//查询是否打开循环
case 0x05:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_LOOPPLAY;
break;
//查询音色
case 0x06:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSTONE;
break;
//查询语速
case 0x07:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_TTSSPEED;
break;
//查询软件版本号
case 0xf1:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_SOFTWAREVERSION;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是删除
static int Comparison_5AFRAME_FirstLevelCode_0x54(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//删除音频
case 0x02:
return JZ_INSCODE_5AFRAME_DELETE_AUDIO;
break;
//删除录音
case 0x03:
return JZ_INSCODE_5AFRAME_DELETE_VOICE_RECORD;
break;
// //删除视频
// case 0x02:
// return JZ_INSCODE_DELETE_VIDEO_RECORD;
// break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码开启关闭循环
static int Comparison_5AFRAME_FirstLevelCode_0x55(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//开启关闭循环
case 0x00:
return JZ_INSCODE_5AFRAME_PLAY_LOOP;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码
static int Comparison_5AFRAME_FirstLevelCode_0x56(char *getdata)
{
//二级功能位
switch (getdata[8])
{
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是 文本播放
static int Comparison_5AFRAME_FirstLevelCode_0x57(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//设置音色
case 0x01:
return JZ_INSCODE_5AFRAME_TTS_SET_TONE;
break;
//设置语速
case 0x02:
return JZ_INSCODE_5AFRAME_TTS_SET_SPEED;
break;
//开始发送TTS
case 0x03:
return JZ_INSCODE_5AFRAME_TTS_TRANS_START;
break;
case 0x04:
return JZ_INSCODE_5AFRAME_TTS_TRANS_STOP;
break;
default:
break;
}
}
//一级功能 查询列表
static int Comparison_5AFRAME_FirstLevelCode_0x58(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//设置音色
case 0x01:
return JZ_INSCODE_5AFRAME_AUDIO_GETMUSICLIST;
break;
default:
break;
}
}
//一级功能码opus功能
static int Comparison_5AFRAME_FirstLevelCode_0x59(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//opus录音传输
//opus传输开始
case 0xF1:
return JZ_INSCODE_5AFRAME_OPUS_TRANS_START;
break;
//opus传输结束
case 0xF2:
return JZ_INSCODE_5AFRAME_OPUS_TRANS_STOP;
break;
//opus播放
case 0x01:
return JZ_INSCODE_5AFRAME_OPUS_PLAY;
break;
//opus实时语音开始
case 0xE1:
return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_START;
break;
case 0xE2:
return JZ_INSCODE_5AFRAME_OPUS_REALTIMEVOICE_STOP;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 激光控制
static int Comparison_5AFRAME_FirstLevelCode_0x60(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//激光控制
case 0x51:
return JZ_INSCODE_5AFRAME_LASER_CONTROL;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 爆闪频率
static int Comparison_5AFRAME_FirstLevelCode_0x61(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//爆闪频率
case 0x51:
return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 灯光控制
static int Comparison_5AFRAME_FirstLevelCode_0x62(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//灯光模式
case 0x51:
return JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 灯光亮度
static int Comparison_5AFRAME_FirstLevelCode_0x63(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//灯光亮度
case 0x51:
return JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码云台功能
static int Comparison_5AFRAME_FirstLevelCode_0x64(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//云台俯仰控制
case 0x51:
return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL;
break;
//云台俯仰微调控制
case 0x52:
return JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 云台航向
static int Comparison_5AFRAME_FirstLevelCode_0x65(char *getdata)
{
}
//一级功能码 警灯模式控制
static int Comparison_5AFRAME_FirstLevelCode_0x66(char *getdata)
{
switch (getdata[8])
{
//警灯模式控制
case 0x51:
return JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 警灯眼色选择
static int Comparison_5AFRAME_FirstLevelCode_0x67(char *getdata)
{
switch (getdata[8])
{
//警灯颜色选择
case 0x51:
return JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 探照灯消息订阅
static int Comparison_5AFRAME_FirstLevelCode_0x68(char *getdata)
{
switch (getdata[8])
{
//探照灯消息订阅
case 0x51:
return JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码 私有协议
static int Comparison_5AFRAME_FirstLevelCode_0x69(char *getdata)
{
}
//一级功能码 6F查询帧
static int Comparison_5AFRAME_FirstLevelCode_0x6F(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//灯光查询
case 0x51:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE;
break;
//温度查询
case 0x52:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE;
break;
//激光查询
case 0x53:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
//云台角度查询
case 0x54:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL;
break;
//警灯状态查询
case 0x55:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS;
break;
//警灯颜色查询
case 0x56:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR;
break;
//产品序列号查询
case 0x57:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER;
break;
//云台微调值查询
case 0x58:
return JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
/******************************************************************
回复帧对比
成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
******************************************************************/
int JZsdk_5AFrameComparsion(char *getdata, int len)
{
//1、判断帧头帧尾
if (
( (getdata[0]!= 0x5a) && (getdata[1] != 0x5a) && (getdata[2]!=0x77) )
|| ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
)
{
printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5AFrameComparsion函数\n");
return JZ_ERROR_SYSTEM_FRAME_ERROR;
}
//一级功能码
switch (getdata[7])
{
/*********************************************************************************************************************************************************
*
* 连接请求码
*
*********************************************************************************************************************************************************/
//一级功能码是连接请求
case 0x50:
return Comparison_5AFRAME_FirstLevelCode_0x50(getdata);
break;
/*********************************************************************************************************************************************************
*
* 喊话器功能码
*
*********************************************************************************************************************************************************/
//一级功能码 语音 / 音频文件功能
case 0x51:
return Comparison_5AFRAME_FirstLevelCode_0x51(getdata);
break;
//一级功能码 音频/ 功放/ 音量调节
case 0x52:
return Comparison_5AFRAME_FirstLevelCode_0x52(getdata);
break;
//一级功能码 查询状态
case 0x53:
return Comparison_5AFRAME_FirstLevelCode_0x53(getdata);
break;
//一级功能码 删除
case 0x54:
return Comparison_5AFRAME_FirstLevelCode_0x54(getdata);
break;
//一级功能码 开启关闭循环
case 0x55:
return Comparison_5AFRAME_FirstLevelCode_0x55(getdata);
break;
//一级功能码
case 0x56:
return Comparison_5AFRAME_FirstLevelCode_0x56(getdata);
break;
//一级功能码 TTS
case 0x57:
return Comparison_5AFRAME_FirstLevelCode_0x57(getdata);
break;
//一级功能码 查询列表功能
case 0x58:
return Comparison_5AFRAME_FirstLevelCode_0x58(getdata);
break;
//一级功能码 opus
case 0x59:
return Comparison_5AFRAME_FirstLevelCode_0x59(getdata);
break;
//一级功能码 激光控制
case 0x60:
return Comparison_5AFRAME_FirstLevelCode_0x60(getdata);
break;
//一级功能码 爆闪控制
case 0x61:
return Comparison_5AFRAME_FirstLevelCode_0x61(getdata);
break;
//一级功能码 灯光控制
case 0x62:
return Comparison_5AFRAME_FirstLevelCode_0x62(getdata);
break;
//一级功能码 灯光亮度
case 0x63:
return Comparison_5AFRAME_FirstLevelCode_0x63(getdata);
break;
//一级功能码 云台俯仰
case 0x64:
return Comparison_5AFRAME_FirstLevelCode_0x64(getdata);
break;
//一级功能码 云台航向
case 0x65:
return Comparison_5AFRAME_FirstLevelCode_0x65(getdata);
break;
//一级功能码 警灯模式控制
case 0x66:
return Comparison_5AFRAME_FirstLevelCode_0x66(getdata);
break;
//一级功能码 警灯眼色选择
case 0x67:
return Comparison_5AFRAME_FirstLevelCode_0x67(getdata);
break;
//一级功能码 探照灯消息订阅
case 0x68:
return Comparison_5AFRAME_FirstLevelCode_0x68(getdata);
break;
//一级功能码 私有协议
case 0x69:
return Comparison_5AFRAME_FirstLevelCode_0x69(getdata);
break;
//一级功能码 6f查询帧
case 0x6F:
return Comparison_5AFRAME_FirstLevelCode_0x6F(getdata);
break;
break;
//一级功能码
/*********************************************************************************************************************************************************
*
*
*
*********************************************************************************************************************************************************/
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
... ...
/**********************************************************************
* @file
*
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FRAMECOMPARSION_5AFRAME_H
#define JZSDK_FRAMECOMPARSION_5AFRAME_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_5AFrameComparsion(char *getdata, int len);
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include "../JZsdk_Code/JZsdk_Code.h"
/******************************************************
接收一级功能码区
/******************************************************/
//一级功能码是连接功能
static int Comparison_5BFRAME_FirstLevelCode_0x50(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复连接
case 0x51:
return JZ_INSCODE_5BFRAME_INITIATECONNECT;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是操作功能
static int Comparison_5BFRAME_FirstLevelCode_0x51(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复操作成功
case 0x01:
return JZ_INSCODE_5BFRAME_SUCESS;
break;
//回复操作失败
case 0xff:
return JZ_INSCODE_5BFRAME_DEFEAT;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是音频列表功能
static int Comparison_5BFRAME_FirstLevelCode_0x53(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//音量返回
case 0x01:
return JZ_INSCODE_5BFRAME_VOLUME;
break;
//播放状态返回
case 0x02:
return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS;
break;
//当前播放文件名返回
case 0x04:
return JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME;
break;
//查询是否开启循环
case 0x05:
return JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS;
break;
//查询音色
case 0x06:
return JZ_INSCODE_5BFRAME_TTS_TONE;
break;
//查询语速
case 0x07:
return JZ_INSCODE_5BFRAME_TTS_SPEED;
break;
//版本返回
case 0xf1:
return JZ_INSCODE_5BFRAME_SORTWAREVERSION;
break;
//播放结束(主动返回)
case 0xff:
return JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是音频列表功能
static int Comparison_5BFRAME_FirstLevelCode_0x58(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//查询列表开始
case 0x00:
return JZ_INSCODE_5BFRAME_MUSICLIST_START;
break;
//文件列表帧
case 0x02:
return JZ_INSCODE_5BFRAME_MUSICLIST_TRANS;
break;
//结束列表返回
case 0xff:
return JZ_INSCODE_5BFRAME_MUSICLIST_STOP;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是激光
static int Comparison_5BFRAME_FirstLevelCode_0x60(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复激光查询
case 0x51:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_LASER_STATUS;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是回复灯光频率
static int Comparison_5BFRAME_FirstLevelCode_0x61(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复灯光频率
case 0x51:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是回复灯光模式
static int Comparison_5BFRAME_FirstLevelCode_0x62(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复灯光模式
case 0x51:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是回复灯光亮度
static int Comparison_5BFRAME_FirstLevelCode_0x63(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复灯光亮度
case 0x51:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是云台俯仰
static int Comparison_5BFRAME_FirstLevelCode_0x64(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复云台俯仰
case 0x51:
return JZ_INSCODE_5BFRAME_GIMBAL_PITCH;
break;
//回复云台俯仰微调值
case 0x52:
return JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是云台航向
static int Comparison_5BFRAME_FirstLevelCode_0x65(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复云台航向
case 0x51:
return JZ_INSCODE_5BFRAME_GIMBAL_YAW;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
//一级功能码是回复警灯状态
static int Comparison_5BFRAME_FirstLevelCode_0x66(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复警灯状态
case 0x51:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}//一级功能码是回复警灯颜色
static int Comparison_5BFRAME_FirstLevelCode_0x67(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复回复警灯颜色
case 0x51:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}//一级功能码是回复温度/序列号查询
static int Comparison_5BFRAME_FirstLevelCode_0x69(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//回复温度查询
case 0x51:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE;
break;
//回复产品序列号
case 0x54:
return JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
/******************************************************************
回复帧对比
成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
******************************************************************/
int JZsdk_5BFrameComparsion(char *getdata, int len)
{
//1、判断帧头帧尾
if (
( (getdata[0]!= 0x5B) && (getdata[1] != 0x5B) && (getdata[2]!=0x77) )
|| ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
)
{
printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_5BFrameComparsion函数\n");
return JZ_ERROR_SYSTEM_FRAME_ERROR;
}
//一级功能码
switch (getdata[7])
{
case 0x50:
return Comparison_5BFRAME_FirstLevelCode_0x50(getdata);
break;
case 0x51:
return Comparison_5BFRAME_FirstLevelCode_0x51(getdata);
break;
case 0x53:
return Comparison_5BFRAME_FirstLevelCode_0x53(getdata);
break;
case 0x58:
return Comparison_5BFRAME_FirstLevelCode_0x58(getdata);
break;
case 0x60:
return Comparison_5BFRAME_FirstLevelCode_0x60(getdata);
break;
case 0x61:
return Comparison_5BFRAME_FirstLevelCode_0x61(getdata);
break;
case 0x62:
return Comparison_5BFRAME_FirstLevelCode_0x62(getdata);
break;
case 0x63:
return Comparison_5BFRAME_FirstLevelCode_0x63(getdata);
break;
case 0x64:
return Comparison_5BFRAME_FirstLevelCode_0x64(getdata);
break;
case 0x65:
return Comparison_5BFRAME_FirstLevelCode_0x65(getdata);
break;
case 0x66:
return Comparison_5BFRAME_FirstLevelCode_0x66(getdata);
break;
case 0x67:
return Comparison_5BFRAME_FirstLevelCode_0x67(getdata);
break;
case 0x69:
return Comparison_5BFRAME_FirstLevelCode_0x69(getdata);
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file
*
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FRAMECOMPARSION_5BFRAME_H
#define JZSDK_FRAMECOMPARSION_5BFRAME_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_5BFrameComparsion(char *getdata, int len);
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include "../JZsdk_Code/JZsdk_Code.h"
//一级功能码是私有协议
static int Comparison_6AFRAME_FirstLevelCode_0x69(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//设置当前为云台零值
case 0x51:
return JZ_INSCODE_6AFRAME_SET_GIMBAL_ORIGIN;
break;
//设置云台当前为最大最小值
case 0x52:
return JZ_INSCODE_6AFRAME_SET_GIMBAL_MAXMIN_RANGE;
break;
//设置灯光当前亮度为最大最小值
case 0x53:
return JZ_INSCODE_6AFRAME_SET_LUMEN_MAXMIN_RANGE;
break;
//设置产品序列号
case 0x54:
return JZ_INSCODE_6AFRAME_SET_SERIALNUMBER;
break;
//舵机自检
case 0x55:
return JZ_INSCODE_6AFRAME_SERVO_SELFCHECK;
break;
//开启关闭云台联动
case 0x56:
return JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
/******************************************************************
回复帧对比
成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
******************************************************************/
int JZsdk_6AFrameComparsion(char *getdata, int len)
{
//1、判断帧头帧尾
if (
( (getdata[0]!= 0x6A) && (getdata[1] != 0x6A) && (getdata[2]!=0x77) )
|| ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
)
{
printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_6AFrameComparsion函数\n");
return JZ_ERROR_SYSTEM_FRAME_ERROR;
}
//一级功能码
switch (getdata[7])
{
case 0x69:
return Comparison_6AFRAME_FirstLevelCode_0x69(getdata);
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file
*
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FRAMECOMPARSION_6AFRAME_H
#define JZSDK_FRAMECOMPARSION_6AFRAME_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_6AFrameComparsion(char *getdata, int len);
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include "../JZsdk_Code/JZsdk_Code.h"
//一级功能码是私有协议
static int Comparison_6BFRAME_FirstLevelCode_0x6F(char *getdata)
{
//二级功能位
switch (getdata[8])
{
//从设备名返回
case 0x50:
return JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME;
break;
//查询云台联动返回
case 0x51:
return JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE;
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
/******************************************************************
回复帧对比
成功返回帧类型 无对比数据返回 JZ_ERROR_SYSTEM_FRAME_ERROR
******************************************************************/
int JZsdk_6BFrameComparsion(char *getdata, int len)
{
//1、判断帧头帧尾
if (
( (getdata[0]!= 0x6B) && (getdata[1] != 0x6B) && (getdata[2]!=0x77) )
|| ( (getdata[len -2]!= 0x00) && (getdata[ len -1] != 0x23) )
)
{
printf("接受到的帧,没有帧头或者帧尾,退出JZsdk_6BFrameComparsion函数\n");
return JZ_ERROR_SYSTEM_FRAME_ERROR;
}
//一级功能码
switch (getdata[7])
{
case 0x6F:
return Comparison_6BFRAME_FirstLevelCode_0x6F(getdata);
break;
default:
return JZ_ERROR_SYSTEM_FRAME_ERROR;
break;
}
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file
*
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FRAMECOMPARSION_6BFRAME_H
#define JZSDK_FRAMECOMPARSION_6BFRAME_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_6BFrameComparsion(char *getdata, int len);
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include <string.h>
#include "../JZsdk_Code/JZsdk_Code.h"
/******************************************************
用于获取帧模板
/******************************************************/
int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len)
{
printf("JZsdk_GetFrameTemplate:获取0x%x帧模板\n",InsCode);
switch (InsCode)
{
/********************************************************************************************************************************************************
*
* 5A帧
*
********************************************************************************************************************************************************/
case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_FREQUENCY:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x61 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_SEARCHLIGHT_CONTROL:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x62 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_SEARCHLIGHT_SET_LUMEN:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x63 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_CONTROL:
{
char sendbuf[14] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0E ,0x00 ,0x00 ,0x64 ,0x51 ,0x00 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 14);
*str_len = 14;
}
break;
case JZ_INSCODE_5AFRAME_GIMBAL_PITCH_FINETUNING_CONTROL:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x64 ,0x52 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_WARNINGLIGHT_CONTROL:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x66 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_WARNINGLIGHT_COLOUR:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x67 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_SEARCHLIGHT_MESSAGE_SUBSCRIPTION_CONTROL:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x68 ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_LIGHTATTRIBUTE:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x52 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x55 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5AFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x56 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
case JZ_INSCODE_5AFRAME_CHECKSTATUS_SERIALNUMBER:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x57 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
case JZ_INSCODE_5AFRAME_CHECKSTATUS_GIMBAL_FINETUNING:
{
char sendbuf[13] = {0x5A ,0x5A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x58 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
/********************************************************************************************************************************************************
*
* 5B帧
*
********************************************************************************************************************************************************/
case JZ_INSCODE_5BFRAME_INITIATECONNECT:
{
char sendbuf[12] = {0x5B ,0x5B ,0x77 ,0x00 ,0x0c ,0x00 ,0x00 ,0x50 ,0x51 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_SUCESS:
{
char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_DEFEAT:
{
char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x51, 0xff, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_MUSICLIST_START:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_MUSICLIST_TRANS:
{
char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_MUSICLIST_STOP:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0xff, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS_END:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0xff, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_AUDIO_PLAYSTATUS:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_AUDIO_PLAYFILENAME:
{
char sendbuf[12] = {0x5B, 0x5B, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x04, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_VOLUME:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_SORTWAREVERSION:
{
char sendbuf[15] = { 0x5b, 0x5b, 0x77, 0x00, 0x0f, 0x00, 0x00, 0x53, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 15);
*str_len = 15;
}
break;
case JZ_INSCODE_5BFRAME_AUDIO_PLAYLOOPSTATUS:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x05, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_TTS_TONE:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x06, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_TTS_SPEED:
{
char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 12);
*str_len = 12;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_FREQUENCY:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x61, 0x51, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_MODE:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x62, 0x51, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_LUMEN:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x63, 0x51, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5BFRAME_GIMBAL_PITCH:
{
char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x64, 0x51, 0x00, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 14);
*str_len = 14;
}
break;
case JZ_INSCODE_5BFRAME_GIMBAL_PITCH_FINETUNING:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x64, 0x52, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5BFRAME_GIMBAL_YAW:
{
char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0e, 0x00, 0x00, 0x65, 0x51, 0x00, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 14);
*str_len = 14;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_STATUS:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x66, 0x51, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_WARNINGLIGHT_COLOR:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x67, 0x51, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_SEARCHLIGHT_TEMPERATURE:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x69, 0x51, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_5BFRAME_CHECKSTATUS_SERIALNUMBER:
{
char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x69, 0x54, 0x00, 0x00, 0x00, 0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
/********************************************************************************************************************************************************
*
* 6A帧
*
********************************************************************************************************************************************************/
case JZ_INSCODE_6AFRAME_GIMBAL_LINKAGE_CONTROL:
{
char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x69 ,0x56 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME:
{
char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x50 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE:
{
char sendbuf[13] = {0x6A ,0x6A ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
/********************************************************************************************************************************************************
*
* 6B帧
*
********************************************************************************************************************************************************/
case JZ_INSCODE_6BFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME:
{
char sendbuf[13] = {0x6B ,0x6B ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x50 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
case JZ_INSCODE_6BFRAME_CHECKSTATUS_GIMBAL_LINKAGE:
{
char sendbuf[13] = {0x6B ,0x6B ,0x77 ,0x00 ,0x0D ,0x00 ,0x00 ,0x6F ,0x51 ,0x00 ,0x00 ,0x00 ,0x23};
memcpy(str, sendbuf, 13);
*str_len = 13;
}
break;
default:
printf("JZsdk_GetFrameTemplate:没有对应的帧模板\n");
break;
}
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file
*
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_GET_FRAME_TEMPLATE_H
#define JZSDK_GET_FRAME_TEMPLATE_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len);
#ifdef __cplusplus
}
#endif
#endif
... ...
/* 头文件 ------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include "JZsdk_Logger.h"
#include <time.h>
#include "JZsdkLib.h"
#include <pthread.h>
#include <sys/time.h>
// 定义全局互斥锁
static pthread_mutex_t LogWriteMutex = PTHREAD_MUTEX_INITIALIZER;
/* 全局变量 ------------------------------------------------------------------*/
static struct timeval g_start_time;
static FILE *logFile;
static char LogFileName[JZSDK_FILENAME_SIZE];
/* 函数声明 ------------------------------------------------------------------*/
static void *MonitorTask(void *arg)
{
while (1)
{
delayS(10);
USER_LOG_DEBUG("Monitor");
}
}
static int Log_Monitor()
{
pthread_t work_mode_task;
pthread_attr_t task_attribute; //线程属性
pthread_attr_init(&task_attribute); //初始化线程属性
pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程属性
int timer = pthread_create(&work_mode_task,&task_attribute,MonitorTask,NULL); //线程
if(timer != 0)
{
printf("创建计时线程失败!\n");
}
}
void createJZLOGFolder()
{
const char *path = "/root/sdcard/JZLOG";
// 使用系统命令检测路径是否存在
char command[100];
snprintf(command, sizeof(command), "if [ ! -d \"%s\" ]; then mkdir -p \"%s\"; fi", path, path);
JZsdk_RunSystemCmd(command);
}
int ReadLogNumFromFile()
{
const char *path = "/root/sdcard/JZLOG/thelast";
int logNum = 0;
FILE *file = fopen(path, "r");
if (file == NULL)
{
// 如果文件不存在,则创建并设置LogNum为0
file = fopen(path, "w");
fprintf(file, "%d", logNum);
}
else
{
// 从文件中读取LogNum,并自增1
fscanf(file, "%d", &logNum);
logNum++;
fclose(file);
// 将新的LogNum写回文件中
file = fopen(path, "w");
fprintf(file, "%d", logNum);
}
fclose(file);
return logNum;
}
T_JZsdkReturnCode JZsdk_LoggerInit()
{
//1、记录启动时间
gettimeofday(&g_start_time, 0);
//2、检查是否存在log文件,不在则创建
createJZLOGFolder();
//3、获取本地log个数
int LogNum = ReadLogNumFromFile();
//4、获取本地时间,拼接出log文件名
time_t current_time;
struct tm *info;
char timeString[80];
time(&current_time);
info = localtime(&current_time);
strftime(timeString, sizeof(timeString), "%Y-%m-%d-%H-%M-%S", info);
snprintf(LogFileName, sizeof(LogFileName), "/root/sdcard/JZLOG/%d-%s", LogNum, timeString);
printf("LogFileName:%s\n",LogFileName);
// 在主函数或初始化阶段初始化互斥锁
pthread_mutex_init(&LogWriteMutex, NULL);
//5、打开记录文件
logFile = fopen(LogFileName, "w");
if (logFile == NULL) {
// 文件打开失败,输出错误消息
printf("Failed to open file: %s", LogFileName);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//6、写入开始时间
char logMessage[256];
snprintf(logMessage,256,"LOG_FILE:%s\n",LogFileName);
fprintf(logFile, "%s", logMessage);
fclose(logFile);
//设立监控
Log_Monitor();
}
T_JZsdkReturnCode writeToLogFile(const char *data)
{
// 加锁
pthread_mutex_lock(&LogWriteMutex);
logFile = fopen(LogFileName, "a"); // 使用"a"模式打开文件,以在末尾追加数据
if (logFile == NULL) {
// 文件打开失败,输出错误消息
printf("Failed to open file: %s", LogFileName);
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
fprintf(logFile, "%s", data); // 写入新的数据
fclose(logFile);
// 解锁
pthread_mutex_unlock(&LogWriteMutex);
}
void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...)
{
// 将日志级别转换为相应的字符串
const char *JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "";
switch (level) {
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "DEBUG";
break;
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "INFO";
break;
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "WARNING";
break;
case JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR:
JZSDK_LOGGER_CONSOLE_LOG_LEVEL = "ERROR";
break;
default:
break;
}
// 使用可变参数处理传入的格式化字符串和可变参数
va_list args;
va_start(args, fmt);
// 格式化日志消息
char logMessage[512];
memset(logMessage, 0, sizeof(logMessage));
vsprintf(logMessage, fmt, args);
va_end(args);
struct timeval current_time;
gettimeofday(&current_time, 0);
long seconds = current_time.tv_sec - g_start_time.tv_sec;
long microseconds = current_time.tv_usec - g_start_time.tv_usec;
double elapsed = seconds + microseconds*1e-6;
// 执行具体的日志输出操作
char finalLogMessage[512];
snprintf(finalLogMessage, 512, "[%s][%.4f]%s\n", JZSDK_LOGGER_CONSOLE_LOG_LEVEL, elapsed, logMessage);
printf("%s",finalLogMessage);
//写入日志
writeToLogFile(finalLogMessage);
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZsdk_Logger.h
* 用于给h150s logger显示文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_LOGGER_H
#define JZSDK_LOGGER_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
typedef enum {
JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR = 0, /*!< Logger console error level. The method and level of the console are
associated with each other. If the level of the registered console
method is lower than this level, the level interface will not be
printed successfully. */
JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN = 1, /*!< Logger console warning level.The method and level of the console are
associated with each other. If the level of the registered console
method is lower than this level, the level interface will not be
printed successfully. */
JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO = 2, /*!< Logger console info level. The method and level of the console are
associated with each other. If the level of the registered console
method is lower than this level, the level interface will not be
printed successfully. */
JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG = 3, /*!< Logger console debug level. The method and level of the console are
associated with each other. If the level of the registered console
method is lower than this level, the level interface will not be
printed successfully. */
} E_JZsdkConsoleLogLevel;
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
void JZsdk_UserLogOutput(E_JZsdkConsoleLogLevel level, const char *fmt, ...);
T_JZsdkReturnCode JZsdk_LoggerInit();
/* Exported constants --------------------------------------------------------*/
#define USER_LOG_DEBUG(fmt, ...) \
JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_DEBUG, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
#define USER_LOG_INFO(fmt, ...) \
JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_INFO, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
#define USER_LOG_WARN(fmt, ...) \
JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_WARN, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
#define USER_LOG_ERROR(fmt, ...) \
JZsdk_UserLogOutput(JZSDK_LOGGER_CONSOLE_LOG_LEVEL_ERROR, "[%s:%d) " fmt, __FUNCTION__, __LINE__ , ##__VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif
/************************ (C) COPYRIGHT JZSDK Innovations *******END OF FILE******/
... ...
#include <stdio.h>
#include "JZsdk_FileSystm.h"
#include <stdlib.h>
#include <stdbool.h>
/*
* 用于运行指令
*
*/
int JZsdk_RunSystemCmd(char *systemCmd)
{
//FILE *fp;
//printf("JZsdk_RunSystemCmd:%s\n",systemCmd);
// fp = popen(systemCmd, "r");
// if (fp == NULL) {
// return -1;
// }
int status = system(systemCmd);
if (status == -1 || WIFEXITED(status) == false) {
printf("Call %s error, status = %d\n", systemCmd, status);
return -1;
}
if (WEXITSTATUS(status) == 0) {
printf("指令执行成功%s\n",systemCmd);
return 0;
} else {
printf("Exit status is = %d", WEXITSTATUS(status));
return -2;
}
//pclose(fp);
return 0;
}
/*
运行命令 并读取返回值
*/
// FILE* JZsdk_RunSystemCmd_ReturnFilePointer(char *systemCmd)
// {
// FILE *fp;
// fp = popen(systemCmd, "r");
// pclose(fp);
// return fp;
// }
int JZsdk_Socket()
{
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZsdk_FileSystem.h
* 用于文件系统操作
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_FILESYSTEM_H
#define JZSDK_FILESYSTEM_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#define JZSDK_FILENAME_SIZE 128
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_RunSystemCmd(char *systemCmd);
//FILE* JZsdk_RunSystemCmd_ReturnFilePointer(char *systemCmd);
#ifdef __cplusplus
}
#endif
#endif
/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
... ...
/**
********************************************************************
* @file JZsdkCommonFuntion.h
* JZsdk常用函数库的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDKCOMMONFUNTION_H
#define JZSDKCOMMONFUNTION_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
#include "JZsdk_string/JZsdk_string.h"
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include "JZsdk_string.h"
/*
* 用于字符串转int型
*/
int JZsdk_String_str_to_int(const char *str)
{
int temp = 0;
const char *ptr = str; //ptr保存str字符串开头
if (*str == '-' || *str == '+') //如果第一个字符是正负号,
{ //则移到下一个字符
str++;
}
while(*str != 0)
{
if ((*str < '0') || (*str > '9')) //如果当前字符不是数字
{ //则退出循环
break;
}
temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
str++; //移到下一个字符
}
if (*ptr == '-') //如果字符串是以“-”开头,则转换成其相反数
{
temp = -temp;
}
return temp;
}
/*
* int型转字符串
*/
void JZsdk_String_int_to_str(int n, char *str)
{
char buf[10] = "";
int i = 0;
int len = 0;
int temp = n < 0 ? -n: n; // temp为n的绝对值
if (str == NULL)
{
return;
}
while(temp)
{
buf[i++] = (temp % 10) + '0'; //把temp的每一位上的数存入buf
temp = temp / 10;
}
len = n < 0 ? ++i: i; //如果n是负数,则多需要一位来存储负号
str[i] = 0; //末尾是结束符0
while(1)
{
i--;
if (buf[len-i-1] ==0)
{
break;
}
str[i] = buf[len-i-1]; //把buf数组里的字符拷到字符串
}
if (i == 0 )
{
str[i] = '-'; //如果是负数,添加一个负号
}
}
/*
* longlong型转字符串型
*/
size_t JZsdk_String_longlong_to_str(char *s, long long value,int radix)
{
char *p, aux;
unsigned long long v;
size_t l;
/* Generate the string representation, this method produces
* an reversed string. */
v = (value < 0) ? -value : value;
p = s;
do {
*p++ = '0' + (v % radix); // 2
v /= radix; // 2
} while (v);
if (value < 0) *p++ = '-';
/* Compute length and add null term. */
l = p - s;
*p = '\0';
/* Reverse the string. */
p--;
while (s < p) {
aux = *s;
*s = *p;
*p = aux;
s++;
p--;
}
return l;
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZsdk_string.h
* 用于文件系统操作
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_STRING_H
#define JZSDK_STRING_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_String_str_to_int(const char *str);
void JZsdk_String_int_to_str(int n, char *str);
size_t JZsdk_String_longlong_to_str(char *s, long long value,int radix);
#ifdef __cplusplus
}
#endif
#endif
... ...
为方便在多个板子之间移植
sdk包被我分成了多个部分
1、Base文件
不需要依赖任何第三方环境,只需要在linux上跑,同时为其他地方,如module提供延时函数等
2、JZsdk_Normal_Module
功能模组合集,为了移植时不依赖第三方文件或板子环境,使用JZsdk_module_inport.c进行参数提供
当你需要使用第三方参数给module时,你应该把接口写在Module_InPort,后Module内的模块调用Module_Inport
当你需要给第三方参数时
同样应该使用 JZsdk_Module_OutPort.c进行提供
... ...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "UartConnection/UartConnection.h"
#include "Megaphone_InputAndOutput.h"
#include "BaseConfig.h"
#include "version_choose.h"
#include "JZsdk_Uart_UartDeal.h"
#include "Gimbal_InAndOut.h"
#include "Uart_Config.h"
#include "JZsdk_Uart_Send/JZsdk_Uart_Send.h"
// 记录串口是否有被使用,方便ui_contrl进行信息反馈
struct UartDev_UseFlag
{
int UartDev_DEV1 ;
int UartDev_DEV2 ;
int UartDev_4G ;
};
static struct UartDev_UseFlag UartDevUseFlag = {JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF, JZ_FLAGCODE_OFF};
/****************
*
* 回复串口是否有被调用
*
* *************/
int JZsdk_Get_UartDev_UseFlag(int UART_DEV_NAME)
{
if (UART_DEV_NAME == UART_DEV_1)
{
return UartDevUseFlag.UartDev_DEV1;
}
if (UART_DEV_NAME == UART_DEV_2)
{
return UartDevUseFlag.UartDev_DEV2;
}
if (UART_DEV_NAME == UART_4G)
{
return UartDevUseFlag.UartDev_4G;
}
}
/**************
*
* 串口部分初始化
*
* *********/
int JZsdk_Uart_Init(int UART_DEV_NAME)
{
int Uart_fd = 0;
//初始化的是一号设备
if (UART_DEV_NAME == UART_DEV_1)
{
//1、串口初始化
Uart_fd = UartConnection_UartEnabled(UART_DEV1_NUM, UART_DEV1_BITRATE);
//2、串口接收初始化
JZsdk_Uart_UartDeal_Receive(Uart_fd, UART_DEV_1);
//3、将使用标识打开
UartDevUseFlag.UartDev_DEV1 = JZ_FLAGCODE_ON;
}
//初始化的是二号设备
if (UART_DEV_NAME == UART_DEV_2)
{
//1、串口初始化
Uart_fd = UartConnection_UartEnabled(UART_DEV2_NUM, UART_DEV2_BITRATE);
//2、串口接收初始化
JZsdk_Uart_UartDeal_Receive(Uart_fd, UART_DEV_2);
//3、将使用标识打开
UartDevUseFlag.UartDev_DEV2 = JZ_FLAGCODE_ON;
}
if (UART_DEV_NAME == UART_4G)
{
//1、串口初始化
Uart_fd = UartConnection_UartEnabled(COMM_4G_UART_NUM, COMM_4G_UART_BITRATE);
//2、串口接收初始化
JZsdk_Uart_UartDeal_Receive(Uart_fd, UART_4G);
//3、将使用标识打开
UartDevUseFlag.UartDev_4G = JZ_FLAGCODE_ON;
}
printf("%x串口初始化完成\n", UART_DEV_NAME);
}
/*
*
* 发送播放结束状态帧
*
*/
int JZsdk_Uart_Reply_PlayStatus_end(int PortNum)
{
//发送播放状态结束帧
JZsdk_Uart_SendDeal_Send_PlayStatus_end(PortNum);
}
/**************
*
* 发送发送播放状态帧
*
* ***********/
int JZsdk_Uart_Send_PlayStatus(int Uartport ,int num)
{
JZsdk_Uart_SendDeal_Send_PlayStatus(Uartport, num);
}
/**************
*
* 发送音量
*
* ***********/
int JZsdk_Uart_Reply_Volume(int Uartport,int volume)
{
JZsdk_Uart_SendDeal_Reply_Volume(Uartport, volume);
}
/**************
*
* 发送音色
*
* ***********/
int JZsdk_Uart_Reply_TTS_tone(int Uartport,int tone)
{
JZsdk_Uart_SendDeal_Reply_TTS_tone(Uartport, tone);
}
/**************
*
* 发送语速
*
* ***********/
int JZsdk_Uart_Reply_TTS_speed(int Uartport,int speed)
{
JZsdk_Uart_SendDeal_Reply_TTS_speed(Uartport, speed);
}
/**************
*
* 发送循环状态
*
* ***********/
int JZsdk_Uart_Reply_AudioPlayLoopStatus(int Uartport,int speed)
{
JZsdk_Uart_SendDeal_Reply_LoopPlayStatus(Uartport, speed);
}
/**************
*
* 发送云台俯仰角度查询值
*
* ***********/
int JZsdk_Uart_Reply_GimbalPitchAngle(int Uartport,int angle)
{
JZsdk_Uart_SendDeal_Reply_GimbalPitchAngle(Uartport, angle);
}
/*************
*
* 设置云台俯仰角度
*
* **************/
int JZsdk_Uart_Send_SetGimbalPitch(int Uartport,int angle)
{
JZsdk_Uart_SendDeal_Set_GimbalPitchAngle(Uartport, angle);
}
/*************
*
* 设置云台俯仰角度微调
*
* **************/
int JZsdk_Uart_Send_SetGimbalFineTuningPitch(int Uartport,int angle)
{
JZsdk_Uart_SendDeal_Set_GimbalFineTuningPitch(Uartport, angle);
}
/*************
*
* 查询云台微调角度
*
* **************/
int JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(int Uartport,int FrameSequence)
{
JZsdk_Uart_SendDeal_CheckStatus_GimbalFineTuningPitch(Uartport,FrameSequence);
}
/*************
*
* 发送云台俯仰微调值
*
* **************/
int JZsdk_Uart_Send_GimbalFineTuningPitch(int Uartport,int FrameSequence, int Pitch)
{
JZsdk_Uart_SendDeal_Reply_GimbalFineTuningPitch(Uartport,FrameSequence, Pitch);
}
/*************
*
* 设置云台联动
*
* **************/
int JZsdk_Uart_Send_Set_GimbalLinkageControl(int Uartport,int FrameSequence, int value)
{
JZsdk_Uart_SendDeal_Set_GimbalLinkageControl(Uartport,FrameSequence, value);
}
/*************
*
* 查询云台联动值
*
* **************/
int JZsdk_Uart_Send_CheckStatus_GimbalLinkage(int Uartport,int FrameSequence)
{
JZsdk_Uart_SendDeal_CheckStatus_GimbalLinkage(Uartport,FrameSequence);
}
/*************
*
* 发送云台联动值
*
* **************/
int JZsdk_Uart_Send_GimbalLinkageControl(int Uartport,int FrameSequence, int value)
{
JZsdk_Uart_SendDeal_GimbalLinkageControl(Uartport,FrameSequence,value);
}
/*******************************************************************************************************************************
*
* 探照灯部分
*
* *******************************************************************************************************************************/
/*************
*
* 设置探照灯爆闪频率
*
* **************/
int JZsdk_Uart_Send_SearchLight_SetFrequency(int Uartport,int Frequency)
{
JZsdk_Uart_SendDeal_Set_SearchLightFrequency(Uartport ,Frequency);
}
/*************
*
* 探照灯控制
*
* **************/
int JZsdk_Uart_Send_SearchLight_Control(int Uartport,int mode)
{
JZsdk_Uart_SendDeal_SearchLight_Control(Uartport, mode);
}
/*************
*
* 探照灯亮度
*
* **************/
int JZsdk_Uart_Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen)
{
JZsdk_Uart_SendDeal_SearchLight_SetLumen(Uartport, LeftLumen, RightLumen);
}
/*************
*
* 查询爆闪频率
*
* **************/
int JZsdk_Uart_Send_SearchLight_CheckStatus_Frequency(int Uartport)
{
JZsdk_Uart_SendDeal_Set_SearchLight_CheckStatus_Frequency(Uartport);
}
/*************
*
* 查询探照灯亮度
*
* **************/
int JZsdk_Uart_Send_SearchLight_CheckStatus_Lumen(int Uartport)
{
JZsdk_Uart_SendDeal_Set_SearchLight_CheckStatus_Lumen(Uartport);
}
/*************
*
* 查询探照灯模式
*
* **************/
int JZsdk_Uart_Send_SearchLight_CheckStatus_Mode(int Uartport)
{
JZsdk_Uart_SendDeal_Set_SearchLight_CheckStatus_Mode(Uartport);
}
/*************
*
* 查询探照灯属性
*
* **************/
int JZsdk_Uart_Send_SearchLight_CheckStatus_LightAttribute(int Uartport)
{
JZsdk_Uart_SendDeal_CheckStatus_LightAttribute(Uartport);
}
/*************
*
* 查询探照灯温度
*
* **************/
int JZsdk_Uart_Send_SearchLight_CheckStatus_SearchLightTemperture(int Uartport)
{
JZsdk_Uart_SendDeal_CheckStatus_SearchLightTemperture(Uartport);
}
/*************
*
* 探照灯消息订阅
*
* **************/
int JZsdk_Uart_Send_MessageSubcription_Control(int Uartport,int value)
{
JZsdk_Uart_SendDeal_MessageSubcription_Control(Uartport, value);
}
/*******************************************************************************************************************************
*
* 警灯部分
*
* *******************************************************************************************************************************/
/*************
*
* 设置警灯状态
*
* **************/
int JZsdk_Uart_Send_Set_WarningLight_Status(int Uartport,int status, int mode)
{
JZsdk_Uart_SendDeal_Set_WarningLight_Status(Uartport, status, mode);
}
/*************
*
* 设置警灯颜色
*
* **************/
int JZsdk_Uart_Send_Set_WarningLight_Color(int Uartport,int color1, int color2)
{
JZsdk_Uart_SendDeal_Set_WarningLight_Color(Uartport, color1, color2);
}
/*******************************************************************************************************************************
*
* 5B类部分
*
* *******************************************************************************************************************************/
/*************
*
* 发送探照灯爆闪频率
*
* **************/
int JZsdk_Uart_Send_SearchLight_Frequency(int Uartport,int value)
{
JZsdk_Uart_SendDeal_SearchLight_Frequency(Uartport, value);
}
/*************
*
* 发送探照灯模式
*
* **************/
int JZsdk_Uart_Send_SearchLight_Mode(int Uartport,int value)
{
JZsdk_Uart_SendDeal_SearchLight_Mode(Uartport, value);
}
/*************
*
* 发送探照灯亮度
*
* **************/
int JZsdk_Uart_Send_SearchLight_Lumen(int Uartport,int LeftLumen, int RightLumen)
{
JZsdk_Uart_SendDeal_SearchLight_Lumen(Uartport, LeftLumen, RightLumen);
}
/*************
*
* 发送探照灯温度
*
* **************/
int JZsdk_Uart_Send_SearchLight_Temperature(int Uartport,int LeftTemperature, int RightTemperature)
{
JZsdk_Uart_SendDeal_SearchLight_Temperature(Uartport, LeftTemperature, RightTemperature);
}
/*******************************************************************************************************************************
*
* 警灯部分
*
* *******************************************************************************************************************************/
/*************
*
* 发送警灯状态
*
* **************/
int JZsdk_Uart_Send_WarningLight_Status(int Uartport, int status, int mode)
{
JZsdk_Uart_SendDeal_WarningLight_Status(Uartport, status, mode);
}
/*************
*
* 发送警灯颜色
*
* **************/
int JZsdk_Uart_Send_WarningLight_Color(int Uartport, int color1, int color2)
{
JZsdk_Uart_SendDeal_WarningLight_Color(Uartport, color1, color2);
}
/*************
*
* 查询警灯状态
*
* **************/
int JZsdk_Uart_Send_CheckStatus_WarningLightStatus(int Uartport)
{
JZsdk_Uart_SendDeal_CheckStatus_WarningLightStatus(Uartport);
}
/*************
*
* 查询警灯颜色
*
* **************/
int JZsdk_Uart_Send_CheckStatus_WarningLightColor(int Uartport)
{
JZsdk_Uart_SendDeal_CheckStatus_WarningLightColor(Uartport);
}
... ...
/**
********************************************************************
* @file JZsdk_Uart_Input.h
* JZsdk_Uart_Input
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_UART_INPUT_H
#define JZSDK_UART_INPUT_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_Uart_Init(int UART_DEV_NAME);
int JZsdk_Get_UartDev_UseFlag(int UART_DEV_NAME);
int JZsdk_Uart_Reply_PlayStatus_end(int PortNum);
int JZsdk_Uart_Send_PlayStatus(int Uartport ,int num);
int JZsdk_Uart_Reply_Volume(int Uartport,int volume);
int JZsdk_Uart_Reply_TTS_tone(int Uartport,int tone);
int JZsdk_Uart_Reply_TTS_speed(int Uartport,int speed);
int JZsdk_Uart_Reply_AudioPlayLoopStatus(int Uartport,int speed);
int JZsdk_Uart_Reply_GimbalPitchAngle(int Uartport,int angle);
int JZsdk_Uart_Send_SetGimbalPitch(int Uartport,int angle);
int JZsdk_Uart_Send_SetGimbalFineTuningPitch(int Uartport,int angle);
int JZsdk_Uart_Send_Gimbal_Pitch(int Uartport, int pitch);
int JZsdk_Uart_Send_CheckStatus_GimbalFineTuningPitch(int Uartport,int FrameSequence);
int JZsdk_Uart_Send_GimbalFineTuningPitch(int Uartport,int FrameSequence, int Pitch);
int JZsdk_Uart_Send_Set_GimbalLinkageControl(int Uartport,int FrameSequence, int value);
int JZsdk_Uart_Send_CheckStatus_GimbalLinkage(int Uartport,int FrameSequence);
int JZsdk_Uart_Send_GimbalLinkageControl(int Uartport,int FrameSequence, int value);
int JZsdk_Uart_Send_SearchLight_SetFrequency(int Uartport,int Frequency);
int JZsdk_Uart_Send_SearchLight_Control(int Uartport,int mode);
int JZsdk_Uart_Send_SearchLight_SetLumen(int Uartport, int LeftLumen, int RightLumen);
int JZsdk_Uart_Send_MessageSubcription_Control(int Uartport,int value);
int JZsdk_Uart_Send_Set_WarningLight_Status(int Uartport,int status, int mode);
int JZsdk_Uart_Send_Set_WarningLight_Color(int Uartport,int color1, int color2);
int JZsdk_Uart_Send_SearchLight_CheckStatus_Frequency(int Uartport);
int JZsdk_Uart_Send_SearchLight_CheckStatus_Lumen(int Uartport);
int JZsdk_Uart_Send_SearchLight_CheckStatus_Mode(int Uartport);
int JZsdk_Uart_Send_SearchLight_CheckStatus_LightAttribute(int Uartport);
int JZsdk_Uart_Send_SearchLight_CheckStatus_SearchLightTemperture(int Uartport);
int JZsdk_Uart_Send_SearchLight_Frequency(int Uartport,int value);
int JZsdk_Uart_Send_SearchLight_Mode(int Uartport,int value);
int JZsdk_Uart_Send_SearchLight_Lumen(int Uartport,int LeftLumen, int RightLumen);
int JZsdk_Uart_Send_SearchLight_Temperature(int Uartport,int LeftTemperature, int RightTemperature);
int JZsdk_Uart_Send_WarningLight_Status(int Uartport, int status, int mode);
int JZsdk_Uart_Send_WarningLight_Color(int Uartport, int color1, int color2);
int JZsdk_Uart_Send_CheckStatus_WarningLightStatus(int Uartport);
int JZsdk_Uart_Send_CheckStatus_WarningLightColor(int Uartport);
#ifdef __cplusplus
}
#endif
#endif
... ...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "UartConnection/UartConnection.h"
#include "Megaphone_InputAndOutput.h"
#include "BaseConfig.h"
#include "version_choose.h"
#include "JZsdk_Uart_UartDeal.h"
#include "Gimbal_InAndOut.h"
#include "Uart_Config.h"
#include "JZsdk_Uart_Send/JZsdk_Uart_Send.h"
#include "UI_control.h"
static int SecondaryDeviceName = 0x00; //从设备名,用于多设备相连时通知控制端 从机设备名
/******
*
* 开关功放
*
* *******/
int JZsdk_Uart_Set_Amplifier(int status)
{
Megaphone_set_amplifier(status);
}
/******
*
* 调节音量
*
* *******/
T_JZsdkReturnCode JZsdk_Uart_Set_Volume(int DeviceName, int value)
{
return UIcontrol_SetVolume(DeviceName, value);
}
/*********
*
* 1、TTS播放
*
* *********/
T_JZsdkReturnCode JZsdk_Uart_TTS_Play(int DeviceName, char *data ,int len)
{
return UIcontrol_TTS_Play(DeviceName, data, len);
}
/*********
*
* 2、TTS设置音色
*
* *********/
T_JZsdkReturnCode JZsdk_Uart_TTS_SetTone(int DeviceName, int tone)
{
return UIcontrol_Set_TTS_tone(DeviceName, tone);
}
/*********
*
* 3、TTS设置语速
*
* *********/
T_JZsdkReturnCode JZsdk_Uart_TTS_SetSpeed(int DeviceName, int speed)
{
return UIcontrol_Set_TTS_speed(DeviceName, speed);
}
/*********
*
* 刷新歌曲列表
*
*
**********/
int JZsdk_Uart_Flush_MusicList()
{
Megaphone_Flush_MusicList();
}
/*********
*
* 获取音乐总数
*
*
**********/
int JZsdk_Uart_get_music_list_sum()
{
return Megaphone_get_music_list_sum();
}
/*********
*
* 获取音乐名
*
*
**********/
int JZsdk_Uart_get_music_list_name(int num, char *music_name, int *music_name_length)
{
return Megaphone_get_music_list_name(num, music_name, music_name_length);
}
/*********
*
* 查询音量
*
*
**********/
int JZsdk_Uart_CheckStatus_volume()
{
return Megaphone_get_music_volume();
}
/*********
*
* 查询播放状态
*
*
**********/
int JZsdk_Uart_CheckStatus_play()
{
return Megaphone_get_play_status();
}
/*********
*
* 查询云台角度
*
*
**********/
int JZsdk_Uart_CheckStatus_gimbal()
{
int AngleType = 1;
if (AngleType == 1)
{
return Gimbal_Get_PitchAngle();
}
}
/*********
*
* 查询云台微调值
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_GimbalFineTuning(int DeviceName, int FrameSequence)
{
//查询云台微调
printf("查询云台微调值\n");
//1、查询本地云台微调
int FineTunigPitch, FineTunigYaw;
int ret = UIcontrol_CheckStatus_GimbalPitchFineTuning(&FineTunigPitch, &FineTunigYaw);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
return ret;
}
//2、发送本地云台微调
JZsdk_Uart_SendDeal_Reply_GimbalFineTuningPitch(DeviceName, FrameSequence, FineTunigPitch);
}
/*********
*
* 查询播放文件名
*
*
**********/
int JZsdk_Uart_CheckStatus_PlayFileName(char *music_name, int *music_name_len)
{
Megaphone_get_play_FileName(music_name, music_name_len);
}
/*********
*
* 查询软件版本号
*
*
**********/
int JZsdk_Uart_CheckStatus_SoftwareVersion(char *majorVersion, char *minorVersion, char *modifyVersion, char *debugVersion)
{
*majorVersion = MAJOR_VERSION;
*minorVersion = MINOR_VERSION;
*modifyVersion = MODIFY_VERSION;
*debugVersion = DEBUG_VERSION;
}
/*********
*
* 查询是否打开循环
*
*
**********/
int JZsdk_Uart_CheckStatus_LoopPlay()
{
return Megaphone_Get_LoopPlay();
}
/*********
*
* 查询音色
*
*
**********/
int JZsdk_Uart_CheckStatus_TTS_tone()
{
return Megaphone_Get_TTS_tone();
}
/*********
*
* 查询语速
*
*
**********/
int JZsdk_Uart_CheckStatus_TTS_speed()
{
return Megaphone_Get_TTS_speed();
}
/***
*
*
* 播放歌曲
*
* ***/
T_JZsdkReturnCode JZsdk_Uart_PlayMusic(int DeviceName, char *music_name, int datasize)
{
return UIcontrol_PlayAudioFile(DeviceName, music_name, datasize);
}
/*********
*
* 音频继续播放
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_audio_PlayContinue(int DeviceName)
{
return UIcontrol_ContinuePlayAudio(DeviceName);
}
/*********
*
* 音频暂停播放
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_audio_PlayPause(int DeviceName)
{
return UIcontrol_PausePlayAudio(DeviceName);
}
/*********
*
* 音频停止播放
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_audio_PlayStop(int DeviceName)
{
return UIcontrol_StopPlayAudio(DeviceName);
}
/*********
*
* 音频上一曲
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_audio_LastSong(int DeviceName)
{
return UIcontrol_LastSong(DeviceName);
}
/*********
*
* 音频下一曲
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_audio_NextSong(int DeviceName)
{
return UIcontrol_NextSong(DeviceName);
}
/*********
*
* 12、循环播放
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_audio_PlayLoop(int DeviceName, int mode)
{
return UIcontrol_Set_AudioPlayLoop(DeviceName, mode);
}
/****************************************************************************************************************************************************
*
* 录音opus 接口部分
*
****************************************************************************************************************************************************/
/*********
*
* 播放固定位置的opus音频
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_Opus_PlayFixedFile(int DeviceName)
{
return UIcontrol_Opus_PlayFixedFile(DeviceName);
}
/*
*
* 存储opus文件开始
*
*/
int JZsdk_Uart_SaveOpusStart(int decode_rate)
{
Megaphone_SaveOpusStart(decode_rate);
}
/*
*
* 存储opus文件中
*
*/
int JZsdk_Uart_SaveOpusTrans(char *SaveData, int size)
{
Megaphone_SaveOpusTrans(SaveData, size);
}
/*
*
* 存储opus文件结束
*
*/
int JZsdk_Uart_SaveOpusStop()
{
Megaphone_SaveOpusStop();
}
/****************************************************************************************************************************************************
*
* 实时喊话opus 接口部分
*
****************************************************************************************************************************************************/
int JZsdk_Uart_RealTimeVoiceStart(int decode_rate)
{
Megaphone_RealTimeVoice_Start(decode_rate);
}
int JZsdk_Uart_RealTimeVoiceTrans(char *data, int length)
{
Megaphone_RealTimeVoice_Trans(data, length);
}
int JZsdk_Uart_RealTimeVoiceClose()
{
Megaphone_RealTimeVoice_Close();
}
/****************************************************************************************************************************************************
*
* 实时MP2 接口部分
*
****************************************************************************************************************************************************/
T_JZsdkReturnCode JZsdk_Uart_RealTimeMP2_start(int decode_rate)
{
return Megaphone_RealTimeMP2_start();
}
T_JZsdkReturnCode JZsdk_Uart_RealTimeMP2_Trans(unsigned char *data, int length)
{
return Megaphone_RealTimeMP2_trans(data, length);
}
T_JZsdkReturnCode JZsdk_Uart_RealTimeMP2_Close()
{
Megaphone_RealTimeMP2_stop();
}
/****************************************************************************************************************************************************
*
* 云台部分
*
****************************************************************************************************************************************************/
/*********
*
* 云台俯仰控制
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchControl(int DeviceName, int Gimbal_angle)
{
return UIcontrol_Set_GimbalPitchAngle(DeviceName, Gimbal_angle);
}
/*********
*
* 云台俯仰微调角度
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchFineTuningControl(int DeviceName, int FrameSequence,int Gimbal_angle)
{
T_JZsdkReturnCode ret = UIcontrol_Set_GimbalPitchFineTuning(DeviceName, Gimbal_angle);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
JZsdk_Uart_SendDeal_Reply_Sucesss(DeviceName, FrameSequence);
}
else
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
}
}
/****************************************************************************************************************************************************
*
* 探照灯部分
*
****************************************************************************************************************************************************/
/*********
*
* 探照灯爆闪频率控制
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_Lighting_SetSearchLightFrequency(int DeviceName, int Frequency)
{
return UIcontrol_Set_SearchLightFrequency(DeviceName, Frequency);
}
/*********
*
* 灯光模式控制
*
**********/
T_JZsdkReturnCode JZsdk_Uart_SearchLight_Control(int DeviceName, int mode)
{
return UIcontrol_SearchLightControl(DeviceName, mode);
}
/*********
*
* 灯光亮度
*
**********/
T_JZsdkReturnCode JZsdk_Uart_SearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen)
{
return UIcontrol_Set_SearchLightLumen(DeviceName, LeftLumen, RightLumen);
}
/*********
*
* 灯光属性查询
*
**********/
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightLightAttribute(int DeviceName, int FrameSequence)
{
//1、查询灯光属性
int Light_Frequency;
int Light_Mode;
int Light_LeftLumen;
int Light_RightLumen;
T_JZsdkReturnCode ret = UIcontrol_CheckStatus_SearchLightLightAttribute(&Light_Frequency, &Light_Mode, &Light_LeftLumen, &Light_RightLumen);
//2、回复灯光属性
JZsdk_Uart_SendDeal_SearchLight_Frequency(DeviceName, Light_Frequency);
JZsdk_Uart_SendDeal_SearchLight_Mode(DeviceName, Light_Mode);
JZsdk_Uart_SendDeal_SearchLight_Lumen(DeviceName,Light_LeftLumen, Light_RightLumen);
}
/*********
*
* 灯光温度查询
*
**********/
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightTemperture(int DeviceName, int FrameSequence)
{
//1、查询灯光温度
int Light_LeftTemperature;
int Light_RightTemperature;
T_JZsdkReturnCode ret = UIcontrol_CheckStatus_SearchLightTemperture(&Light_LeftTemperature, &Light_RightTemperature);
//2、回复灯光温度
JZsdk_Uart_SendDeal_SearchLight_Temperature(DeviceName, Light_LeftTemperature, Light_RightTemperature);
}
/*********
*
* 灯光消息订阅控制
*
**********/
T_JZsdkReturnCode JZsdk_Uart_SearchLight_SubscriptionControl(int DeviceName, int value)
{
if (DeviceName == UART_DEV_2)
{
JZsdk_Uart_SendDeal_MessageSubcription_Control(UART_DEV_1, value);
}
else if (DeviceName == UART_DEV_1)
{
JZsdk_Uart_SendDeal_MessageSubcription_Control(UART_DEV_2, value);
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
*
* 警灯模式控制
*
**********/
T_JZsdkReturnCode JZsdk_Uart_WarningLight_ModeControl(int DeviceName, int status, int mode)
{
return UIcontrol_Set_WarningLight_ModeControl(DeviceName, status, mode);
}
/*********
*
* 警灯颜色控制
*
**********/
T_JZsdkReturnCode JZsdk_Uart_WarningLight_SetColor(int DeviceName, int color1, int color2)
{
return UIcontrol_Set_WarningLight_Color(DeviceName, color1, color2);
}
/*********
*
* 警灯状态查询
*
**********/
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightStatus(int DeviceName, int FrameSequence)
{
//1、查询警灯状态查询
int status;
int Mode;
T_JZsdkReturnCode ret = UIcontrol_CheckStatus_WarningLightStatus(&status, &Mode);
//2、回复警灯状态查询
JZsdk_Uart_SendDeal_WarningLight_Status(DeviceName, status, Mode);
}
/*********
*
* 警灯颜色查询
*
**********/
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightColor(int DeviceName, int FrameSequence)
{
//1、查询灯光温度
int color1;
int color2;
T_JZsdkReturnCode ret = UIcontrol_CheckStatus_WarningLightColor(&color1, &color2);
//2、回复警灯颜色
JZsdk_Uart_SendDeal_WarningLight_Color(DeviceName, color1, color2);
}
/*
*
* 获取本地主设备名
*
*/
int JZsdk_Uart_GetVersionReplay()
{
switch (DEVICE_VERSION)
{
case JZ_H1E:
return 0x11;
break;
case JZ_H150S:
return 0x13;
break;
case JZ_H150T:
return 0x15;
break;
case JZ_H10:
return 0x12;
break;
case JZ_H10T:
return 0x14;
break;
case JZ_H1T:
return 0x16;
break;
case JZ_U3:
return 0x17;
break;
default:
return 0x00;
break;
};
}
/*
*
* 设置工作模式
*
*/
int JZsdk_Uart_SetMainWorkMode(int mode)
{
Main_WorkModeSet(mode);
}
/****************************************************************************************************************************************************
*
* AudioFile 接口部分
*
****************************************************************************************************************************************************/
/*
1、开始传输的音频文件保存
2、存储音频文件中
3、存储音频文件结束
*/
/*********
*
* 1、开始传输的音频文件保存
*
*
**********/
T_JZsdkReturnCode JZsdk_Uart_SaveAudioFileStart(char *FileName)
{
return Megaphone_SaveAudioFileStart(FileName);
}
/*
*
* 2、存储音频文件中
*
*/
int JZsdk_Uart_SaveAudioFileTrans(char *SaveData, int size)
{
Megaphone_SaveAudioFileTrans(SaveData, size);
}
/*
*
* 3、存储音频文件结束
*
*/
int JZsdk_Uart_SaveAudioFileStop()
{
Megaphone_SaveAudioFileStop();
}
/********************************************************************************************************
********* ********|
********* ********|
********* ********|
********* ********|
********* ********|
********* 5B类部分 ********|
********* ********|
********* ********|
********* ********|
********* ********|
********* ********|
*********************************************************************************************************/
/*******************************************************************************************************************************
*
* 灯光部分
*
* *****************************************************************************************************************************/
/*********
*
* 收到灯光频率
*
**********/
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Frequency(int DeviceName, int Frequency)
{
UIcontrol_ObtainSearchLight_Frequency(DeviceName, Frequency);
}
/*********
*
* 收到灯光模式
*
**********/
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Mode(int DeviceName, int mode)
{
UIcontrol_ObtainSearchLight_Mode(DeviceName, mode);
}
/*********
*
* 收到灯光亮度
*
**********/
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen)
{
UIcontrol_ObtainSearchLight_Lumen(DeviceName, LeftLumen, RightLumen);
}
/*********
*
* 收到探照灯温度
*
**********/
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Temperature(int DeviceName, int LeftTemperature, int RightTemperature)
{
UIcontrol_ObtainSearchLight_Temperature(DeviceName, LeftTemperature, RightTemperature);
}
/*******************************************************************************************************************************
*
* 云台部分
*
* *****************************************************************************************************************************/
/*********
*
* 收到云台俯仰
*
**********/
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Pitch(int DeviceName, int pitch)
{
UIcontrol_ObtainGimbal_Pitch(DeviceName, pitch);
}
/*********
*
* 收到云台航向
*
**********/
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Yaw(int DeviceName, int yaw)
{
}
/*********
*
* 收到云台俯仰微调值
*
**********/
T_JZsdkReturnCode JZsdl_Uart_ObtainGimbalPitchFineTuning(int DeviceName, int FrameSequence,int pitch)
{
printf("收到云台俯仰微调值\n");
//2、发送到本地处理
UIcontrol_Obtain_GimbalPitchFineTuninng(DeviceName, pitch);
//3、回复操作成功
JZsdk_Uart_SendDeal_Reply_Sucesss(DeviceName, FrameSequence);
}
/*******************************************************************************************************************************
*
* 警灯部分
*
* *****************************************************************************************************************************/
/*********
*
* 收到警灯状态
*
**********/
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Status(int DeviceName, int status, int mode)
{
UIcontrol_ObtainWarningLight_Status(DeviceName, status, mode);
}
/*********
*
* 收到警灯颜色
*
**********/
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Color(int DeviceName, int color1, int color2)
{
UIcontrol_Set_SearchLightLumen(DeviceName, color1, color2);
}
/*********
*
* 收到产品序列号
*
**********/
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainSerialNumber(int DeviceName, int SerialNumber)
{
}
/********************************************************************************************************
********* ********|
********* ********|
********* ********|
********* ********|
********* ********|
********* 6A类部分 ********|
********* ********|
********* ********|
********* ********|
********* ********|
********* ********|
*********************************************************************************************************/
/*********
*
* 设置云台最大值最小值
*
**********/
T_JZsdkReturnCode JZsdk_Uart_SetGimbalRange(int DeviceName, int value)
{
return UIcontrol_SetGimbalRange(DeviceName, value);
}
/*********
*
* 设置云台联动
*
**********/
T_JZsdkReturnCode JZsdk_Uart_GimbalLinkageControl(int DeviceName, int FrameSequence, int value)
{
//1、设置本地的云台联动
int ret = UIcontrol_Set_GimbalLinkageControl(DeviceName, value);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
JZsdk_Uart_SendDeal_Reply_Sucesss(DeviceName, FrameSequence);
}
else
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
}
}
/*********
*
* 查询云台联动
*
**********/
T_JZsdkReturnCode JZsdk_Uart_Checkstatus_GimbalLinkage(int DeviceName, int FrameSequence)
{
int LinkageValue;
T_JZsdkReturnCode ret = UIcontrol_CheckStatus_GimbalLinkage(&LinkageValue);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(DeviceName, FrameSequence);
}
//成功则发送云台联动值
JZsdk_Uart_SendDeal_GimbalLinkageControl(DeviceName, FrameSequence, LinkageValue);
}
/*
*
* 设置本地从设备名
*
*/
T_JZsdkReturnCode JZsdk_Uart_SetSecondaryDeviceName(int DeviceName)
{
printf("设置本地从设备名%x\n",DeviceName);
SecondaryDeviceName = DeviceName;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*
*
* 获取本地从设备名
*
*/
int JZsdk_Uart_GetSecondaryDeviceName()
{
return SecondaryDeviceName;
}
/********************************************************************************************************
********* ********|
********* ********|
********* ********|
********* ********|
********* ********|
********* 6B类部分 ********|
********* ********|
********* ********|
********* ********|
********* ********|
********* ********|
*********************************************************************************************************/
/**
*
* 查询从设备名
*
*/
int JZsdk_Uart_QuerySecondaryDeviceName(int FrameSequence)
{
//1、发送查询一遍从设备名, 通常位于 串口1
JZsdk_Uart_SendDeal_QuerySecondaryDeviceName(UART_DEV_1, FrameSequence);
}
/*********
*
* 收到云台联动值
*
**********/
T_JZsdkReturnCode JZsdk_Uart_ObtainGimbalLinkage(int DeviceName,int FrameSequence, int value)
{
T_JZsdkReturnCode ret = UIcontrol_Obtain_GimbalLinkage(DeviceName, value);
if (ret == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
//回复操作成功
JZsdk_Uart_SendDeal_Reply_Sucesss(UART_DEV_1, FrameSequence);
}
else
{
//回复操作失败
JZsdk_Uart_SendDeal_Reply_Failure(UART_DEV_1, FrameSequence);
}
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file JZsdk_Uart_Output.h
* JZsdk_Uart_Output的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_UART_OUTPUT_H
#define JZSDK_UART_OUTPUT_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "Uart_Config.h"
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_Uart_Init(int UART_DEV_NAME);
int JZsdk_Get_UartDev_UseFlag(int UART_DEV_NAME);
int JZsdk_Uart_Set_Amplifier(int status);
T_JZsdkReturnCode JZsdk_Uart_Set_Volume(int DeviceName, int value);
T_JZsdkReturnCode JZsdk_Uart_TTS_Play(int DeviceName, char *data ,int len);
T_JZsdkReturnCode JZsdk_Uart_TTS_SetTone(int DeviceName, int tone);
T_JZsdkReturnCode JZsdk_Uart_TTS_SetSpeed(int DeviceName, int speed);
int JZsdk_Uart_Flush_MusicList();
int JZsdk_Uart_get_music_list_sum();
int JZsdk_Uart_get_music_list_name(int num, char *music_name, int *music_name_length);
T_JZsdkReturnCode JZsdk_Uart_PlayMusic(int DeviceName, char *music_name, int datasize);
T_JZsdkReturnCode JZsdk_Uart_audio_PlayContinue(int DeviceName);
T_JZsdkReturnCode JZsdk_Uart_audio_PlayPause(int DeviceName);
T_JZsdkReturnCode JZsdk_Uart_audio_PlayStop(int DeviceName);
T_JZsdkReturnCode JZsdk_Uart_audio_LastSong(int DeviceName);
T_JZsdkReturnCode JZsdk_Uart_audio_NextSong(int DeviceName);
int JZsdk_Uart_CheckStatus_volume();
int JZsdk_Uart_CheckStatus_play();
int JZsdk_Uart_CheckStatus_gimbal();
int JZsdk_Uart_CheckStatus_PlayFileName(char *music_name, int *music_name_len);
int JZsdk_Uart_CheckStatus_SoftwareVersion(char *majorVersion, char *minorVersion, char *modifyVersion, char *debugVersion);
int JZsdk_Uart_CheckStatus_LoopPlay();
int JZsdk_Uart_CheckStatus_TTS_tone();
int JZsdk_Uart_CheckStatus_TTS_speed();
T_JZsdkReturnCode JZsdk_Uart_audio_PlayLoop(int DeviceName, int mode);
T_JZsdkReturnCode JZsdk_Uart_Opus_PlayFixedFile(int DeviceName);
int JZsdk_Uart_SaveOpusStart(int decode_rate);
int JZsdk_Uart_SaveOpusTrans(char *SaveData, int size);
int JZsdk_Uart_SaveOpusStop();
int JZsdk_Uart_GetVersionReplay();
int JZsdk_Uart_SetMainWorkMode(int mode);
//1、开始传输的音频文件保存
T_JZsdkReturnCode JZsdk_Uart_SaveAudioFileStart(char *FileName);
//2、存储opus文件中
int JZsdk_Uart_SaveAudioFileTrans(char *SaveData, int size);
//3、存储opus文件结束
int JZsdk_Uart_SaveAudioFileStop();
int JZsdk_Uart_RealTimeVoiceStart(int decode_rate);
int JZsdk_Uart_RealTimeVoiceTrans(char *data, int length);
int JZsdk_Uart_RealTimeVoiceClose();
//实时MP2语音实时喊话
int JZsdk_Uart_RealTimeMP2_start(int decode_rate);
int JZsdk_Uart_RealTimeMP2_Trans(unsigned char *data, int length);
int JZsdk_Uart_RealTimeMP2_Close();
//云台部分
T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchControl(int DeviceName, int Gimbal_angle);
T_JZsdkReturnCode JZsdk_Uart_SetGimbalRange(int DeviceName, int value);
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_GimbalFineTuning(int DeviceName, int FrameSequence);
T_JZsdkReturnCode JZsdk_Uart_Gimbal_PitchFineTuningControl(int DeviceName, int FrameSequence,int Gimbal_angle);
T_JZsdkReturnCode JZsdl_Uart_ObtainGimbalPitchFineTuning(int DeviceName, int FrameSequence,int pitch);
T_JZsdkReturnCode JZsdk_Uart_GimbalLinkageControl(int DeviceName, int FrameSequence, int value);
T_JZsdkReturnCode JZsdk_Uart_Checkstatus_GimbalLinkage(int DeviceName, int FrameSequence);
T_JZsdkReturnCode JZsdk_Uart_ObtainGimbalLinkage(int DeviceName,int FrameSequence, int value);
//探照灯部分
T_JZsdkReturnCode JZsdk_Uart_Lighting_SetSearchLightFrequency(int DeviceName, int Frequency);
T_JZsdkReturnCode JZsdk_Uart_SearchLight_Control(int DeviceName, int mode);
T_JZsdkReturnCode JZsdk_Uart_SearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen);
T_JZsdkReturnCode JZsdk_Uart_SearchLight_SubscriptionControl(int DeviceName, int value);
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightLightAttribute(int DeviceName, int FrameSequence);
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_SearchLightTemperture(int DeviceName, int FrameSequence);
//警灯部分
T_JZsdkReturnCode JZsdk_Uart_WarningLight_ModeControl(int DeviceName, int status, int mode);
T_JZsdkReturnCode JZsdk_Uart_WarningLight_SetColor(int DeviceName, int color1, int color2);
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightStatus(int DeviceName, int FrameSequence);
T_JZsdkReturnCode JZsdk_Uart_CheckStatus_WarningLightColor(int DeviceName, int FrameSequence);
//5B部分
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Frequency(int DeviceName, int Frequency);
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Mode(int DeviceName, int mode);
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Lumen(int DeviceName, int LeftLumen, int RightLumen);
T_JZsdkReturnCode JZsdl_Uart_ObtainSearchLight_Temperature(int DeviceName, int LeftTemperature, int RightTemperature);
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Pitch(int DeviceName, int pitch);
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainGimbal_Yaw(int DeviceName, int yaw);
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Status(int DeviceName, int status, int mode);
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainWaringlight_Color(int DeviceName, int color1, int color2);
T_JZsdkReturnCode JZsdl_Uart_RecvDeal_ObtainSerialNumber(int DeviceName, int SerialNumber);
//获取本地从设备名
int JZsdk_Uart_GetSecondaryDeviceName();
//设置本地从设备名
T_JZsdkReturnCode JZsdk_Uart_SetSecondaryDeviceName(int DeviceName);
int JZsdk_Uart_QuerySecondaryDeviceName(int FrameSequence);
#ifdef __cplusplus
}
#endif
#endif
... ...
/**
********************************************************************
* @file JZsdk_Uart_RecvDeal.h
* JZsdk_Uart_RecvDeal的头文件
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef JZSDK_UART_RECVDEAL_H
#define JZSDK_UART_RECVDEAL_H
/* Includes ------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
int JZsdk_Uart_RecvDeal_CharmDeal_Uart_4G(unsigned char *getbuf, int len);
int JZsdk_Uart_RecvDeal_CharmDeal_Uart_DEV1(unsigned char *getbuf, int len);
int JZsdk_Uart_RecvDeal_CharmDeal_Uart_DEV2(unsigned char *getbuf, int len);
#ifdef __cplusplus
}
#endif
#endif
... ...