?? configinfo.cpp
字號(hào):
#include "stdafx.h"
#include "ConfigInfo.h"
#include "DataBind.h"
#include "SQLExec.h"
//#include "..\reg\registry.h"
/*zhou added 2008 1-17*/
#include <string.h>
CConfigInfo::CConfigInfo()
{
m_sPath = _T("F:\\DataTest\\data");
m_dtToday = CTime::GetCurrentTime();
m_nYear = m_dtToday.GetYear();
m_nMonth = m_dtToday.GetMonth();
InitInstance();
for(int i=0;i<27;i++)
{
m_bItemState[i] = true;
}
}
CConfigInfo::~CConfigInfo()
{
ExitInstance();
}
BOOL CConfigInfo::ADOExec(_RecordsetPtr &ADOSet, _variant_t &strSQL)
{
if ( ADOSet->State == adStateOpen) ADOSet->Close();
try
{
ADOSet->Open(strSQL, m_ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown);
return TRUE;
}
catch(_com_error &e)
{
CString err;
err.Format("ADO Error: %s",(char*)e.Description());
AfxMessageBox(err);
return FALSE;
}
}
BOOL CConfigInfo::InitInstance()
{
// Init Login Count
// m_nLoginCount = 0;
CString sz;
sz = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = ";
sz = sz + m_sPath + "\\AirMonitor.mdb";
sz = sz + " ;Persist Security Info=False";
m_bstrFileDSN = _T(sz);
// 創(chuàng)建ADO連接對(duì)象
if( FAILED(::CoInitialize(NULL)) )
{
AfxMessageBox("ADO Init failed");
return FALSE;
}
try
{
m_ADOConn.CreateInstance(__uuidof(Connection));
m_ADOConn->ConnectionString = m_bstrFileDSN;
m_ADOConn->Open(m_bstrFileDSN,"","", adConnectUnspecified);
}
// 捕捉例外
catch(_com_error &e)
{
CString err;
err.Format("%s", (char*)(e.Description()) );
AfxMessageBox(err);
return FALSE;
}
catch(...)
{
AfxMessageBox("Unknown Error...");
return FALSE;
}
// 初始化ADO記錄集
m_pADOSet.CreateInstance(__uuidof(Recordset));
InitDateFromDB();
return TRUE;
}
BOOL CConfigInfo::ExitInstance()
{
//釋放ADO連接對(duì)象
if( adStateOpen == m_ADOConn->State ) m_ADOConn->Close();
m_ADOConn.Release();
// 釋放ADO記錄集
if(adStateOpen==m_pADOSet->State) m_pADOSet->Close();
m_pADOSet.Release();
return TRUE;
}
/*CSampleData::CSampleData()
{
m_nCount = 0;
m_nCache1 = 0;
m_nCache2 = 0;
memset(m_nTime, 0, POINT_PER_DAY * sizeof(int)); //保存記錄對(duì)應(yīng)時(shí)間點(diǎn)(分鐘序號(hào)以及有效庫存項(xiàng)目數(shù))
for(int i = 0; i < MAX_CHANNEL1_NUM + MAX_CHANNEL2_NUM; i++)
memset(m_fData[i], 0, POINT_PER_DAY * sizeof(float)); //每分鐘采集一個(gè)點(diǎn)
for(i = 0; i < MAX_CHANNEL1_NUM; i++)
memset(m_fCache1[i], 0, MAX_SAMPLE_CACHE1 * sizeof(float));
for(i = 0; i < MAX_CHANNEL2_NUM; i++)
memset(m_fCache2[i], 0, MAX_SAMPLE_CACHE2 * sizeof(float));
}
CSampleData::~CSampleData()
{
}
BOOL CSampleData::GetCurData1(float* fData)
{
if(m_nCache1 == 0)
{
if(m_nCount == 0)
{
memset(fData, 0, MAX_CHANNEL1_NUM * sizeof(float));
return FALSE;
}else{
for(int i = 0; i < MAX_CHANNEL1_NUM; i++)
fData[i] = m_fData[i][m_nCount - 1];
return TRUE;
}
}
for(int i = 0; i < MAX_CHANNEL1_NUM; i++)
fData[i] = m_fCache1[i][m_nCache1 - 1];
return TRUE;
}
BOOL CSampleData::GetCurData2(float* fData)
{
if(m_nCache2 == 0)
{
if(m_nCount == 0)
{
memset(fData, 0, MAX_CHANNEL2_NUM * sizeof(float));
return FALSE;
}else{
for(int i = 0; i < MAX_CHANNEL2_NUM; i++)
fData[i] = m_fData[MAX_CHANNEL1_NUM + i][m_nCount - 1];
return TRUE;
}
}
for(int i = 0; i < MAX_CHANNEL2_NUM; i++)
fData[i] = m_fCache2[i][m_nCache2 - 1];
return TRUE;
}
int CSampleData::UpdateSample(int nMinPerDay)
{
if((m_nCache1 == 0) ||(m_nCache2 == 0))
return 0;
m_nTime[m_nCount] = nMinPerDay;
for(int i = 0; i < MAX_CHANNEL1_NUM; i++)
{
m_fData[i][m_nCount] = 0;
for(int j = 0; j < m_nCache1; j++)
m_fData[i][m_nCount] = m_fData[i][m_nCount] + m_fCache1[i][j];
m_fData[i][m_nCount] = m_fData[i][m_nCount] / m_nCache1;
}
for(i = 0; i < MAX_CHANNEL2_NUM; i++)
{
m_fData[MAX_CHANNEL1_NUM + i][m_nCount] = 0;
for(int j = 0; j < m_nCache2; j++)
m_fData[MAX_CHANNEL1_NUM + i][m_nCount] = m_fData[MAX_CHANNEL1_NUM + i][m_nCount] + m_fCache2[i][j];
m_fData[MAX_CHANNEL1_NUM + i][m_nCount] = m_fData[MAX_CHANNEL1_NUM + i][m_nCount] / m_nCache2;
}
m_nCount++;
return m_nCount;
}
void CSampleData::ClearCache(int nType)
{
if(nType == 1)
m_nCache1 = 0;
if(nType == 2)
m_nCache2 = 0;
}
void CSampleData::NewData1Coming(float* fNewData, CChannelInfo* pChanConfig)
{
for(int i = 0; i < MAX_CHANNEL1_NUM; i++)
m_bOverWarn[i] = pChanConfig->SjToLl(i + 1, fNewData[i], m_fCache1[i][m_nCache1]);
m_nCache1++;
if(m_nCache1 >= MAX_SAMPLE_CACHE1)
m_nCache1 = 0;
return;
}
void CSampleData::NewData2Coming(float* fNewData, CChannelInfo* pChanConfig)
{
for(int i = 0; i < MAX_CHANNEL2_NUM; i++)
m_bOverWarn[i + MAX_CHANNEL1_NUM] = pChanConfig->SjToLl(i + 1 + MAX_CHANNEL1_NUM, fNewData[i], m_fCache2[i + MAX_CHANNEL1_NUM][m_nCache2]);
//m_fCache2[i + MAX_CHANNEL1_NUM][m_nCache2] = fNewData[i];
m_nCache2++;
if(m_nCache2 >= MAX_SAMPLE_CACHE2)
m_nCache2 = 0;
return;
}
BOOL CSampleData::LoadFrom10SecDB()
{
return TRUE;
}
BOOL CSampleData::SaveTo10SecDB()
{
return TRUE;
}
BOOL CSampleData::LoadFromMinDB()
{
return TRUE;
}
BOOL CSampleData::SaveToMinDB()
{
return TRUE;
}
BOOL CSampleData::LoadFrom5MinDB()
{
return TRUE;
}
BOOL CSampleData::SaveTo5MinDB()
{
return TRUE;
}
BOOL CSampleData::LoadFrom15MinDB()
{
return TRUE;
}
BOOL CSampleData::SaveTo15MinDB()
{
return TRUE;
}
BOOL CSampleData::LoadFromDayDB()
{
return TRUE;
}
BOOL CSampleData::SaveToDayDB()
{
return TRUE;
}*/
BOOL CConfigInfo::InitDateFromDB()
{
/* _RecordsetPtr pRst = NULL;
try
{
CString strsql;
_bstr_t strSQL;
pRst.CreateInstance(__uuidof(Recordset));
IADORecordBindingPtr picRs(pRst);
//DBPlace
strsql.Format("SELECT * FROM ComDevice");
strSQL = strsql;
CDBDevice rs;
ADOExec(pRst, _variant_t(strSQL));
TESTHR(picRs->BindToRecordset(&rs));
int i;
//adam4117
m_Adam4117.m_nID = rs.m_nID;
m_Adam4117.m_nBt = rs.m_nBt;
m_Adam4117.m_sCom.Format("%s", rs.m_sCom);
m_Adam4117.m_nMaxSec = rs.m_nMaxSec;
for(i = 0; i < 10; i++)
m_Adam4117.m_sCommand[i].Format("%s", rs.m_sCommand[i]);
pRst->MoveNext();
//CCD
m_CCD.m_nID = rs.m_nID;
m_CCD.m_nBt = rs.m_nBt;
m_CCD.m_sCom.Format("%s", rs.m_sCom);
m_CCD.m_nMaxSec = rs.m_nMaxSec;
for(i = 0; i < 10; i++)
m_CCD.m_sCommand[i].Format("%s", rs.m_sCommand[i]);
pRst->MoveNext();
//CMotor
m_Motor.m_nID = rs.m_nID;
m_Motor.m_nBt = rs.m_nBt;
m_Motor.m_sCom.Format("%s", rs.m_sCom);
m_Motor.m_nMaxSec = rs.m_nMaxSec;
for(i = 0; i < 10; i++)
m_Motor.m_sCommand[i].Format("%s", rs.m_sCommand[i]);
pRst->MoveNext();
//CGprs
m_Gprs.m_nID = rs.m_nID;
m_Gprs.m_nBt = rs.m_nBt;
m_Gprs.m_sCom.Format("%s", rs.m_sCom);
m_Gprs.m_nMaxSec = rs.m_nMaxSec;
for(i = 0; i < 10; i++)
m_Gprs.m_sCommand[i].Format("%s", rs.m_sCommand[i]);
pRst->Close();
return TRUE;
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
PrintComError(e);
return FALSE;
} */
return FALSE;
}
void CConfigInfo::SaveEventLogToDB(CString sTime, CString sEvent)
{
//sunset interface: 將m_Var[]中數(shù)據(jù)保存至數(shù)據(jù)庫中
/* CString sUser, sTable;
sTable.Format("%sEventLog", m_dtToday.Format("%Y%m%d"));
CheckToSureTableExist(sTable, "TemplateLog");
sUser = m_User.m_sUserName;
CString sql;
sql.Format("INSERT INTO "+sTable+" (sTime, sEvent, sUser)\
values ('"+sTime+"', '"+sEvent+"', '"+sUser+"') ");
ExecSQL(sql);*/
}
void CConfigInfo::SaveWarnLogToDB(CString sTime, CString sWarn)
{
//sunset interface: 將m_Var[]中數(shù)據(jù)保存至數(shù)據(jù)庫中
/* CString sUser, sTable;
sUser = m_User.m_sUserName;//_T("默認(rèn)");
sTable.Format("%sWarnLog", m_dtToday.Format("%Y%m%d"));
CheckToSureTableExist(sTable, "TemplateLog");
CString sql;
sql.Format("INSERT INTO "+sTable+" (sTime, sWarn, sUser)\
values ('"+sTime+"', '"+sWarn+"', '"+sUser+"') ");
ExecSQL(sql);*/
}
void CConfigInfo::SaveSampleDataToDB()
{
//sunset interface: 將m_Var[]中數(shù)據(jù)保存至數(shù)據(jù)庫中
/* CString sTime, sVal[24];
CTime dt = CTime::GetCurrentTime();
sTime = dt.Format("%H:%M:%S");
for(int i = 0; i < 24; i++)
{
if((m_Var[i].nType == 1) ||
(m_Var[i].nType == 2))
sVal[i].Format(_T("%.2f"), m_Var[i].fVal);
if((m_Var[i].nType == 3) ||
(m_Var[i].nType == 4)){
if(m_Var[i].bVal)
sVal[i] = _T("1");
else
sVal[i] = _T("0");
}
}
CString sql;
sql.Format("INSERT INTO SampleData(sTime, Var01, Var02, Var03, Var04,\
Var05, Var06, Var07, Var08, Var09, Var10, Var11, Var12, Var13, Var14, Var15,\
Var16, Var17, Var18, Var19, Var20, Var21, Var22, Var23, Var24)\
values ('"+sTime+"', '"+sVal[0]+"', '"+sVal[1]+"', '"+sVal[2]+"','"+sVal[3]+"','"+sVal[4]\
+"','"+sVal[5]+"','"+sVal[6]+"','"+sVal[7]+"','"+sVal[8]+"','"+sVal[9]+"','"+sVal[10]+"','"+sVal[11]\
+"','"+sVal[12]+"','"+sVal[13]+"','"+sVal[14]+"','"+sVal[15]+"','"+sVal[16]+"','"+sVal[17]\
+"','"+sVal[18]+"','"+sVal[19]+"','"+sVal[20]+"','"+sVal[21]+"','"+sVal[22]+"','"+sVal[23]+"') ");
ExecSQL(sql);
*/
}
BOOL CConfigInfo::CheckToSureTableExist(CString sTable, CString sTemplate)
{
if(!CheckIfTableExist(sTable))
{
return CreateNewTable(sTable, sTemplate);
}
return TRUE;
}
BOOL CConfigInfo::CreateNewTable(CString sTable, CString sTemplate)
{
CString strSQL;
strSQL.Format("select * into %s from %s where 1<>1", sTable, sTemplate);
_RecordsetPtr pRst = NULL;
TESTHR(pRst.CreateInstance(__uuidof(Recordset)));
if(!ADOExec(pRst, _variant_t(strSQL)))
return FALSE;
return TRUE;
}
BOOL CConfigInfo::CheckIfTableExist(CString sTable)
{
HRESULT hr = S_OK;
IADORecordBinding *picRs = NULL;
_RecordsetPtr pRstSchema("ADODB.Recordset");
CString strTableType, strTableName, strFlag;
try{
pRstSchema->QueryInterface(__uuidof(IADORecordBinding), (LPVOID*)&picRs);
pRstSchema=m_ADOConn->OpenSchema(adSchemaTables);//枚舉表的名稱處理
int i = 0;
while(!(pRstSchema->adoEOF)){
_bstr_t table_name = pRstSchema->Fields->GetItem("TABLE_NAME")->Value;//獲取表的名稱
_bstr_t table_type = pRstSchema->Fields->GetItem("TABLE_TYPE")->Value;//獲取表的類型
strTableType.Format("%s",(LPCSTR) table_type);
if(!lstrcmp(strTableType,_T("TABLE")))
{
//m_cbTeam.AddString((LPCSTR)table_name);//添加表的名稱
strTableName.Format("%s",(LPCSTR)table_name);
if(!strTableName.CompareNoCase(sTable))
{
pRstSchema->Close();
return TRUE;
}
}
pRstSchema->MoveNext();
}
// Clean up objects before exit.
pRstSchema->Close();
}
catch(_com_error &e)
{
CString err;
err.Format("%s", (char*)(e.Description()) );
AfxMessageBox(err);
return FALSE;
}
return FALSE;
}
int CConfigInfo::StringToInt(CString s)
{
int nReturn = 0;
char cc[10];
wsprintf(cc, "%s", s);
nReturn = atoi(cc);
return nReturn;
}
float CConfigInfo::StringToFloat(CString s)
{
float fReturn = 0;
char cc[10];
wsprintf(cc, "%s", s);
fReturn = (float)atof(cc);
return fReturn;
}
/*zhou added 2008 1-17*/
BOOL CConfigInfo::GetDataFromTenSec(CString str,CDBTenSec* pp,int nCurRecNum)// &temprs)
{
_RecordsetPtr pRst = NULL;
int num = nCurRecNum;
try
{
// CString strsql;
_bstr_t strSQL;
pRst.CreateInstance(__uuidof(Recordset));
IADORecordBindingPtr picRs(pRst);
//DBPlace
// strsql.Format("SELECT * FROM TenSec");
// strSQL = strsql;
strSQL = str;
CDBTenSec rs;
ADOExec(pRst, _variant_t(strSQL));
TESTHR(picRs->BindToRecordset(&rs));
// int bb=rs.m_nTenS_nID;
// CDBTenSec temprs;
//CDBTenSec* pp = new ;
// pRst->MoveFirst();
// pRst->MovePrevious();
int i=0;
while(!pRst->adoEOF)
{
if(i<nCurRecNum)
{
memcpy((void*)(pp+i),&rs,sizeof(CDBTenSec));
int tt=(pp+i)->m_nTenS_nID;
pRst->MoveNext();
i++;
}
else
break;
}
// pRst->Release();
pRst->Close();
return TRUE;
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
PrintComError(e);
return FALSE;
}
}
int CConfigInfo::GetRecordCount(CString strsql)
{
_RecordsetPtr pRst = NULL;
int num=0;
try
{
_bstr_t strSQL;
pRst.CreateInstance(__uuidof(Recordset));
IADORecordBindingPtr picRs(pRst);
strSQL = strsql;
CDBCount rs;
ADOExec(pRst, _variant_t(strSQL));
TESTHR(picRs->BindToRecordset(&rs));
// CDBTenSec temprs;
//CDBTenSec* pp = new ;
while(!pRst->adoEOF)
{
num=rs.m_nCount;
pRst->MoveNext();
}
pRst->Close();
return num;
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
PrintComError(e);
return num;
}
}
BOOL CConfigInfo::AddDataToTenSec(CString str, CDBTenSec *pp)
{
_RecordsetPtr pRst = NULL;
try
{
CString strsql;
_bstr_t strSQL;
pRst.CreateInstance(__uuidof(Recordset));
IADORecordBindingPtr picRs(pRst);
//DBPlace
strsql.Format("SELECT * FROM TenSec");
strSQL = strsql;
// strSQL = str;
CDBTenSec rs;
ADOExec(pRst, _variant_t(strSQL));
pRst->MoveLast();
TESTHR(picRs->BindToRecordset(&rs));
rs.m_nIndex=100;
pRst-> AddNew();
pRst->Update();
// rs.m_nIndex = 123;
// TESTHR(picRs->AddNew(&rs));
/* int i=0;
while(!pRst->adoEOF)
{
memcpy((void*)(pp+i),&rs,sizeof(CDBTenSec));
int tt=(pp+i)->m_nTenS_nID;
pRst->MoveNext();
i++;
}*/
pRst->Close();
return TRUE;
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
PrintComError(e);
return FALSE;
}
}
void CConfigInfo::SelectListItem(bool *State)
{
for(int i=0;i<27;i++)
{
State[i]=m_bItemState[i];
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -