⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jhhbdoc.cpp

📁 环保局污染设备在线控制系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// Written by JHCC, 1997

// JHHBDoc.cpp : implementation of the CJHHBDoc class
// NOTE:Server Version !!! 1997.11.26 Update,Don't cover by client Version!!!

#include "stdafx.h"
#include "JHHB.h"

#include "JHHBDoc.h"

#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc

IMPLEMENT_DYNCREATE(CJHHBDoc, CDocument)

BEGIN_MESSAGE_MAP(CJHHBDoc, CDocument)
	//{{AFX_MSG_MAP(CJHHBDoc)
	ON_COMMAND(ID_DATA_HISTORY, OnDataHistory)
	ON_UPDATE_COMMAND_UI(ID_DATA_REQUESTSEND, OnUpdateDataRequestsend)
	ON_COMMAND(ID_DATA_REQUESTSEND, OnDataRequestsend)
	ON_COMMAND(ID_COMM_SETTINGS, OnCommSettings)
	ON_COMMAND(ID_STATION_SETUP, OnStationSetup)
	ON_COMMAND(ID_DATA_PRINT_D, OnDataPrintD)
	ON_COMMAND(ID_DATA_PRINT_M, OnDataPrintM)
	ON_COMMAND(ID_DATA_RELAY_REAL, OnDataRelayReal)
	ON_UPDATE_COMMAND_UI(ID_DATA_RELAY_REAL, OnUpdateDataRelayReal)
	ON_COMMAND(ID_DATA_PRINT_YEAR, OnDataPrintYear)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc construction/destruction

CJHHBDoc::CJHHBDoc()
{
	CString	strCtrlSection;
	strCtrlSection.LoadString(IDS_CTRLSECTION);

	CString	strDataTypeItem;
	strDataTypeItem.LoadString(IDS_DATATYPEITEM);

	CString	strDataType;
	strDataType = ::AfxGetApp()->GetProfileString(strCtrlSection, strDataTypeItem);

	CString	strODBC;
	strODBC.LoadString(IDS_ODBC);
	if (strDataType == strODBC)
		m_bUseDao = FALSE;	// use ODBC
	else
		m_bUseDao = TRUE;

	m_pDB = NULL;
	m_pDaoHBRecSet = NULL;
	m_pDaoHBDateDataSet = NULL;
	m_pDaoStationInfoSet = NULL;

	m_pHBRecSet = NULL;
	m_pHBDateDataSet = NULL;
	m_pStationInfoSet = NULL;

	m_pSpeedQueryArray = NULL;
	m_nSpeedQueryArrayUnit = 0;
	m_nCurQuerySetPos = 0;

	CTime	t = CTime::GetCurrentTime();
	(t.GetYear(), t.GetMonth(), t.GetDay(), 0, 0, 0);
	m_curSpyTime = COleDateTime(t.GetYear(), t.GetMonth(), t.GetDay(), 0, 0, 0);
	m_nCurStation =0;//2001年6月1日


	*((WORD*)m_pReadCommBuf) = (WORD)0;

	m_nReceiveCount = 0;
	m_nTotalReceive = 0;

	m_nReceiveModemCount = 0;

	m_pstrHead=NULL;
	m_pComm = NULL;
//	m_pModem = NULL;
	m_pdlgReal = NULL;

	InitDocument();
}

CJHHBDoc::~CJHHBDoc()
{
	::KillTimer(NULL, m_nWorkTimerID);
	if (m_pComm)
	{
		delete  m_pComm;
		m_pComm = NULL;
	}

	for  (int  n = 0; n < m_ctrlInfoArray.GetSize(); ++ n)
	{
		delete  m_ctrlInfoArray[n];
	}
	m_ctrlInfoArray.RemoveAll();

	// DAO
	if (m_pDB != NULL)
	{
		if (m_pDB->IsOpen())
			m_pDB->Close();
		delete  m_pDB;
		m_pDB = NULL;
	}

	if (m_pDaoHBRecSet)
	{
		if (m_pDaoHBRecSet->IsOpen())
			m_pDaoHBRecSet->Close();

		if (m_pDaoHBDateDataSet->IsOpen())
			m_pDaoHBDateDataSet->Close();

		if (m_pDaoStationInfoSet->IsOpen())
			m_pDaoStationInfoSet->Close();

		if (m_pDaoAddDataSet->IsOpen())
			m_pDaoAddDataSet->Close();

		if (m_pDaoShareDataSet->IsOpen())
			m_pDaoShareDataSet->Close();

		delete  m_pDaoHBRecSet;
		delete  m_pDaoHBDateDataSet;
		delete  m_pDaoStationInfoSet;
		delete  m_pDaoAddDataSet;
		delete	m_pDaoShareDataSet;

		m_pDaoHBRecSet = NULL;
		m_pDaoHBDateDataSet = NULL;
		m_pDaoStationInfoSet = NULL;
		m_pDaoAddDataSet = NULL;
	}

	// ODBC
	if (m_pHBRecSet)
	{
		if (m_pHBRecSet->IsOpen())
			m_pHBRecSet->Close();

		if (m_pHBDateDataSet->IsOpen())
			m_pHBDateDataSet->Close();

		if (m_pStationInfoSet->IsOpen())
			m_pStationInfoSet->Close();

		if (m_pAddDataSet->IsOpen())
			m_pAddDataSet->Close();

		delete  m_pHBRecSet;
		delete  m_pHBDateDataSet;
		delete  m_pStationInfoSet;
		delete  m_pAddDataSet;

		m_pHBRecSet = NULL;
		m_pHBDateDataSet = NULL;
		m_pStationInfoSet = NULL;
		m_pAddDataSet = NULL;
	}

	if (m_pSpeedQueryArray != NULL)
	{
		delete  m_pSpeedQueryArray;
		m_pSpeedQueryArray = NULL;
	}
}

