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

📄 video_oper.c

📁 在LPC2132的ARM处理器上
💻 C
📖 第 1 页 / 共 3 页
字号:
}

/********************************************************************************************************/
//$GPGSV,2,1,06,22,78,237,22,14,53,313,,18,47,155,42,12,44,085,36*71
/********************************************************************************************************/
uint8	Get_GPGSV_Data(GPS_DATA *gps_data)
{
	uint8 i, value;
	
	for (i = 0x00; i < 0x05; i++){
		do
		{
			value = UART1Getch();
		}
		while(value != ',');	
	}
	
	for (i = 0x00; i < 5; i++){
		 
		value = UART1Getch();
		if (value == ',')
			break; 
		gps_data -> Angle_Buf[i] = value;
	}
	if (value == 5)
		return ERROR;
		
	gps_data -> Angle_Size = i;	
	
	return SUCCESS;
}

/********************************************************************************************************/
//$GPVTG,301.04,T,,M,4.82,N,8.92,K,A*36
/********************************************************************************************************/
uint8	Get_GPVTG_Data(GPS_DATA *gps_data)
{
	uint8 i, value;
	
	for (i = 0x00; i < 0x05; i++){
		do
		{
			value = UART1Getch();
		}
		while(value != ',');	
	}
	
	if ((UART1Getch() != 'N')
		|| (UART1Getch() != ','))
		return ERROR;
		
	for (i = 0x00; i < 9; i++){
		 
		value = UART1Getch();
		if (value == ',')
			break; 
		gps_data -> Velocity_Buf[i] = value;
	}
	if (value == 9)
		return ERROR;
		
	gps_data -> Velocity_Size = i;	
	
	return SUCCESS;
}

/********************************************************************************************************/
uint8  Get_GPS_Info(GPS_DATA *gps_data)
{
	uint8 rev_value;
	
	if((UART1Getch() == '$') && (UART1Getch() == 'G') && (UART1Getch() == 'P')){
	
		rev_value = UART1Getch();
		switch(rev_value)
		{
			case 'R':                         				      
                if((UART1Getch() == 'M') 
                	&& (UART1Getch() == 'C') 
                	&& (UART1Getch() == ',')) 
                	return	Get_GPRMC_Data(gps_data);               
                break;
                
            case 'G':                         				      
                if((UART1Getch() == 'S') 
                	&& (UART1Getch() == 'V') 
                	&& (UART1Getch() == ','))
                	return	Get_GPGSV_Data(gps_data);               
                break;
                
            case 'V':                         				      
                if((UART1Getch() == 'T') 
                	&& (UART1Getch() == 'G') 
                	&& (UART1Getch() == ','))
	              	return	Get_GPVTG_Data(gps_data);
                break;
                
            default:
                break;
		}//switch(rev_value)  
	
	}//if((UART2Getch() == '$') && (UART2Getch() == 'G') && (UART2Getch() == 'P'))
	
	return ERROR;
}

