JZsdk_FrameComparsion_5Bframe.c 7.9 KB
#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_0x5A(char *getdata)
{
	//二级功能位
	switch (getdata[8])
	{
		//回复对供电开关状态返回
		case 0x02:
			return JZ_INSCODE_5BFRAME_CHECKSTATUS_OUTPUTPOWER;
		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 0x5A:
            return Comparison_5BFRAME_FirstLevelCode_0x5A(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;
    }
}