📄 sub_c.c
字号:
if(k==1) Secter_One=1;
else
{
if( (gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2]>=7)
&&(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2]<=16) )
{
k=0;
for(i=0;i<gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2];i++)
{
if( (gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2+1+i]>'9')
||(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2+1+i]<'0') )
{
if(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2+1+i]=='.');
else
{
k=1;break;
}
}
}
if(k==1) Secter_One=1;
}
}
}
}
else if(Add_Sector==FLASH_INFO2_ONE_2)
{
gON_OFF_Temp2 = gGeneral_Buffer[ON_OFF_V3_2];
if(gON_OFF_Temp2==0xFF);
else Secter_Two=1;
k= gGeneral_Buffer[WATCH_F_2];
if(k==0xFF);
else Secter_Two=1;
k= gGeneral_Buffer[RESET_NUM_2];
if(k==0xFF);
else Secter_Two=1;
nTCP = gGeneral_Buffer[TCP_TIMER_2];
nTCP <<= 8;
nTCP += gGeneral_Buffer[TCP_TIMER_2+1];
if( (nTCP>0)&&(nTCP<0xFFFF) );
else Secter_Two=1;
}
}
else
{
Secter_One=2;
}
/////////////////////////////////////////////////////////////
OperateSPIEnd();ReadOnePageToBuffer2(Add_Sector+1);OperateSPIEnd();
j=ReadByteFromBuffer2(0);
gGeneral_Buffer[0]=j;
for(i=1;i<254;i++)
{
gGeneral_Buffer[i]=ReadNextFromBuffer2();
j+=gGeneral_Buffer[i];
}
gGeneral_Buffer[254]=ReadNextFromBuffer2();
gGeneral_Buffer[255]=ReadNextFromBuffer2();
OperateSPIEnd();
if( ((j/256)==gGeneral_Buffer[254]) && ((j%256)==gGeneral_Buffer[255]) )
{
if(Add_Sector==FLASH_INFO1_ONE_2)
{
if( (gGeneral_Buffer[TARGET_NUMBER1_F_2]>16)
||(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2]>16)
||(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2]<7) )
{
Secter_Two=1;
}
else if(gGeneral_Buffer[TARGET_NUMBER1_F_2]<=16)
{
k=0;
for(i=0;i<gGeneral_Buffer[TARGET_NUMBER1_F_2];i++)
{
if( (gGeneral_Buffer[TARGET_NUMBER1_F_2+i+1]>'9')
||(gGeneral_Buffer[TARGET_NUMBER1_F_2+i+1]<'0') )
{
k=1;break;
}
}
if(k==1) Secter_Two=1;
else
{
if( (gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2]>=7)
&&(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2]<=16) )
{
k=0;
for(i=0;i<gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2];i++)
{
if( (gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2+1+i]>'9')
||(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2+1+i]<'0') )
{
if(gGeneral_Buffer[GPRS_IP_ADDRESS1_F_2+1+i]=='.');
else
{
k=1;break;
}
}
}
if(k==1) Secter_Two=1;
}
}
}
}
else if(Add_Sector==FLASH_INFO2_ONE_2)
{
gON_OFF_Temp2 = gGeneral_Buffer[ON_OFF_V3_2];
if(gON_OFF_Temp2==0xFF);
else Secter_Two=1;
k= gGeneral_Buffer[WATCH_F_2];
if(k==0xFF);
else Secter_Two=1;
k= gGeneral_Buffer[RESET_NUM_2];
if(k==0xFF);
else Secter_Two=1;
nTCP = gGeneral_Buffer[TCP_TIMER_2];
nTCP <<= 8;
nTCP += gGeneral_Buffer[TCP_TIMER_2+1];
if( (nTCP>0)&&(nTCP<0xFFFF) );
else Secter_Two=1;
}
}
else
{
Secter_Two=2;
}
///////////////////////////////////////////////////////////
//显示一下两个数据
Send_COM1_Byte('[');
Send_COM1_Byte(ASCII(Secter_One/10));
Send_COM1_Byte(ASCII(Secter_One%10));
Send_COM1_Byte(':');
Send_COM1_Byte(ASCII(Secter_Two/10));
Send_COM1_Byte(ASCII(Secter_Two%10));
Send_COM1_Byte(']');
if(Secter_One==0)
{
if( (Secter_Two==1)||(Secter_Two==2) )
{
OperateSPIEnd();ReadOnePageToBuffer2(Add_Sector);OperateSPIEnd();
Clear_Exter_WatchDog();
P6OUT|=SPI45DB041_WP;
WriteBuffer2ToPage(Add_Sector+1);
OperateSPIEnd();
P6OUT&=~SPI45DB041_WP;
gTimer=0;while(gTimer<1000){Clear_Exter_WatchDog();}
}
}
else if(Secter_One==2)
{
if( (Secter_Two==0) )
{
OperateSPIEnd();ReadOnePageToBuffer2(Add_Sector+1);OperateSPIEnd();
Clear_Exter_WatchDog();
P6OUT|=SPI45DB041_WP;
WriteBuffer2ToPage(Add_Sector);
OperateSPIEnd();
P6OUT&=~SPI45DB041_WP;
gTimer=0;while(gTimer<1000){Clear_Exter_WatchDog();}
}
else if( (Secter_Two==1)||(Secter_Two==2) )
{
if(Add_Sector==FLASH_INFO1_ONE_2)
{
Read_SegAB(0);
if(gGeneral_Buffer[127]==0xAA)
{
for(i=128;i<254;i++) gGeneral_Buffer[i]=0xFF;
WriteOneByteToBuffer2(0,gGeneral_Buffer[0]);
for(i=1;i<254;i++)
{
WriteNextByteToBuffer2(gGeneral_Buffer[i]);
}
OperateSPIEnd();
RFlash_Sector(FLASH_INFO1_ONE_2);
}
}
else if(Add_Sector==FLASH_INFO2_ONE_2)
{
Read_SegAB(1);
if(gGeneral_Buffer[127]==0xAA)
{
for(i=128;i<254;i++) gGeneral_Buffer[i]=0xFF;
WriteOneByteToBuffer2(0,gGeneral_Buffer[0]);
for(i=1;i<254;i++)
{
WriteNextByteToBuffer2(gGeneral_Buffer[i]);
}
OperateSPIEnd();
RFlash_Sector(FLASH_INFO2_ONE_2);
}
}
}
}
else if(Secter_One==1)
{
if(Secter_Two==0)
{
OperateSPIEnd();ReadOnePageToBuffer2(Add_Sector+1);OperateSPIEnd();
Clear_Exter_WatchDog();
P6OUT|=SPI45DB041_WP;
WriteBuffer2ToPage(Add_Sector);
OperateSPIEnd();
P6OUT&=~SPI45DB041_WP;
gTimer=0;while(gTimer<1000){Clear_Exter_WatchDog();}
}
else if( (Secter_Two==1)||(Secter_Two==2) )
{
if(Add_Sector==FLASH_INFO1_ONE_2)
{
Read_SegAB(0);
if(gGeneral_Buffer[127]==0xAA)
{
for(i=128;i<254;i++) gGeneral_Buffer[i]=0xFF;
WriteOneByteToBuffer2(0,gGeneral_Buffer[0]);
for(i=1;i<254;i++)
{
WriteNextByteToBuffer2(gGeneral_Buffer[i]);
}
OperateSPIEnd();
RFlash_Sector(FLASH_INFO1_ONE_2);
}
}
else if(Add_Sector==FLASH_INFO2_ONE_2)
{
Read_SegAB(1);
if(gGeneral_Buffer[127]==0xAA)
{
for(i=128;i<254;i++) gGeneral_Buffer[i]=0xFF;
WriteOneByteToBuffer2(0,gGeneral_Buffer[0]);
for(i=1;i<254;i++)
{
WriteNextByteToBuffer2(gGeneral_Buffer[i]);
}
OperateSPIEnd();
RFlash_Sector(FLASH_INFO2_ONE_2);
}
}
}
}
if(Secter_One==0)
{
iAddress=Add_Sector;
Sec_Vaild=1;
}
else if(Secter_Two==0)
{
iAddress=Add_Sector+1;
Sec_Vaild=1;
}
else
{
Sec_Vaild=0;
}
if(Sec_Vaild==1)
{
if(Add_Sector==FLASH_INFO1_ONE_2)
{
Read_SegAB(0);
if(gGeneral_Buffer[127]!=0xAA)
{
//OperateSPIEnd();ReadOnePageToBuffer2(iAddress);OperateSPIEnd();
Init_Buffer2();
Deal_Sector(iAddress);
Re430_Flash(0);
Init_Buffer2();
}
}
else if(Add_Sector==FLASH_INFO2_ONE_2)
{
Read_SegAB(1);
if(gGeneral_Buffer[127]!=0xAA)
{
//OperateSPIEnd();ReadOnePageToBuffer2(iAddress);OperateSPIEnd();
Init_Buffer2();
Deal_Sector(iAddress);
Re430_Flash(1);
Init_Buffer2();
}
}
}
}
/********************************************************\
* 函数名:RFlash_Sector()
作用域:外地文件调用
* 功能:
* 参数:
* 返回值:
* 创建人:
*
* 修改历史:(每条详述)
可以用来检查目标号码,短消息中心号码,IP地址的有效性
\********************************************************/
void RFlash_Sector(unsigned int Sector)
{
Page_R_Write_Check(Sector);
gTimer=0;
while(gTimer<1100){Clear_Exter_WatchDog();}
OperateSPIEnd();
P6OUT|=SPI45DB041_WP;
WriteBuffer2ToPage(Sector+1);
P6OUT&=~SPI45DB041_WP;
OperateSPIEnd();
gTimer=0;
while(gTimer<1000){Clear_Exter_WatchDog();}
}
/********************************************************\
* 函数名:Waiting_Allow_Send()
作用域:外地文件调用
* 功能:
* 参数:
* 返回值:
* 创建人:
*
\********************************************************/
void Waiting_Allow_Send(void)
{
gTimer=0;
while(1)
{
Clear_Exter_WatchDog();
if( (gHandle_Receive_Over>20)
&&(gDisp_Receive_Over>20)
&&( (gCommon_Flag&ALLOW_R232_F_1)==0)
&&(gGPS_Receive_Over>20)
&&(gReceive1_Over_Count>20) )
{
break;
}
if( gTimer>500 )
{
break;
}
}
}
/********************************************************\
* 函数名:Do_Par()
作用域:外地文件调用
* 功能:
* 参数:
* 返回值:
* 创建人:
*
\********************************************************/
void Do_Par(void)
{
unsigned int i,j,k;
unsigned char Check_Data=0;
unsigned char cNum1,cNum2,cNum3;
//处理车型,类别,组别,车号
gType = gGeneral_Buffer[1+9];
gKind = gGeneral_Buffer[1+10];
gGroup = gGeneral_Buffer[1+11];
gVID = gGeneral_Buffer[1+12];
gVID <<= 8;
gVID += gGeneral_Buffer[1+13];
//处理目标号码1(存储在buffer1相应的缓冲区,第一个字节存储整个目标号码的长度,不包括长度本身这个字节)
//如果目标号码1带有+,则需要把+号也存储在相应的区域'+'=2B
i=1+14;
while(1)
{
if(gGeneral_Buffer[i]==0x00) break;
i++;
if(i>1+14+15) return;
//这里的15表示目标号码1不会超过15个数
}
//计算这个目标号码1的长度(包括如果前面有'+'的话,也一样要计算在内)
cNum1=i-(1+14);
//如果目标号码1的长度没有超过15,则目标号码有效
if( (i<=1+14+15)&&(cNum1>0) )
{
//计算出此目标号码1的号码长度并写入buffer1中相应的位置
SRAM_Init();
SRAM_Write(TARGET_NUMBER1_2+0,cNum1);
Check_Data=0;
for(j=1+14;j<i;j++)
{
SRAM_Write(TARGET_NUMBER1_2+j-14,gGeneral_Buffer[j]);
Check_Data += gGeneral_Buffer[j];
}
SRAM_Write(TARGET_NUMBER1_CHECK_2,Check_Data);
gGeneral_Flag|=NUM1_VAILD_F_1;
if(gGeneral_Buffer[1+14]=='0')
{
gGeneral_Flag&=~NUM1_VAILD_F_1;
}
}
OperateSPIEnd();
//处理目标号码2(存储在buffer1相应的缓冲区,第一个字节存储整个目标号码的长度)
//程序运行到这里i所表示的意义为gGeneral_Buffer[i]=0x00;
//如果目标号码1带有+,则需要把+号也存储在相应的区域
j=i+1;
while(1)
{
if(gGeneral_Buffer[j]==0x00) break;
j++;if(j>i+1+15) return;
}
cNum2=j-i;
if( (j<=i+1+15)&&(cNum2>0) )
{
}
OperateSPIEnd();
k=j+1;
while(1)
{
if(gGeneral_Buffer[k]==0x00) break;
k++;if(k>j+1+15) return;
}
cNum3=k-j;
if( (k<=j+1+15)&&(cNum3>0) )
{
}
OperateSPIEnd();
//延长一定时间
gTimer=0;Clear_Exter_WatchDog();
while(gTimer<100){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -