www.pudn.com > gps-time.rar > RegionCommDoc.cpp


// RegionCommDoc.cpp : implementation of the CRegionCommDoc class 
// 
 
#include "stdafx.h" 
#include "RegionComm.h" 
#include "FirstRun.h" 
#include "RegionCommDoc.h" 
#include "RegionSocket.h" 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
#include "direct.h" 
 
#define ConfigureBoot "c:\hmkkjk" 
#define ConfigureFileName "c:\\hmkkjk\\AreaConfigure.txt" 
#define DepictLen 40 
#define OneConfigureLen 43 
///////////////////////////////////////////////////////////////////////////// 
// CRegionCommDoc 
 
IMPLEMENT_DYNCREATE(CRegionCommDoc, CDocument) 
 
BEGIN_MESSAGE_MAP(CRegionCommDoc, CDocument) 
	//{{AFX_MSG_MAP(CRegionCommDoc) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CRegionCommDoc construction/destruction 
 
CRegionCommDoc::CRegionCommDoc() 
{ 
	 
} 
 
CRegionCommDoc::~CRegionCommDoc() 
{ 
} 
 
BOOL CRegionCommDoc::OnNewDocument() 
{ 
	BOOL bIsFirst = FALSE; 
 
	if(NULL==(m_pCommunication = new CCommunication())) 
		return(FALSE); 
     
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
 
	// 从注册表中读入相应的系统信息 
 
	m_pCommunication->m_cRegionNo=AfxGetApp()->GetProfileInt(CenterServerConfigName,_T("RegionNO"),0); 
    if(m_pCommunication->m_cRegionNo<=0) 
        bIsFirst = TRUE;	 
 
	m_SocketPort = AfxGetApp()->GetProfileInt(CenterServerConfigName,_T("ServerSocketPort"),4000); 
	if(m_SocketPort<=0) 
		bIsFirst=TRUE; 
 
	m_sServerName=AfxGetApp()->GetProfileString(CenterServerConfigName,_T("ServerMachineName"),"127.0.0.1");  
 
	m_sServerIPAddr = AfxGetApp()->GetProfileString(CenterServerConfigName,_T("ServerIPAddress"),"127.0.0.1");  
     
    if( (m_sServerName=="")  && (m_sServerIPAddr=="")) 
		bIsFirst=TRUE; 
 
 
	//第一次启动程序 
	if (bIsFirst)  
	{ 
		if (!OnFirstRun())  
		{ 
			return FALSE; 
		} 
	} 
 
 
	InitAllComSet(); 
 
	CString str; 
	//str.Format("区域%d", m_pCommunication->m_cRegionNo); 
	str="GPS"; 
	SetTitle(str); 
	return TRUE; 
} 
 
BOOL CRegionCommDoc::OnFirstRun() 
{ 
	CFirstRun dlg; 
	 
	if (dlg.DoModal() == IDCANCEL) 
		return FALSE; 
 
	m_pCommunication->m_cRegionNo = BYTE(dlg.m_iRegionNo & 0xFF); 
	m_sServerName = dlg.m_sServerName; 
	m_SocketPort = dlg.m_iPortNo; 
	m_sServerIPAddr = dlg.m_sIPAddr; 
	 
	AfxGetApp()->WriteProfileString(CenterServerConfigName,_T("ServerMachineName"),m_sServerName); 
	AfxGetApp()->WriteProfileString(CenterServerConfigName,_T("ServerIPAddress"),m_sServerIPAddr); 
	AfxGetApp()->WriteProfileInt(CenterServerConfigName,_T("RegionNO"),m_pCommunication->m_cRegionNo); 
	AfxGetApp()->WriteProfileInt(CenterServerConfigName,_T("ServerSocketPort"),m_SocketPort); 
	 
	 
	return TRUE; 
} 
 
//启动通讯 
BOOL CRegionCommDoc::InitManagerView() 
{ 
	// 运行CTscComs类 
	if (!m_pCommunication->Run())  
	{	 
		return FALSE; 
	} 
	m_pCommunication->m_pServerSocket->UpdateProperty(m_sServerName,(long)m_SocketPort,m_sServerIPAddr); 
	 
	return TRUE; 
} 
//保存信息到注册表中 
 
 
void CRegionCommDoc::InitAllComSet() 
{	 
	//遍历注册表项目 
	CString strPort; 
	int  i,nBaudRate; 
	BYTE cDType,cDNo; 
	CString sDepict; 
	for(i=1;i<255;i++) 
	{ 
         strPort.Format("COM%d",i); 
		 nBaudRate=AfxGetApp()->GetProfileInt("ComSetting",strPort,0);  
		 cDType=AfxGetApp()->GetProfileInt("DTypeSetting",strPort,0); 
		 cDNo=AfxGetApp()->GetProfileInt("DNoSetting",strPort,0); 
		 sDepict=AfxGetApp()->GetProfileString("DepictSettings",strPort,NULL); 
 
		 if(nBaudRate>0)//波特率大于0才打开 
		 {		 
	        m_pCommunication->AddTscCom(i, nBaudRate,cDType,cDNo,sDepict);		 
		 } 
	} 
} 
 
void CRegionCommDoc::OnCloseDocument()  
{ 
	// TODO: Add your specialized code here and/or call the base class 
	m_pCommunication->StopAllRunningThread();  
	delete m_pCommunication; 
	CDocument::OnCloseDocument(); 
}