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

📄 analyseframe.c

📁 基于嵌入式web服务器的web应用层代码
💻 C
📖 第 1 页 / 共 4 页
字号:
			frame_ready = FRAME_READY;
			break;			
			
		case CMD_READ_PHONE_NUMBER:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;	
			
			
		case CMD_SET_LOOP:
			p_cframe->info_length = 3;
			for (i=0; i<p_cframe->info_length; i++)
			{
				query_string = string + strspos(string, (char *)port_loop_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				sscanf(info_buf[i], "%hd", &p_cframe->frame_info[i]);
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", port_loop_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[i]);		
#endif							
			}
			frame_ready = FRAME_READY;
			break;
		case CMD_READ_LOOP:
			p_cframe->info_length = 2;
			for (i=0; i<p_cframe->info_length; i++)
			{
				query_string = string + strspos(string, (char *)port_loop_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				sscanf(info_buf[i], "%hd", &p_cframe->frame_info[i]);
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", port_loop_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[i]);		
#endif							
			}
			frame_ready = FRAME_READY;
			break;
		case CMD_SET_OPT_SWITCH:
			p_cframe->info_length = 1;
			for (i=0; i<p_cframe->info_length; i++)
			{
				query_string = string + strspos(string, (char *)OPT_switch_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				sscanf(info_buf[i], "%hd", &p_cframe->frame_info[i]);
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", OPT_switch_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[i]);		
#endif							
			}
			frame_ready = FRAME_READY;
			break;
		case CMD_READ_OPT_SWITCH:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;
		case CMD_SET_OPT_ENABLE:
			p_cframe->info_length = 2;
			for (i=0; i<p_cframe->info_length; i++)
			{
				query_string = string + strspos(string, (char *)OPT_enable_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				p_cframe->frame_info[i] = check_frame_info(info_buf[i]);
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", OPT_enable_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[i]);		
#endif							
			}
			frame_ready = FRAME_READY;
			break;
		case CMD_READ_OPT_ENABLE:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;
			
		case CMD_SET_SYSTEM_TIME:
			p_cframe->info_length = 6;
			for (i=0; i<p_cframe->info_length; i++)
			{
				query_string = string + strspos(string, (char *)system_time_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				//sscanf(info_buf[i], "%hd", &p_cframe->frame_info[i]);
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", system_time_table[i], info_buf[i]);
				//printf("<p>hex = %x</p>", p_cframe->frame_info[i]);		
#endif							
			}
			for (i=0; i<4; i++)
				p_cframe->frame_info[idx++] = info_buf[0][i];
			for (i=0; i<2; i++)
				p_cframe->frame_info[idx++] = info_buf[1][i];
			for (i=0; i<2; i++)
				p_cframe->frame_info[idx++] = info_buf[2][i];
			for (i=0; i<2; i++)
				p_cframe->frame_info[idx++] = info_buf[3][i];
			for (i=0; i<2; i++)
				p_cframe->frame_info[idx++] = info_buf[4][i];
			for (i=0; i<2; i++)
				p_cframe->frame_info[idx++] = info_buf[5][i];
			
			p_cframe->info_length = 14;	
#ifdef DEBUG_MODE	
			for (i=0; i<p_cframe->info_length; i++)
				printf("<p>hex = %x</p>", p_cframe->frame_info[i]);
#endif
			frame_ready = FRAME_READY;
			break;						
		case CMD_READ_MCU_VERSION:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;
		case CMD_READ_DEVICE_TYPE:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;			
			
		case CMD_READ_ALARM:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;
		case CMD_SET_ALARM_MASK:
			p_cframe->info_length = 13;
			
			for (i=0; i<3; i++)
			{
				query_string = string + strspos(string, (char *)alarm_mask_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				sscanf(info_buf[i], "%hd", &temp_buf[i]);
#ifdef DEBUG_MODE
				printf("<p>%s is: %s</p>", alarm_mask_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", temp_buf[i]);			
#endif				
			}	
			offset = temp_buf[2] + 1;
			for (i=3; i<p_cframe->info_length; i++)
			{
				if (strspos(string, (char *)alarm_mask_table[i], MAX_QUERY_STRING_LENGTH) == 0xffff)
					continue;	
				query_string = string + strspos(string, (char *)alarm_mask_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				//sscanf(info_buf[i], "%hd", &p_cframe->frame_info[1+tmp_val]);
				sscanf(info_buf[i], "%hd", &idx);
				p_cframe->frame_info[k+offset] = temp_buf[0];			//盘号
				p_cframe->frame_info[k+1+offset] = temp_buf[1];			//端口号
				p_cframe->frame_info[k+2+offset] = web_alarm_id[idx].alarm_id;		//告警序号
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", alarm_mask_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[k+offset]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[k+1+offset]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[k+2+offset]);	
#endif				
				tmp_val++;
				k += 3;
			}
#ifdef DEBUG_MODE	
			printf("<p>length = %d</p>", tmp_val);	
#endif
			if (temp_buf[2] == 0)			//屏蔽
			{
				p_cframe->frame_info[0] = tmp_val;
			}
			else if (temp_buf[2] == 1)	//取消屏蔽
			{
				p_cframe->frame_info[0] = 0;
				p_cframe->frame_info[1] = tmp_val;
			}			
			p_cframe->info_length = offset + (tmp_val*3);
			frame_ready = FRAME_READY;		
			break;
		case CMD_READ_ALARM_MASK:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;
		case CMD_SET_ALARM_LEVEL:
			p_cframe->info_length = 11;
			for (i=0; i<1; i++)
			{
				query_string = string + strspos(string, (char *)alarm_level_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				sscanf(info_buf[i], "%hd", &p_cframe->frame_info[i]);
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", alarm_level_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[i]);		
#endif							
			}
			for (i=1; i<p_cframe->info_length; i++)
			{
				if (strspos(string, (char *)alarm_level_table[i], MAX_QUERY_STRING_LENGTH) == 0xffff)
					continue;	
				query_string = string + strspos(string, (char *)alarm_level_table[i], MAX_QUERY_STRING_LENGTH);
				sscanf(query_string, "%*[^=]=%[^&]", info_buf[i]);
				//sscanf(info_buf[i], "%hd", &p_cframe->frame_info[1+tmp_val]);
				sscanf(info_buf[i], "%hd", &idx);
				p_cframe->frame_info[1+tmp_val] = web_alarm_id[idx].alarm_id;
#ifdef DEBUG_MODE				
				printf("<p>%s is: %s</p>", alarm_level_table[i], info_buf[i]);
				printf("<p>hex = %x</p>", p_cframe->frame_info[1+tmp_val]);	
#endif				
				tmp_val++;
			}
			p_cframe->info_length = 1 + tmp_val;			
			frame_ready = FRAME_READY;
			break;
		case CMD_READ_EVENT:
			p_cframe->info_length = 0;
			frame_ready = FRAME_READY;
			break;	
		
		default:
			break;		
	}	
} 


void analysis_tty_cmd(unsigned char channel)
{
	unsigned char check_sum = 0;
	unsigned int idx = 0;
	unsigned short int i;
	cmd_frame_t *p_cframe = &cmd_frame;		
	info_frame_t *p_iframe = &info_frame;	

	memcpy(&p_cframe->dst_addr, &wait_for_dealed_buf[channel][idx], 3); 
	idx += 3;
	memcpy(&p_cframe->src_addr, &wait_for_dealed_buf[channel][idx], 3); 
	idx += 3;
	p_cframe->net_id = wait_for_dealed_buf[channel][idx++];
	p_cframe->cmd_index = wait_for_dealed_buf[channel][idx++];
	p_cframe->cmd_code_recv = wait_for_dealed_buf[channel][idx++];
	//memcpy(&p_cframe->info_length, &rx_buf[9], 2); 
	p_cframe->info_length = (((unsigned short int)wait_for_dealed_buf[channel][idx]) << 8) | wait_for_dealed_buf[channel][idx+1];			 //接收帧长
	idx += 2;
	memcpy(p_cframe->frame_info, &wait_for_dealed_buf[channel][idx], p_cframe->info_length);
	idx += p_cframe->info_length;
	p_cframe->check_sum = wait_for_dealed_buf[channel][idx++];


	for (idx=6; idx<11+p_cframe->info_length; idx++)			//计算校验字节
		check_sum ^= wait_for_dealed_buf[channel][idx];		
	if (check_sum != p_cframe->check_sum)	
	{
		//reply_normal_frame(Respond_Buf, 1, CMD_UNKNOW);

		//printf("<p>check sum error!\n");
		printf("<p>帧校验错误!\n");
		return;
	}
#ifdef DEBUG_MODE	
	printf("<p>receive frame ok!\n");
	printf("<p>cmd_code_recv is: %x\n", p_cframe->cmd_code_recv);
#endif	

	if ((p_cframe->cmd_code_recv - p_cframe->cmd_code_send) != CMD_ACK_OFFSET)
	{
		//printf("<p>receive cmd error!");
		printf("<p>应答命令错误!");
		return;		
	}	
	
	idx = 11;
	switch (p_cframe->cmd_code_recv)
	{
		case CMD_ACK_SET_DXC_TIMESLOT:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
/*			
			if (p_iframe->success_flag == 0)
				printf("config sucess!\n");
			else
				printf("config failure!\n");
*/								
			display_web_set_result();
			break;			
		case CMD_ACK_READ_DXC_TIMESLOT:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];
			p_iframe->src_board = wait_for_dealed_buf[channel][idx++];
			p_iframe->src_port = wait_for_dealed_buf[channel][idx++];
			p_iframe->src_timeslot = wait_for_dealed_buf[channel][idx++];
			display_web_read_result();
			break;
		case CMD_ACK_SET_V35_WORKMODE:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;
		case CMD_ACK_READ_V35_WORKMODE:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];
			p_iframe->work_mode = wait_for_dealed_buf[channel][idx++];
			display_web_read_result();		
			break;
/*			
		case CMD_ACK_SET_V35_FRAMETYPE:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;
		case CMD_ACK_READ_V35_FRAMETYPE:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];		
			break;
*/			
		case CMD_ACK_SET_V35_TIMESLOT:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;
		case CMD_ACK_READ_V35_TIMESLOT:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];	
			p_iframe->down_timeslot = wait_for_dealed_buf[channel][idx++];
			display_web_read_result();
			break;	
		case CMD_ACK_READ_V35_ATTRIBUTE:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];
			for (i=0; i<4; i++)
			{
				p_iframe->board_main_clk[i] = wait_for_dealed_buf[channel][idx++];	
				p_iframe->board_work_mode[i] = wait_for_dealed_buf[channel][idx++];	
				p_iframe->board_work_rxp[i] = wait_for_dealed_buf[channel][idx++];	
				p_iframe->board_work_txp[i] = wait_for_dealed_buf[channel][idx++];	
				p_iframe->board_work_clk[i] = wait_for_dealed_buf[channel][idx++];
				p_iframe->board_down_timeslot[i] = wait_for_dealed_buf[channel][idx++];	
			}
			display_web_read_result();
			break;	
		case CMD_ACK_SET_CLOCK_PRIO:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;	
		case CMD_ACK_READ_CLOCK_PRIO:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];	
			for (i=0; i<10; i++)
				p_iframe->clock_prio[i] = wait_for_dealed_buf[channel][idx++];
			display_web_read_result();
			break;	
		case CMD_ACK_READ_WORK_CLOCK:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];
			p_iframe->work_clk = wait_for_dealed_buf[channel][idx++];		
			p_iframe->work_clk_state = wait_for_dealed_buf[channel][idx++];	
			display_web_read_result();
			break;
		case CMD_ACK_READ_CLOCK_INFO:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];
			for (i=0; i<10; i++)
				p_iframe->clock_prio[i] = wait_for_dealed_buf[channel][idx++];
			p_iframe->work_clk = wait_for_dealed_buf[channel][idx++];		
			p_iframe->work_clk_state = wait_for_dealed_buf[channel][idx++];	
			display_web_read_result();
			break;
		case CMD_ACK_SET_FE_UP_BAND:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;	
		case CMD_ACK_READ_FE_UP_BAND:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];
			p_iframe->up_band = wait_for_dealed_buf[channel][idx++];
			display_web_read_result();
			break;
		case CMD_ACK_SET_FE_PORT_BAND:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;	
		case CMD_ACK_READ_FE_PORT_BAND:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];
			p_iframe->port_band = wait_for_dealed_buf[channel][idx++];
			display_web_read_result();
			break;	
		case CMD_ACK_SET_VLAN_MODE:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;	
		case CMD_ACK_READ_VLAN_MODE:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];	
			p_iframe->vlan_mode = wait_for_dealed_buf[channel][idx++];
			display_web_read_result();	
			break;
		case CMD_ACK_SET_VLAN_GROUP:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];			
			display_web_set_result();
			break;	
		case CMD_ACK_READ_VLAN_GROUP:
			p_iframe->success_flag = wait_for_dealed_buf[channel][idx++];	

⌨️ 快捷键说明

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