|
@@ -81,22 +81,12 @@ void Database_Push(uint8_t object)
|
|
|
{
|
|
|
if(object==0)//位置信息写入
|
|
|
{
|
|
|
- if(dblocptr->headinfo.loc_pushIndex==0)//判断是否初次写入
|
|
|
- {
|
|
|
- printf("1\r\n");
|
|
|
- PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart,17);//34
|
|
|
- if(PushSta==HAL_OK)
|
|
|
- {
|
|
|
- printf("区头开始写入\r\n");
|
|
|
- }
|
|
|
- dblocptr->headinfo.loc_pushIndex+=1; //入库索引
|
|
|
- dblocptr->headinfo.loc_Conter+=1; //入库总计数
|
|
|
- Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//向dblocptr->headinfo写入6*2个字节
|
|
|
- }
|
|
|
+ printf("@1->%d\r\n",dblocptr->headinfo.loc_pushIndex);
|
|
|
+
|
|
|
#if timingPush==1
|
|
|
- if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>0)//速度大于10km/h入库(100)
|
|
|
+ if(dblocptr->headinfo.loc_pushIndex!=0 && dblocptr->location.speed>100)//速度大于10km/h入库(100)
|
|
|
#else
|
|
|
- if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>10)//速度大于10km/h入库
|
|
|
+ if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>100)//速度大于10km/h入库
|
|
|
#endif
|
|
|
{
|
|
|
printf("2\r\n");
|
|
@@ -106,9 +96,21 @@ void Database_Push(uint8_t object)
|
|
|
Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//更新刻度
|
|
|
|
|
|
}
|
|
|
+ else if(dblocptr->headinfo.loc_pushIndex==0)//判断是否初次写入
|
|
|
+ {
|
|
|
+ printf("3\r\n");
|
|
|
+ PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart,17);//34
|
|
|
+ if(PushSta==HAL_OK)
|
|
|
+ {
|
|
|
+ printf("区头开始写入\r\n");
|
|
|
+ }
|
|
|
+ dblocptr->headinfo.loc_pushIndex+=1; //入库索引
|
|
|
+ dblocptr->headinfo.loc_Conter+=1; //入库总计数
|
|
|
+ Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//向dblocptr->headinfo写入6*2个字节
|
|
|
+ }
|
|
|
else if(timecount==4)//20min最少一条
|
|
|
{
|
|
|
- printf("3\r\n");
|
|
|
+ printf("4\r\n");
|
|
|
timecount=0;
|
|
|
PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart + (dblocptr->headinfo.loc_pushIndex*34),17);
|
|
|
dblocptr->headinfo.loc_pushIndex+=1;
|
|
@@ -117,14 +119,14 @@ void Database_Push(uint8_t object)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- printf("4\r\n");
|
|
|
+ printf("5\r\n");
|
|
|
printf("未获取定位信息\r\n");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pushSize)//入库达边界值
|
|
|
{
|
|
|
- printf("5\r\n");
|
|
|
+ printf("6\r\n");
|
|
|
Overwrite_loc=true;
|
|
|
dblocptr->headinfo.loc_pushIndex=0;
|
|
|
printf("@@入库操作,当前索引%d,达边界值返回覆写----%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_Conter);
|
|
@@ -132,7 +134,7 @@ void Database_Push(uint8_t object)
|
|
|
}
|
|
|
if(dblocptr->headinfo.loc_pushIndex>0)
|
|
|
{
|
|
|
- printf("6\r\n");
|
|
|
+ printf("7\r\n");
|
|
|
printf("写入%d完成,准备写入->%d\r\n",dblocptr->headinfo.loc_pushIndex-1,dblocptr->headinfo.loc_pushIndex);
|
|
|
}
|
|
|
}
|
|
@@ -153,26 +155,20 @@ void Database_Pull(uint8_t object)
|
|
|
|
|
|
printf("3\r\n");
|
|
|
printf("库内已被覆写\r\n");
|
|
|
- if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pullSize)//到达界限
|
|
|
+ if(dblocptr->headinfo.loc_pullIndex==0 && dblocptr->headinfo.loc_Conter>dblocptr->headinfo.loc_pullSize && !lastPull)//当前入库后的一组数据
|
|
|
{
|
|
|
|
|
|
printf("4\r\n");
|
|
|
- twowrite = false;
|
|
|
- dblocptr->headinfo.loc_pullIndex=0;
|
|
|
- }
|
|
|
- else if(dblocptr->headinfo.loc_pullIndex==0)//当前入库后的一组数据
|
|
|
- {
|
|
|
-
|
|
|
- printf("5\r\n");
|
|
|
twowrite = true;
|
|
|
printf("更新pullIndex\r\n");
|
|
|
dblocptr->headinfo.loc_pullIndex = dblocptr->headinfo.loc_pushIndex+1;
|
|
|
-
|
|
|
+ Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
+ Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
|
|
|
}
|
|
|
else if(dblocptr->headinfo.loc_pullIndex < dblocptr->headinfo.loc_pushIndex)//置0后
|
|
|
{
|
|
|
|
|
|
- printf("6\r\n");
|
|
|
+ printf("5\r\n");
|
|
|
printf("@@前出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
|
|
|
Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
|
|
|
dblocptr->headinfo.loc_pullIndex+=1;
|
|
@@ -181,8 +177,8 @@ void Database_Pull(uint8_t object)
|
|
|
else if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pushIndex)//置0后
|
|
|
{
|
|
|
|
|
|
- printf("7\r\n");
|
|
|
- printf("@@0后出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
|
|
|
+ printf("6\r\n");
|
|
|
+ printf("@@0后出库操作,当前索引%d\r\n",dblocptr->headinfo.loc_pullIndex);
|
|
|
Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
|
|
|
dblocptr->headinfo.loc_pullIndex+=1;
|
|
|
Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
@@ -191,28 +187,27 @@ void Database_Pull(uint8_t object)
|
|
|
else
|
|
|
{
|
|
|
|
|
|
- printf("8\r\n");
|
|
|
+ printf("7\r\n");
|
|
|
printf("库内未被覆写,出库\r\n");
|
|
|
Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
|
|
|
dblocptr->headinfo.loc_pullIndex+=1;
|
|
|
Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
}
|
|
|
- //*后一出库
|
|
|
-// if(twowrite)
|
|
|
-// {
|
|
|
-//
|
|
|
-// printf("9\r\n");
|
|
|
-// printf("@@后出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
|
|
|
-// Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
|
|
|
-// dblocptr->headinfo.loc_pullIndex +=1;
|
|
|
-// Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
-// }
|
|
|
-
|
|
|
}
|
|
|
- else if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pullIndex && Overwrite_loc && dblocptr->headinfo.loc_Conter>=dblocptr->headinfo.loc_pushSize) //相同已返回总计数大于入库限制
|
|
|
+ if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pullSize)//到达界限
|
|
|
+ {
|
|
|
+
|
|
|
+ printf("8\r\n");
|
|
|
+ twowrite = false;
|
|
|
+ lastPull = true;
|
|
|
+ dblocptr->headinfo.loc_pullIndex=0;
|
|
|
+ Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
+ Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
|
|
|
+ }
|
|
|
+ if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pullIndex && Overwrite_loc && dblocptr->headinfo.loc_Conter>=dblocptr->headinfo.loc_pushSize) //相同已返回总计数大于入库限制
|
|
|
{
|
|
|
|
|
|
- printf("10\r\n");
|
|
|
+ printf("9\r\n");
|
|
|
printf("库内有数据并且都在头\r\n");
|
|
|
printf("@@出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
|
|
|
dblocptr->headinfo.loc_pullIndex=dblocptr->headinfo.loc_pushIndex +1;
|
|
@@ -220,28 +215,35 @@ void Database_Pull(uint8_t object)
|
|
|
Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
}
|
|
|
|
|
|
- else if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pullSize)
|
|
|
{
|
|
|
+ printf("10\r\n");
|
|
|
+ printf("@@出库操作当前索引%d\r\n",dblocptr->headinfo.loc_pullIndex);
|
|
|
|
|
|
- printf("11\r\n");
|
|
|
- dblocptr->headinfo.loc_pushIndex=0;
|
|
|
- dblocptr->headinfo.loc_pullIndex=0;
|
|
|
- Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
- }
|
|
|
-
|
|
|
- if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pullIndex)
|
|
|
- {
|
|
|
- printf("12\r\n");
|
|
|
+ if(dblocptr->headinfo.loc_pullIndex == dblocptr->headinfo.loc_pullSize)
|
|
|
+ {
|
|
|
+ printf("11\r\n");
|
|
|
|
|
|
- dblocptr->headinfo.loc_pushIndex=0;
|
|
|
- dblocptr->headinfo.loc_pullIndex=0;
|
|
|
- Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
- printf("@@出库完成,库内数据更新!!!!\r\n");
|
|
|
- Online=false;
|
|
|
-
|
|
|
- }
|
|
|
- printf("13\r\n");
|
|
|
- printf("@@出库操作当前索引%d\r\n",dblocptr->headinfo.loc_pullIndex);
|
|
|
+ dblocptr->headinfo.loc_pushIndex=0;
|
|
|
+ dblocptr->headinfo.loc_pullIndex=0;
|
|
|
+ Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
+ printf("@@出库完成,库内数据更新!!!!\r\n");
|
|
|
+ Online=false;
|
|
|
+ lastPull=false;
|
|
|
+ Overwrite_loc=false;
|
|
|
+
|
|
|
+ }
|
|
|
+ if(dblocptr->headinfo.loc_pullIndex == dblocptr->headinfo.loc_pushIndex)
|
|
|
+ {
|
|
|
+ printf("12\r\n");
|
|
|
+ dblocptr->headinfo.loc_pushIndex=0;
|
|
|
+ dblocptr->headinfo.loc_pullIndex=0;
|
|
|
+ Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
|
|
|
+ printf("@@出库完成,库内数据更新!!!!\r\n");
|
|
|
+ Online=false;
|
|
|
+ lastPull=false;
|
|
|
+ Overwrite_loc=false;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -334,10 +336,9 @@ void TestPrintStruct(DatabaseLoc *ptr,uint8_t temppush,uint8_t temppull)
|
|
|
uint16_t timecountSec=0;
|
|
|
uint16_t timecountMin=0;
|
|
|
uint16_t timecount=0;
|
|
|
-
|
|
|
void PushpullWork(void)
|
|
|
{
|
|
|
-
|
|
|
+ dblocptr->location.statusFlagL = (0x2<<8)&0xFF00;//定义状态
|
|
|
#if timingPush==1
|
|
|
//if(Offline && timecountMin==5)//5min入库一个信息
|
|
|
if(Offline && timecountMin==1)//1min入库一个信息
|
|
@@ -345,18 +346,20 @@ void PushpullWork(void)
|
|
|
{
|
|
|
timecountMin=0;//5min清0
|
|
|
Database_Push(0);//0:Loc信息
|
|
|
-
|
|
|
}
|
|
|
else if(!Offline && Online)
|
|
|
{
|
|
|
- Database_Pull(0);//读取
|
|
|
+ Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart,17);//读取出库body信息
|
|
|
if(lastPull)
|
|
|
- {lastPull=false;}
|
|
|
- else
|
|
|
{
|
|
|
+ //lastPull=false;
|
|
|
+ }
|
|
|
+ else if(dblocptr->temppull.alarmFlagH!=0xFFFF)
|
|
|
+ {
|
|
|
+ printf("库内无有效数据\r\n");
|
|
|
+ Database_Pull(0);//读取
|
|
|
tt808FsFunc((uint8_t*)&(dblocptr->temppull.alarmFlagH), 39, MessageID_Retrans);//上传
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|