前言
这篇文章主要记录的是编程中,总会遇到一些逻辑是,在规定或者固定的时间内,达到某种条件或者要求去做一些事情,以下就是自己记录window编程固定时间内Todo something 的模板,具体内容根据实际情况而定。
一、使用步骤
1.初始化
struct time_list{
int nModule;
int nSn;
int nSpan;
time_t tSynTime ;
bool bYxAccess;
int nDeviceType;
};
std::vector<time_list> time_lst;
ZeroMemory(pdataPath,512) ;
strcpy(pdataPath,pszPath) ;
strcat(pdataPath,"todosomething.csv") ;
int nLine = 0;
if(dataApt.Open(pdataPath))
{
DAPOS pos = dataApt.GetHeadPosition() ;
while(pos)
{
content = dataApt.GetNext(pos) ;
time_list l;
l.nDeviceType = atoi(content[0].szContent);
l.nSn = atoi(content[1].szContent);
l.nSpan = atoi(content[2].szContent);
l.nModule = 0;
l.bYxAccess = false;
nLine++;
time_lst.push_back(l);
}
dataApt.Close() ;
}
else
{
strcpy(m_tishi,"打开 文件失败!") ;
CLogable::Show(m_tishi,(DWORD)strlen(m_tishi)) ;
return false ;
}
2.读入数据
将程序封装为一个函数。
StartAutoReset(3,pbyFrame[0],nSoeNum);
void StartAutoReset(int type ,int module, int soenum)
{
int nSize =time_lst.size();
int k;
for (k=0;k<nSize;k++)
{
if (time_lst[k].nSpan == 0)
{
continue;
}
if(time_lst[k].nDeviceType == type && time_lst[k].nSn == soenum )
{
time(&time_lst[k].tSynTime);
time_lst[k].bYxAccess = true;
time_lst[k].nModule = module;
//SYSTEMTIME st;
//GetLocalTime (&st);
//char szMsg[1024];
//ZeroMemory(szMsg, sizeof(szMsg));
//sprintf (szMsg, "开始计时时间:%04d-%02d-%02d %02d:%02d:%02d.%03d!", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
//CLogable::Show(szMsg, strlen(szMsg)+1);
}
}
}
3.判定是否达到要求Todo Something
UINT DataScanThread(void *lp)
{
CProtocol *p = (CProtocol*)lp;
int k;
while (!p->m_bQuitScanThread)
{
time_t ctime ;
time(&ctime);
char szInfo[256];
int nSize =p->time_lst.size();
for (k=0;k<nSize;k++)
{
if (p->time_lst[k].nSpan == 0)
{
continue;
}
if (p->time_lst[k].bYxAccess)
{
if (ctime - p->time_lst[k].tSynTime > p->time_lst[k].nSpan)
{
int nPassTime = ctime-p->time_lst[k].tSynTime;
p->time_lst[k].bYxAccess = false;
//........Todo something
wsprintf (szInfo, "Todo something:经过的时间:%d, module:%d,%d号sn, %d status, %d年%d月%d日%d时%d分%d秒%d毫秒", nPassTime,p->time_lst[k].nModule, p->time_lst[k].nSn, soe.soe_buf[10],st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds,nPassTime);
}
}
}
}
}