#include "StdAfx.h" #include "WarningMgr.h" #include "LogMgr.h" #include "FileMgr.h" #include "WorkTime.h" #include "CStringFuc.h" #include "MsgBox.h" #include "ModuleDeviceMgr.h" #include "ExceptionMsg.h" #include "EncryptionMgr.h" #include "ProgramLaserTuiHuo.h" #include "CriticalSection.h" #define RECORD_FILE_PATH _T("\\WarningRecord") #define TAB_STR " " #define SECS_FIRST_ALARM_ID 15001 //secs 通信的第一个alarm id CWarningMgr *gWarningMgr = new CWarningMgr; CWarningMgr::CWarningMgr(void) { m_bClearAllWarningState = false;//是否正在清空报警 } CWarningMgr::~CWarningMgr(void) { } #if 1 void CWarningMgr::OnAppInitialize() { //创建报警记录的文件夹 CreatRecordPath(); //初始化报警状态容器 InitWarningStateVec(); } //同步读取的记录状态信息 void CWarningMgr::SyncWarningRecordVec(vector &RecordInfoVec) { int size = RecordInfoVec.size(); for(int k =0;kIsbRunAtNoteBook()) //return; gCriticalSection_WarningMsg.Lock(); if(AddInfo == "") AddInfo = "nothing"; int size = m_WarningStateVec.size(); for(int k =0;k RecordInfoVec; //先读取当天的记录 CString RecordFileName = GetCurRecordFileName(); CString RecordFilePath = GetRecordFilePath(RecordFileName); ReadRecordInfoFile(RecordInfoVec,RecordFilePath); //当前报警信息加到最后 RecordInfoVec.push_back(WarningState); //写入到文件 WriteRecordInfoToFile(RecordInfoVec,RecordFilePath); gLogMgr->WriteDebugLog("func---->AddWarningRecord"); } //读取记录文件 void CWarningMgr::ReadRecordInfoFile(vector &RecordInfoVec,CString Path) { CFile file; if(file.Open(Path,CFile::modeRead)) { CArchive ar(&file,CArchive::load); int WarningRecordCnt = 0; ar>>WarningRecordCnt;//记录的数量 for(int k=0;k>tmp;//报警错误的类型 WarningRecordInfo.m_WarningCode = (EWarningCode)tmp; ar>>WarningRecordInfo.m_DateTime;//日期时间 ar>>WarningRecordInfo.m_AddInfo;//附加信息 RecordInfoVec.push_back(WarningRecordInfo); } } } void CWarningMgr::WriteRecordInfoToFile(vector &RecordInfoVec,CString Path) { if(RecordInfoVec.empty()) return; int size = RecordInfoVec.size(); CFile file(Path,CFile::modeReadWrite|CFile::modeCreate); CArchive ar(&file,CArchive::store); ar< &RecordInfoVec) { //搜集当月的所有记录文件 vector RecordFileNameVec; GetOneMonthRecordFileName(Date,RecordFileNameVec); int size = RecordFileNameVec.size(); for(int k=0;k2016_11 CString CWarningMgr::GetMonthStr(CString Date) { return Date.Left(7); } //获取一个月的所有record 文件名 void CWarningMgr::GetOneMonthRecordFileName(CString Date,vector &RecordFileNameVec) { //搜集所有记录文件名-------------------------------- vector NameVec; CFileMgr FileMgr; CString RecordPath; FileMgr.GetFullFilePath(RecordPath,RECORD_FILE_PATH); FileMgr.GetChildFileOrDirName(false,RecordPath,NameVec,"rcd"); //只保留当月的名字----------------------------------- CString MonthStr = GetMonthStr(Date); int size = NameVec.size(); for(int k=0;k &WarningStateVec,bool bOnlyWarning) { List.DeleteAllItems(); int size = WarningStateVec.size(); int LineIdx = 0; for(int k =0;k