void	CJHHBDoc::RefreshData(COleDateTime&  time)
{
	CJHHBDoc*	pJHHBDoc = (CJHHBDoc*)((CMainFrame*)::AfxGetApp()->m_pMainWnd)->GetActiveDocument();//2001年6月1日增
	int n;//2001年6月1日增
	if (m_nCurStation>(pJHHBDoc->m_ctrlInfoArray.GetSize()-1))
		n=m_nCurStation-1;
	else
		n=m_nCurStation;//2001年6月1日增
	if (m_bUseDao)	// DAO
	{
		try
		{
			m_pDaoHBDateDataSet->GenParam(time);
			m_pDaoHBDateDataSet->Requery();

			m_pDaoHBRecSet->GenParam(time,
				m_ctrlInfoArray[n]->GetAbsCurSel(m_ctrlInfoArray)+1);//2001年6月1日改,原n处为m_nCurStation
			m_pDaoHBRecSet->Requery();
		}
		catch (CDaoException* e)
		{
			DisplayDaoException(e);
			e->Delete();
			return;
		}
	}
	else
	{
		try
		{
			m_pHBDateDataSet->GenParam(time);
			m_pHBDateDataSet->Requery();

			m_pHBRecSet->GenParam(time, 
				m_ctrlInfoArray[n]->GetAbsCurSel(m_ctrlInfoArray)+1);//2001年6月1日改,原n处为m_nCurStation
			m_pHBRecSet->Requery();
		}
		catch (CDBException* e)	
		{
			e->Delete();
			return;
		}
	}
}

BOOL CJHHBDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}

#include "DataListView.h"
CDataListView*	CJHHBDoc::GetDataListView(void)
{
	POSITION	pos = GetFirstViewPosition();
	while (pos != NULL)
	{
		CView*	pView = GetNextView(pos);
		if (pView->IsKindOf(RUNTIME_CLASS(CDataListView)) == TRUE)
			return  (CDataListView*)pView;
	}
	return  FALSE;
}

#include "JHHBView.h"
CJHHBView*	CJHHBDoc::GetJHHBView(void)
{
	POSITION	pos = GetFirstViewPosition();
	while (pos != NULL)
	{
		CView*	pView = GetNextView(pos);
		if (pView->IsKindOf(RUNTIME_CLASS(CJHHBView)) == TRUE)
			return  (CJHHBView*)pView;
	}
	return  FALSE;
}

#include "RowView.h"
#include "LogView.h"
CLogView*	CJHHBDoc::GetLogView(void)
{
	POSITION	pos = GetFirstViewPosition();
	while (pos != NULL)
	{
		CView*	pView = GetNextView(pos);
		if (pView->IsKindOf(RUNTIME_CLASS(CLogView)) == TRUE)
			return  (CLogView*)pView;
	}
	return  FALSE;
}

/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc serialization

void CJHHBDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc diagnostics

#ifdef _DEBUG
void CJHHBDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CJHHBDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG


#include "CommSettingsDlg.h"

BOOL CJHHBDoc::InitDocument(void) 
{
	CWinApp	* App=::AfxGetApp();
/*
	// 获取MODEM 工作方式
	CString	strCtrlSection;
	strCtrlSection.LoadString(IDS_MODEMSECTION);
	CString	strDialTypeSection;
	strDialTypeSection.CString::LoadString(IDS_DIALTYPEITEM);

	ASSERT(App->GetProfileInt(strCtrlSection, strDialTypeSection, CModemSetupDlg::DIALTYPE_DIAL)
		== CModemSetupDlg::DIALTYPE_WAITDIAL);//确定是被叫方式(监测站机) 

	CString	strModemSection;
	strModemSection.LoadString(IDS_MODEMSECTION);

	CString	strTAPILineItem;
	strTAPILineItem.CString::LoadString(IDS_TAPILINEITEM);
	m_nModemLine = ::AfxGetApp()->GetProfileInt(strModemSection, strTAPILineItem, 0);
*/
	CString	strCtrlSection=_T("");
	strCtrlSection.LoadString(IDS_CTRLSECTION);
	CString	strRefreshTimeoutItem;
	strRefreshTimeoutItem.LoadString(IDS_REFRESHTIMEOUT);
	m_nRefreshTimeout = App->GetProfileInt(strCtrlSection, strRefreshTimeoutItem, DEFAULT_REFRESHTIMEOUT);

	CString	strWaitReplyTimeoutItem;
	strWaitReplyTimeoutItem.LoadString(IDS_WAITREPLYTIMEOUT);
	m_nWaitReplyTimeout = App->GetProfileInt(strCtrlSection, strWaitReplyTimeoutItem, DEFAULT_WAITREPLYTIMEOUT);

	CString	strTransDataTimeoutItem;
	strTransDataTimeoutItem.LoadString(IDS_TRANSDATATIMEOUT);
	m_nTransDataTimeout = App->GetProfileInt(strCtrlSection, strTransDataTimeoutItem, DEFAULT_TRANCEDATATIMEOUT);


	if (m_bUseDao)	// DAO
	{
		CDaoDatabase*	tmpDB = new  CDaoDatabase;

		// Attempt to open the new database before replacing our ptr
		CString	lpszDataPathName;
		lpszDataPathName.LoadString(IDS_DATANAME);
		try
		{
			tmpDB->Open(lpszDataPathName);
		}
		catch (CDaoException* e)
		{
			DisplayDaoException(e);
			delete tmpDB;
			e->Delete();
			return  -1;// FALSE;
		}

		if (m_pDB)
		{
			if (m_pDB->IsOpen())
				m_pDB->Close();
			delete m_pDB;
		}
		m_pDB = tmpDB;
	}

	COleDateTime	curTime = COleDateTime::GetCurrentTime();
	if (m_bUseDao)	// DAO
	{
		m_pDaoHBRecSet = new  CDaoHBRecSet(m_pDB);
//		m_pDaoHBRecSet->m_strFilter = _T("");		
		m_pDaoHBRecSet->GenParam(curTime, 1);
		try
		{
			m_pDaoHBRecSet->Open(dbOpenDynaset, _T("Select * From [hbdata]"));
		}
		catch (CDaoException* e)
		{
			DisplayDaoException(e);
			e->Delete();
			return  -1;
		}
	}
	else	// Use ODBC
	{
		m_pHBRecSet = new  CHBRecSet();
//		m_pHBRecSet->m_strFilter = _T("");
		m_pHBRecSet->GenParam(curTime, 1);
		try
		{
			m_pHBRecSet->Open();
		}
		catch (CDBException* e)	
		{
			e->Delete();
			return  -1;
		}
	}

	if (m_bUseDao)	// DAO
	{
		m_pDaoHBDateDataSet = new  CDaoHBDateDataSet(m_pDB);
//		m_pDaoHBDateDataSet->m_strFilter = _T("");
		m_pDaoHBDateDataSet->GenParam(curTime);
		try
		{
			m_pDaoHBDateDataSet->Open(dbOpenDynaset, _T("Select * From [hbdata]"));
		}
		catch (CDaoException* e)
		{
			DisplayDaoException(e);
			e->Delete();
			return  -1;
		}
	}
	else	// ODBC
	{
		m_pHBDateDataSet = new  CHBDateDataSet();
//		m_pHBDateDataSet->m_strFilter = _T("");
		m_pHBDateDataSet->GenParam(curTime);
		try
		{
			m_pHBDateDataSet->Open();
		}
		catch (CDBException* e)
		{
			e->Delete();
			return  -1;
		}
	}

	if (m_bUseDao)	// DAO
	{
		m_pDaoAddDataSet = new  CDaoAddHBDataSet(m_pDB);
		m_pDaoAddDataSet->m_strFilter = _T("");
		try
		{
			m_pDaoAddDataSet->Open(dbOpenDynaset, _T("Select * From [hbdata]"));
		}
		catch (CDaoException* e)
		{
			DisplayDaoException(e);
			e->Delete();
			return  -1;
		}
	}
	else	// ODBC
	{
		m_pAddDataSet = new  CAddHBDataSet();
		m_pAddDataSet->m_strFilter = _T("");
		try
		{
			m_pAddDataSet->Open();
		}
		catch (CDBException*  e)
		{
			e->Delete();
			return  -1;
		}
	}

	if (m_bUseDao)	// DAO
	{

		m_pDaoShareDataSet = new  CDaoShareHBDataSet(m_pDB);
		m_pDaoShareDataSet->m_strFilter = _T("");
		try
		{
			m_pDaoShareDataSet->Open(dbOpenDynaset, _T("Select * From [HBDATA]"));
		}
		catch (CDaoException* e)
		{
			DisplayDaoException(e);
			e->Delete();
			return -1;
		}
	}
	else	// ODBC I do nothing!
	{
	}


	if (m_bUseDao)	// DAO
	{
		m_pDaoStationInfoSet = new  CDaoStationInfoSet(m_pDB);
		try
		{
			m_pDaoStationInfoSet->Open();
		}
		catch (CDaoException* e)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -