bool bAlarmFlag=false;//全局变量
   //config.ini 文件配制内容如下{{{
[ITEM]
;;存储时间间隔5分 (5,15,30,60)
interval=5
;;默认改为0000
min=00
hour=00
   /////////////////////////////////}}}
char path[20];
sprintf(path,".\\config.ini");
char strIntervar[5]={0};//5分,15分,30分,60分
char strMin[5]={0};
char strHour[5]={0};
GetPrivateProfileString("ITEM","interval","",strIntervar,5,path);
GetPrivateProfileString("ITEM","min","",strMin,5,path);
GetPrivateProfileString("ITEM","hour","",strHour,5,path);
char strHourMin[5]={0};
time_t   tval;   
struct   tm   *now;   
tval=time(NULL);   
now=localtime(&tval); 
/*方法1:*/
int iMin=0;
iMin=((now->tm_hour-atoi(strHour))>0||now->tm_hour-atoi(strHour)<0)?now->tm_min+60:now->tm_min;
         if(!bAlarmFlag)
{
             if((iMin-atoi(strMin))>=atoi(strIntervar))
      {
TemperatureEntity Entity;
Entity.pByte = (BYTE*)m_pTBuffer;
Entity.nByteLen = pApp->m_paramterCount*sizeof(double);
this->m_sql.AddHistoryTemperatureInfo(Entity);//2 sprintf(strHourMin,"%02d",now->tm_min);
WritePrivateProfileString("ITEM","min",strHourMin,path);
sprintf(strHourMin,"%02d",now->tm_hour);
WritePrivateProfileString("ITEM","hour",strHourMin,path);
              }
}
else//有报警时纪录
{
                  TemperatureEntity Entity;
                  Entity.pByte = (BYTE*)m_pTBuffer;
                  Entity.nByteLen = pApp->m_paramterCount*sizeof(double);
                  this->m_sql.AddHistoryTemperatureInfo(strTime,Entity);//2
                  bAlarmFlag=false;        
           }正常情况下间隔5分钟存储到数据库?
奇怪的是,偶然性数据不停的存储到数据库,难道是 bAlarmFlag变量有问题?
数据不停的存储到数据库,是哪有问题?

解决方案 »

  1.   

    //1.读取当前实际执行文件路径DEBUG 和Realease路径
    char *GetCurrentPath(char*  path) 
    {
    TCHAR exeFullPath[_MAX_PATH]={0}; 
    GetModuleFileName(NULL,exeFullPath,_MAX_PATH); 
    int   len=strlen(exeFullPath);
    int   i=0,j=0;
    for(i=len-1;i>-1;i--,j++)   
    {   
    if(exeFullPath[i]=='\\')
    {
    memcpy(path,exeFullPath,len-j);
    // strncpy(path,exeFullPath,len-j);
    break;
    }
    }   
    return path;
    }
    //2.
    char path[MAX_PATH]={0};//=".\\config.ini";
    GetCurrentPath(path);
    strcat(path,"config.ini");
    ::MessageBox(NULL,path,path,MB_OK);    char path[20];
        sprintf(path,".\\config.ini");//注意不能用此路径执行程序