/********************************************************************************************************/
uint8	Get_Config_Info(uint8 *data_p)
{
	uint8 value, offset, i;
	
	offset = 12;
	
	Flash_Index_Data.mode_type = *(data_p + offset++);
	
	value = *(data_p + offset++);
	if (value != ',')
		return ERROR;
		
	Flash_Index_Data.dev_code[0] = *(data_p + offset++);
	Flash_Index_Data.dev_code[1] = *(data_p + offset++);
	Flash_Index_Data.dev_code[2] = *(data_p + offset++);
	Flash_Index_Data.dev_code[3] = *(data_p + offset++);
	Flash_Index_Data.dev_code[4] = *(data_p + offset++);
	Flash_Index_Data.dev_code[5] = *(data_p + offset++);
	
	value = *(data_p + offset++);
	if (value != ',')
		return ERROR;
		
	Flash_Index_Data.local_tel_num[0] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[1] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[2] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[3] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[4] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[5] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[6] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[7] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[8] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[9] = *(data_p + offset++);
	Flash_Index_Data.local_tel_num[10] = *(data_p + offset++);
	
	value = *(data_p + offset++);
	if (value != ',')
		return ERROR;
	
	Flash_Index_Data.tag_num[0] = *(data_p + offset++);	
	Flash_Index_Data.tag_num[1] = *(data_p + offset++);	
	Flash_Index_Data.tag_num[2] = *(data_p + offset++);	
	Flash_Index_Data.tag_num[3] = *(data_p + offset++);	
	Flash_Index_Data.tag_num[4] = *(data_p + offset++);	
	Flash_Index_Data.tag_num[5] = *(data_p + offset++);	
	Flash_Index_Data.tag_num[6] = *(data_p + offset++);	
	Flash_Index_Data.tag_num[7] = *(data_p + offset++);	
	
	value = *(data_p + offset++);
	if (value != ',')
		return ERROR;
		
	Flash_Index_Data.sms_tel_num[0] = *(data_p + offset++);	
	Flash_Index_Data.sms_tel_num[1] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[2] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[3] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[4] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[5] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[6] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[7] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[8] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[9] = *(data_p + offset++);
	Flash_Index_Data.sms_tel_num[10] = *(data_p + offset++);
	
	value = *(data_p + offset++);
	if (value != ',')
		return ERROR;
		
	i = 0x00;
	value = *(data_p + offset++);
	while((value != ',') && (i < 11)){
	
		Flash_Index_Data.alarm_tel_num[i++] = value;	
		value = *(data_p + offset++);
	}
	
	if (i > 11)
		return ERROR;
	
	Flash_Index_Data.alarm_tel_size = i;
			
	i = 0x00;
	value = *(data_p + offset++);
	while((value != ',') && (i < 24)){
	
		Flash_Index_Data.net_config[i++] = value;	
		value = *(data_p + offset++);
	}
	
	if (i > 24)
		return ERROR;
		
	Flash_Index_Data.net_config_size = i;
		
	return SUCCESS;

}

/********************************************************************************************************/
void	Save_Config_Data(void)
{
	
	WriteEEROM((uint8 *)(&Flash_Index_Data), 0x00, sizeof(FLASH_INDEX));
	
	UART3Putch('S');
	UART3Putch('U');
	UART3Putch('C');
	UART3Putch('C');
	UART3Putch('E');
	UART3Putch('S');
	UART3Putch('S');
	UART3Putch(0x0d);
	UART3Putch(0x0a);	
}

/********************************************************************************************************/
uint8	Send_Call_Order(void)
{
	uint8	*value, i, err, check_code = 0x00;
	
	EchoMbox -> OSEventPtr = 0x00;
	
	value = (uint8 *)OSMboxPend(EchoMbox, (OS_TICKS_PER_SEC * 15), &err);
	
	if ((err != OS_NO_ERR) || (*value != UNLOGIN_OK_CODE))
		return ERROR;

/////////////////////////////////////////////////////////////////////////////////		
	for (i = 0x00; i < 9; i++)
		check_code ^= Start_Code[i];
	
	check_code ^= CALL_CODE;
	
	check_code ^= Flash_Index_Data.alarm_tel_size;
	
	check_code ^= 0x00;
	
	for (i = 0x00; i < Flash_Index_Data.alarm_tel_size; i++)
		check_code ^= Flash_Index_Data.alarm_tel_num[i];
		
	OSSemPend(Uart0_Sem, 0, &err);	
		
	UART0Write((uint8 *)Start_Code, 9);		//引导码 9 bytes
	UART0Putch(CALL_CODE);					//命令码 1 byte   0xa2 表示呼叫数据包
	UART0Putch(Flash_Index_Data.alarm_tel_size);	//2字节长度,低位	
	UART0Putch(0x00);				//2字节长度,高位
	
	UART0Write((uint8 *)(Flash_Index_Data.alarm_tel_num[0]), Flash_Index_Data.alarm_tel_size);
	
	UART0Putch(check_code);
	
	OSTimeDly (OS_TICKS_PER_SEC);		//延时1秒
			
	OSSemPost(Uart0_Sem);
	
/////////////////////////////////////////////////////////////////////////////////		
	EchoMbox -> OSEventPtr = 0x00;
	
	value = (uint8 *)OSMboxPend(EchoMbox, (OS_TICKS_PER_SEC * 10), &err);
		
	if (err != OS_NO_ERR) 
		return ERROR;
		
	if (*value == 0x00)		//为0表示建立通话失败
		return ERROR;
	
	Play_Voice_Oper();

/////////////////////////////////////////////////////////////////////////////////		
	check_code = 0x00;
	
	for (i = 0x00; i < 9; i++)
		check_code ^= Start_Code[i];
	
	check_code ^= SMS_CODE;
	
	check_code ^= 11;
	
	check_code ^= 0x00;
	
	for (i = 0x00; i < 11; i++)
		check_code ^= Flash_Index_Data.sms_tel_num[i];
		
	OSSemPend(Uart0_Sem, 0, &err);	
		
	UART0Write((uint8 *)Start_Code, 9);		//引导码 9 bytes
	UART0Putch(SMS_CODE);					//命令码 1 byte   0xa7 表示短信数据包
	UART0Putch(11);							//2字节长度,低位	
	UART0Putch(0x00);						//2字节长度,高位
	
	UART0Write((uint8 *)(Flash_Index_Data.sms_tel_num[0]), 11);
	
	UART0Putch(check_code);
	
	OSTimeDly (OS_TICKS_PER_SEC);		//延时1秒
			
	OSSemPost(Uart0_Sem);
	
/////////////////////////////////////////////////////////////////////////////////
	for (i = 0x00; i < 128; i++){
		
		Send_GPS_Order();
		OSTimeDly (OS_TICKS_PER_SEC * 60);		//延时1分钟
	}
	
	return SUCCESS;
}

/********************************************************************************************************/
uint8	Play_Voice_Oper(void)
{
	uint8 	err, temp;
	uint16 	*value;
	
	Read_Flash_Page((uint8 *)(&Voice_Buf[0]), 0x0000);
	Read_Flash_Page((uint8 *)(&Voice_Buf[1]), 0x0001);
	
	voice_page_count = 0x0002;
    voice_index = 0x00;
    pack_count = 0x00;
	Voice_Status = 0x02;
	
	VoiceMbox -> OSEventPtr = 0x00;
	
	while(1)
	{
		value = (uint16 *)OSMboxPend(VoiceMbox, 0, &err);
		if (err != OS_NO_ERR){
			Voice_Status = 0x00;
			return ERROR;
		}
				
		temp = voice_index ^ 0x01;
		Read_Flash_Page((uint8 *)(&Voice_Buf[temp]), (*value - 1));
		
		if (*value == 1024){
			Voice_Status = 0x00;
			return SUCCESS;
		}	
		
	}// while(1)
	
}

/********************************************************************************************************/
uint8	Get_Voice_Data(void)
{
	uint8 	err, temp;
	uint16 	*value;
	
	voice_page_count = 0x0000;
    voice_index = 0x00;
    pack_count = 0x00;
	Voice_Status = 0x01;
	
	VoiceMbox -> OSEventPtr = 0x00;
	
	while(1)
	{
		value = (uint16 *)OSMboxPend(VoiceMbox, 0, &err);
		if (err != OS_NO_ERR){
			Voice_Status = 0x00;
			return ERROR;
		}
				
		temp = voice_index ^ 0x01;
		Write_Flash_Page((uint8 *)(&Voice_Buf[temp]), (*value - 1));
		
		if (*value == 1024){
			Voice_Status = 0x00;
			return SUCCESS;
		}	
		
	}// while(1)

}

/********************************************************************************************************/



		




	

⌨️ 快捷键说明

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