121 lines
2.5 KiB
C
121 lines
2.5 KiB
C
|
#pragma once
|
|||
|
#include <vector>
|
|||
|
#include <string>
|
|||
|
|
|||
|
#define DATA_FIRST_LINE_SIZE (16) //<2F><>һ<EFBFBD>м<EFBFBD>¼<EFBFBD><C2BC>ǰ<EFBFBD>ļ<EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
// char acSeq[10];
|
|||
|
// char acTime[12];
|
|||
|
// unsigned char cIndex; // 0<><30>1
|
|||
|
// unsigned char acTxRx; // 0:send, 1:recv
|
|||
|
// char acID[10];
|
|||
|
// unsigned char acFrame;//0:data, 1:remote
|
|||
|
// unsigned char acType; //0:standard, 1:extend
|
|||
|
// unsigned char cDlc;
|
|||
|
// char acData[32];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#define DATA_FILE_SIZE (89*10000) //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
|
|||
|
class CEX_QUEUE_FILE_ITEM
|
|||
|
{
|
|||
|
public:
|
|||
|
CEX_QUEUE_FILE_ITEM()
|
|||
|
{
|
|||
|
lFileSize = DATA_FIRST_LINE_SIZE;
|
|||
|
lBeindIndex = 0;
|
|||
|
lEndIndex = 0;
|
|||
|
hFile = INVALID_HANDLE_VALUE;
|
|||
|
hMapFile = NULL;
|
|||
|
pBuf = NULL;
|
|||
|
}
|
|||
|
~CEX_QUEUE_FILE_ITEM()
|
|||
|
{
|
|||
|
if (NULL != pBuf)
|
|||
|
{
|
|||
|
FlushViewOfFile(pBuf, lFileSize);
|
|||
|
UnmapViewOfFile(pBuf);
|
|||
|
}
|
|||
|
if (NULL != hMapFile)
|
|||
|
{
|
|||
|
CloseHandle(hMapFile);
|
|||
|
}
|
|||
|
if (INVALID_HANDLE_VALUE != hFile)
|
|||
|
{
|
|||
|
CloseHandle(hFile);
|
|||
|
}
|
|||
|
}
|
|||
|
std::string strFileName;
|
|||
|
HANDLE hFile;//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
HANDLE hMapFile;//<2F>ļ<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void* pBuf;//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int lFileSize;//<2F><>ǰ<EFBFBD>ļ<EFBFBD><C4BC>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>е<EFBFBD>ժҪ<D5AA><D2AA>Ϣ<EFBFBD><CFA2><EFBFBD>ļ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ȣ<EFBFBD>
|
|||
|
int lBeindIndex;//<2F><>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int lEndIndex;//<2F><>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
};
|
|||
|
|
|||
|
class CEXMemFileQueue
|
|||
|
{
|
|||
|
class ThreadLock {
|
|||
|
public:
|
|||
|
// <20><><EFBFBD>캯<EFBFBD><ECBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
ThreadLock(CRITICAL_SECTION* cs)
|
|||
|
{
|
|||
|
m_cs = cs;
|
|||
|
EnterCriticalSection(m_cs);
|
|||
|
}
|
|||
|
~ThreadLock()
|
|||
|
{
|
|||
|
LeaveCriticalSection(m_cs);
|
|||
|
}
|
|||
|
private:
|
|||
|
CRITICAL_SECTION* m_cs; // <20>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
};
|
|||
|
|
|||
|
public:
|
|||
|
CEXMemFileQueue(std::string strDataDir);
|
|||
|
~CEXMemFileQueue();
|
|||
|
|
|||
|
//<2F><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ȹ̶<C8B9>ΪDATA_LINE_SIZE
|
|||
|
int ReadItem(void* pData, int lIndex = -1);
|
|||
|
//д<><D0B4>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ȹ̶<C8B9>λDATA_LINE_SIZE
|
|||
|
int WriteItem(void* pData);
|
|||
|
//ǿ<><C7BF>ˢ<EFBFBD><CBA2><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
void FlushWriteFile();
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int GetItemCount();
|
|||
|
|
|||
|
int GetAutoSn();
|
|||
|
|
|||
|
//<2F>л<EFBFBD><D0BB><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
void ChangeDataDate(SYSTEMTIME stDate);
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
std::vector<std::string> GetDataList();
|
|||
|
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݣ<EFBFBD>lRecvDayΪ<79><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void AutoCleanData(int lRecvDay);
|
|||
|
|
|||
|
private:
|
|||
|
|
|||
|
//<2F><><EFBFBD>ݷ<EFBFBD><DDB7>ļ<EFBFBD><C4BC>洢
|
|||
|
std::vector<CEX_QUEUE_FILE_ITEM*> m_vecFile;
|
|||
|
|
|||
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ڵ<EFBFBD>
|
|||
|
CEX_QUEUE_FILE_ITEM* m_pWriteFileItem;
|
|||
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ڶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>ڵ<EFBFBD>
|
|||
|
CEX_QUEUE_FILE_ITEM* m_pReadFileItem;
|
|||
|
|
|||
|
int m_lReadIndex;//<2F><>ǰ<EFBFBD><C7B0>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ֵ
|
|||
|
int m_lItemCount;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
std::string m_strBaseDir;//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
|||
|
std::string m_strDataDir;//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
|||
|
|
|||
|
CRITICAL_SECTION m_cs;
|
|||
|
|
|||
|
int m_lAutoSn;
|
|||
|
|
|||
|
SYSTEMTIME m_stDataDate;
|
|||
|
};
|
|||
|
|