JZsdk_FrameComparsion_6Aframe.c 2.3 KB
#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;
	}
}



//一级功能码是私有协议
static int Comparison_6AFRAME_FirstLevelCode_0x6F(char *getdata)
{
	//二级功能位
	switch (getdata[8])
	{
		//设置当前为云台零值
		case 0x50:
			return JZ_INSCODE_6AFRAME_CHECKSTATUS_SECONDARY_DEVICE_NAME;
		break;

		//设置当前为云台零值
		case 0x51:
			return JZ_INSCODE_6AFRAME_CHECKSTATUS_GIMBAL_LINKAGE;
		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;

		case 0x6F:
			return Comparison_6AFRAME_FirstLevelCode_0x6F(getdata);
		break;


		default:
			return JZ_ERROR_SYSTEM_FRAME_ERROR;
		break;
    }
}