📄 video_oper.c
字号:
}
/********************************************************************************************************/
//$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 + -