TA的每日心情 | 开心 2024-1-4 09:46 |
---|
签到天数: 2 天 [LV.1]初来乍到
中级会员
- 积分
- 236
|
void Updata_data()
{
u8 *pbuf;
u32 tchar;
u16 m=0,n=0; u8 temchar=0;
static u8 Hchar=0,Lchar=0; //临时字高位 //临时字低位
static bit Saveflag=0; // 存储标志
static bit B_lag=0; // 标志
ET0=0;
BeatTimescnt=0; //收到指令,将心跳时间复位
RestTimes=0;
StorageArray(&IAP_num[0],&RX1_Buff[0],15); //转化提取升级包序号
IAPnum=(u8)atoi(IAP_num);
pbuf=&RX1_Buff[0]; //接收指令转赋值
for(n=0;n<RX1_MAX;n++)
{
temchar=*(pbuf+n);
if(temchar=='\"') //判断“号的数量,
m++;
if(m==19&&temchar!='\"') //提取数据包数据,存入EEPARM中
{
if(Saveflag==0)
{
Saveflag=1; //数据保存标志取反
if(temchar>='0'&&temchar<='9'){ Hchar=temchar-0x30;} //如果接收到的是数字, 转化16进制高位
else{ Hchar=temchar-87;} //如果接收到的是字母, 转化16进制高位
}
else
{
Saveflag=0; //数据保存标志取反
if(temchar>='0'&&temchar<='9'){ Lchar=temchar-0x30;} //如果接收到的是数字, 转化16进制高位
else{ Lchar=temchar-87;} //如果接收到的是字母, 转化16进制高位
temchar=(Hchar<<4|Lchar); //高低四位合并
if(IAP_cnt<0x0200)
{
Buftem[IAP_cnt]=temchar;
//if(IAP_cnt==0||IAP_cnt==0x200-1) {printf("(%d)=0x%02X *** ",IAP_cnt,temchar);delay_ms(5);}
} //中断向量表临时保存
else {
B_lag=1;
do{
IapProgram(IAP_cnt, temchar); //写入实际数据内存地址
if(IapRead(IAP_cnt)==temchar){B_lag=0;}
}while(B_lag);
}
IAP_cnt++;
tchar=(u32)temchar;
IAP_ChecksumAcc= tchar+IAP_ChecksumAcc;
delay_ms(1);
if(IAP_cnt==IAPLen)
{
printf("data_len=%d****\r",IAP_cnt);
printf("data_ACC=%ld****\r",IAP_ChecksumAcc);
}
if(IAP_cnt==IAPLen&&IAP_ChecksumAcc==IAPChecksum) //写入长度和校验和都相同
{
printf("data_len=%d****\r",IAP_cnt);
printf("data_ACC=%ld****\r",IAP_ChecksumAcc);
for(m=0;m<0x0200;m++)
{
B_lag=1;
do{
IapProgram(IAPadd+m, Buftem[m]); //最后写入中断向量文件,防止断电时无法回到基础版
//if(m%0x10==0) {printf("Buftem[%d]=0x%02X - \r",m,Buftem[m]); }
if(Buftem[m]==IapRead(IAPadd+m))
{
B_lag=0;
//if(m%0x10==0)printf("IapRead[%d]=0x%02X - \r",m,Buftem[m]);
}
}while(B_lag);
}
printf("\r\n***********The driver upgrade is successful!*************\r\n");
IAP_CONTR |= 0x60;
}
}
}
}
ET0=1;
// printf("data_ACC=%ld****\r",IAP_ChecksumAcc);
// printf("data_len=%d****\r",IAP_cnt);
// delay_ms(200);
printf("{\"com\":\"update\",\"did\":\"%s\",\"res\":\"1\",\"softid\":\"%s\",\"num\":\"%bd\"}",AT_SIMID,&IAP_softid[0],IAPnum+1);
}
|
-
|