⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 standard.c

📁 本人写的linux下云台控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:
			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		tp->out[4] = 99;		break;	case ACTION_DEL_CRUISE_POINT:		tp->out[2] = 0x82;		if(buf <= 7)			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		if((tp->user_input.param2[0]) && (buf2 <= 80))			tp->out[4] = buf2;		else			return INVALID_ARGUMENT;		break;	case ACTION_DEL_ALL_CRUISE_POINT:		tp->out[2] = 0x82;		if(buf <= 7)			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		tp->out[4] = 81;		break;	}	public_out(tp);	return 0;}//4. scanint scan_func(struct TDVSSS_protocol* tp){	unsigned short buf  = tp->user_input.param1[1];	unsigned short buf2 = tp->user_input.param2[1];		if((tp->user_input.cmd_id) != ACTION_START_RANDOM_SCAN && !(tp->user_input.param1[0]))		return INVALID_ARGUMENT;	tp->continuous = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_SET_LINE_SCAN_BORDER:		tp->out[2] = 0x81;		tp->out[4] = 0;		if(IS_BETWEEN(buf,81,90))			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		break;	case ACTION_SET_LINE_SCAN_SPEED:		tp->out[2] = 0x81;		if(IS_BETWEEN(buf,3,255))			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		if((tp->user_input.param2[0]) && IS_BETWEEN(buf2,1,5))			tp->out[4] = 90 + buf2;		else			return INVALID_ARGUMENT;		break;	case ACTION_START_AUTO_SCAN:		tp->out[2] = 0x83;		tp->out[3] = 0;		if(IS_BETWEEN(buf,1,5))			tp->out[4] = 90 + buf;		else			return INVALID_ARGUMENT;		break;	case ACTION_START_RANDOM_SCAN:		tp->out[2] = 0x83;		tp->out[3] = 0;		tp->out[4] = 96;		break;	case ACTION_SET_VARIETY_SCAN_SPEED:		tp->out[2] = 0x81;		tp->out[4] = 97;		if(IS_BETWEEN(buf,3,255))			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		break;	case ACTION_START_VARIETY_SCAN:		tp->out[2] = 0x83;		tp->out[4] = 97;		if(buf <= 100)			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		break;	}	public_out(tp);		return 0;}//5. patternint pattern_func(struct TDVSSS_protocol* tp){	unsigned short buf;		if(!(tp->user_input.param1[0]))		return INVALID_ARGUMENT;	tp->continuous = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_SET_PATTERN_START:		tp->out[4] = 1;		break;	case ACTION_SET_PATTERN_END:		tp->out[4] = 2;		break;	case ACTION_START_PATTERN:		tp->out[4] = 0;		break;	}	tp->out[2] = 0x85;	buf = tp->user_input.param1[1];	if(buf <= 4)		tp->out[3] = buf;	else		return INVALID_ARGUMENT;		public_out(tp);	return 0;}//6. whirlint whirl_func(struct TDVSSS_protocol* tp){	unsigned short buf = tp->user_input.param1[1];	if(!(tp->user_input.param1[0]))		return INVALID_ARGUMENT;	tp->continuous = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_SET_WHIRL_SPEED:		tp->out[2] = 0x81;		tp->out[4] = 98;		if(IS_BETWEEN(buf,3,255))			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		break;	case ACTION_START_WHIRL:		tp->out[2] = 0x83;		tp->out[4] = 98;		if(buf <= 1)			tp->out[3] = buf;		else			return INVALID_ARGUMENT;		break;	}	public_out(tp);	return 0;}//assist switchint assist_switch_func(struct TDVSSS_protocol* tp){	unsigned short buf  = tp->user_input.param1[1];	unsigned short buf2 = tp->user_input.param2[1];	if(!(tp->user_input.param1[0]) || !(tp->user_input.param2[0])) 		return INVALID_ARGUMENT;	tp->continuous = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_ASSIST_SWITCH_ON:		tp->out[2] = 0x87;		break;	case ACTION_ASSIST_SWITCH_OFF:		break;		tp->out[2] = 0x88;	}	if((buf <= 1) && IS_BETWEEN(buf2,1,44))	{		tp->out[3] = buf;		tp->out[4] = buf2;	}	else		return INVALID_ARGUMENT;	public_out(tp);	return 0;}int alarm_func(struct TDVSSS_protocol* tp){	unsigned short buf  = tp->user_input.param1[1];	unsigned short buf2 = tp->user_input.param2[1];	tp->continuous = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_ALARM_SET:		if(!(tp->user_input.param1[0]) || !(tp->user_input.param2[0])) 			return INVALID_ARGUMENT;		tp->out[2] = 0x8c;		if(IS_BETWEEN(buf,1,15))		{				tp->out[3] &= 0x0f;			tp->out[3] |= ((buf<<4) & 0xf0);		}		else			return INVALID_ARGUMENT;		if(buf2 <= 4095)		{			tp->out[4] = buf2 & 0xff;			tp->out[3] &= 0xf0;			tp->out[3] |= ((buf2 >> 8) & 0x0f);				}		else			return INVALID_ARGUMENT;		break;	case ACTION_ALARM:		if(!(tp->user_input.param1[0]) || buf > 4095) 			return INVALID_ARGUMENT;		tp->out[2] = 0x8c;		tp->out[4] = buf & 0xff;		tp->out[3] = 0;		tp->out[3] |= ((buf >> 8) & 0x0f);				break;	case ACTION_ALARM_RESET:		tp->out[2] = 0x8d;		tp->out[3] = 0;		tp->out[4] = 2;		break;	}	public_out(tp);	return 0;}//status funcint status_func(struct TDVSSS_protocol* tp){	tp->response = 1;	tp->continuous = 0;	//other code ......	public_out(tp);	return 0;}//privacy cover funcint privacy_cover_func(struct TDVSSS_protocol* tp){	unsigned short buf  = tp->user_input.param1[1];	unsigned short buf2;		if(!(tp->user_input.param1[0]) || buf > 31)		return INVALID_ARGUMENT;	tp->continuous = 0;	tp->out[2] = 0x86;	tp->out[4] = 0;	tp->out[4] |= buf; 	switch (tp->user_input.cmd_id)	{	case ACTION_PRIVACY_SET_START:		tp->out[3] = 1;		break;	case ACTION_PRIVACY_OK_ENABLE:		tp->out[3] = 2;		break;	case ACTION_PRIVACY_DISABLE:		tp->out[3] = 0;		break;	case ACTION_PRIVACY_SET_COBOUNDARY:		buf2 = tp->user_input.param2[1];		if(!(tp->user_input.param2[0]))			return INVALID_ARGUMENT;		tp->out[3] = buf2;		tp->out[4] |= 0x20;		break;	case ACTION_PRIVACY_SET_LOWERBOUND:		buf2 = tp->user_input.param2[1];		if(!(tp->user_input.param2[0]))			return INVALID_ARGUMENT;		tp->out[3] = buf2;		tp->out[4] |= 0x40;		break;	case ACTION_PRIVACY_SET_LEFTMARGIN:		buf2 = tp->user_input.param2[1];		if(!(tp->user_input.param2[0]))			return INVALID_ARGUMENT;		tp->out[3] = buf2;		tp->out[4] |= 0x60;		break;	case ACTION_PRIVACY_SET_RIGHTMARGIN:		buf2 = tp->user_input.param2[1];		if(!(tp->user_input.param2[0]))			return INVALID_ARGUMENT;		tp->out[3] = buf2;		tp->out[4] |= 0x80;		break;	case ACTION_PRIVACY_COARSEN:		tp->out[3] = 0x01;		tp->out[4] |= 0x90;		break;	case ACTION_PRIVACY_ATTENUAT:		tp->out[3] = 0x02;		tp->out[4] |= 0x90;		break;	case ACTION_PRIVACY_WIDEN:		tp->out[3] = 0x04;		tp->out[4] |= 0x90;		break;	case ACTION_PRIVACY_NARROW:		tp->out[3] = 0x08;		tp->out[4] |= 0x90;		break;	case ACTION_PRIVACY_MOVE_UP:		tp->out[3] = 0x10;		tp->out[4] |= 0x90;		break;	case ACTION_PRIVACY_MOVE_DOWN:		tp->out[3] = 0x20;		tp->out[4] |= 0x90;		break;	case ACTION_PRIVACY_MOVE_LEFT:		tp->out[3] = 0x40;		tp->out[4] |= 0x90;		break;	case ACTION_PRIVACY_MOVE_RIGHT:		tp->out[3] = 0x80;		tp->out[4] |= 0x90;		break;	}	public_out(tp);	return 0;}//camera menu funcint camera_menu_func(struct TDVSSS_protocol* tp){	tp->continuous = 0;	tp->out[2] = 0x89;	tp->out[4] = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_OPEN_MENU:		tp->out[3] = 0x01;		break;	case ACTION_CLOSE_MENU:		tp->out[3] = 0x00;		break;	case ACTION_FATHER_MENU:		tp->out[3] = 0x02;		break;	case ACTION_CHILD_MENU:		tp->out[3] = 0x03;		break;	case ACTION_UPWORD_MENU:		tp->out[3] = 0x04;		break;	case ACTION_DOWNWORD_MENU:		tp->out[3] = 0x05;		break;	case ACTION_LEFTWORD_MENU:		tp->out[3] = 0x06;		break;	case ACTION_RIGHTWORD_MENU:		tp->out[3] = 0x07;		break;	case ACTION_OK_MENU:		tp->out[3] = 0x08;		break;	}	public_out(tp);	return 0;}//char set funcint char_func(struct TDVSSS_protocol* tp){	unsigned short buf  = tp->user_input.param1[1];	unsigned short buf2 = tp->user_input.param2[1];	if(!(tp->user_input.param1[0]))		return INVALID_ARGUMENT;		tp->continuous = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_SET_CHAR_POSITION:		if(!(tp->user_input.param2[0]))			return INVALID_ARGUMENT;		if(buf <=255 && buf2 <= 255)		{			tp->out[2] = 0x8a;			tp->out[3] = buf;			tp->out[4] = buf2;		}		else			return INVALID_ARGUMENT;		break;	case ACTION_SET_CHAR:		tp->out[2] = 0x8b;		tp->out[4] = buf & 0xff;		tp->out[3] = buf >> 8;		break;	}	public_out(tp);	return 0;}//other funcint other_func(struct TDVSSS_protocol* tp){	unsigned short buf;	tp->continuous = 0;	switch (tp->user_input.cmd_id)	{	case ACTION_RESET:		tp->out[2] = 0x8d;		tp->out[3] = 0;		tp->out[4] = 1;		break;	case ACTION_ORIGINAL_SET:		tp->out[2] = 0x8d;		tp->out[3] = 0;		tp->out[4] = 0;		break;	case ACTION_MIN_FOCUS_DIST:		if(!(tp->user_input.param1[0]))			return INVALID_ARGUMENT;		tp->out[2] = 0x90;		buf = tp->user_input.param1[1];		tp->out[4] = buf & 0xff;		tp->out[3] = buf >> 8;		break;	}	public_out(tp);	return 0;}/*void response(int sig){	if((sig != SIGRESP) || (g_tp == NULL))		return;	fprintf(stderr,"response...\n");		g_tp->response = 0;	return;}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -