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

📄 serialtestdlg.cpp

📁 MDF监控源码2
💻 CPP
📖 第 1 页 / 共 4 页
字号:

void CSerialTestDlg::OnLbnSelchangeLstinfo()
{
	// TODO: 在此添加控件通知处理程序代码
}

void CSerialTestDlg::OnLbnDblclkLstinfo()
{
	// TODO: 在此添加控件通知处理程序代码
	CListBox *m_ListBox = (CListBox *)GetDlgItem(IDC_LSTINFO);
	
	//m_ListBox->DeleteItem(
}

void CSerialTestDlg::OnEnChangeEdtportserver()
{
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会
	// 发送该通知,除非重写 CDialog::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

	// TODO:  在此添加控件通知处理程序代码
}

void CSerialTestDlg::OnBnClickedBtnclear()
{
	// TODO: 在此添加控件通知处理程序代码
	//CListBox *m_ListBox = (CListBox *)GetDlgItem(IDC_LSTINFO);
	//m_ListBox->ResetContent();
	m_inCount = 0;
	m_outCount = 0;

	

	m_listInfo.ResetContent();
}



int CSerialTestDlg::WriteData(void)
{

	CString strPath,strTime,m_strPath;
	CFile fileLog ;
	//char *cbuf;
	int nRet,iCount;
	int iPath = 256;
	char cPath[256];

	//CMutex mutex;
	try
	{
		
		strTime = CTime::GetCurrentTime().Format ( "%Y-%m-%d %H:%M:%S" ) ;	//获取当前时间
		GetCurrentDirectory(iPath,cPath);

		strPath = m_strPath + "Data\\data.txt" ;
		if (!PathFileExists((LPCTSTR)strPath))
			nRet = fileLog.Open( strPath, CFile::modeReadWrite | CFile::modeCreate );
		else
			nRet = fileLog.Open( strPath, CFile::modeWrite | CFile::modeRead );

		if(nRet)
		{
			
			fileLog.SeekToBegin();
			strTime = "";
			fileLog.Write(strTime.GetBuffer(0),strTime.GetLength()) ;
			iCount = m_listCarrent.GetItemCount();
			while (iCount > 0)
			{
				
			
			
			}
			
		}
		fileLog.Close() ;

		if (nRet) 
			return TRUE;
		else
			return FALSE;


		
	}
	catch(int )
	{
		//CString strTip ;
		//strTip.Format("异常:CMDFApp::AddDebugAlarm() 发生异常:%s",(LPCSTR)e.Description()) ;
		//TRACE(strTip);
		return FALSE ;
	}

}

void CSerialTestDlg::OnBnClickedChkauto()
{
	BOOL bResult =  FALSE;
	DWORD dCode;
	UpdateData();
	if (m_rate.GetLength() == 0)
		return ;
	iInterval = atoi(m_rate.GetBuffer());
	
	if (m_chkAutoSend.GetCheck() == BST_CHECKED)
	{
		bAsking	 = TRUE;
		m_pThread = AfxBeginThread(Asking,(LPVOID)this);
		//SetTimer(1,iRate,NULL);
	}
	else if (m_chkAutoSend.GetCheck() == BST_UNCHECKED)
	{
		bAsking	 = FALSE;
		
		if ( ::GetExitCodeThread(m_pThread->m_hThread,&dCode))
		{
			::TerminateThread(m_pThread->m_hThread,dCode);
			m_pThread = NULL;
		}
		
		//KillTimer(1);
	}
	
}

void CSerialTestDlg::OnEnChangeEdtrate()
{
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会
	// 发送该通知,除非重写 CDialog::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
	
	// TODO:  在此添加控件通知处理程序代码
}

// 询问电流电压数据 
int CSerialTestDlg::AskData()
{
	char btBuf[] = "F\0";
	//CByteArray btSend;
	//CString sBuf;
	//btBuf = new char[]{"F\0"};
	//btBuf[0] = 'F';
	//btBuf[1] = '\0';
	m_inCount++;
	m_outCount++;
	m_Port.AskCom(btBuf,1);
	return 0;
}

BOOL CSerialTestDlg::IniDB(void)
{
	CString strTip,strPath;
	CString strConnect ;
	char cPath[256];
	int iPath,iLen = 0;
	iPath = 256;
	try                 
	{
		 
		m_ConPtr.CreateInstance(__uuidof(Connection));
		GetCurrentDirectory(iPath,cPath);
		strPath.Format("%s\\data\\database.mdb",cPath);
		strConnect.Format("Provider=Microsoft.Jet.OLEDB.4.0;Password=;Data Source=%s;Persist Security Info=True",strPath);

		/*strConnect.Format( "Provider=SQLOLEDB.1;Password=%s;Persist Security Info=True;User ID=%s;Initial Catalog=%s;Data Source=%s",\
			baseinfo.UserPassword,baseinfo.UserID,baseinfo.DBNam,baseinfo.DBIP) ;
		*/
		m_ConPtr->ConnectionTimeout = 30;
		m_ConPtr->Open(_bstr_t(strConnect),"","",-1);
		if  (m_ConPtr->GetState() == 0)
			return FALSE;
		else
			return TRUE ;
		
	}
	catch(_com_error e)
	{
		int num = e.WCode() ; 
		strTip.Format( "异常:数据库连接异常:%s 出错码:%d 请正确配置",(LPCSTR)e.Description(),num ) ;
		TRACE(strTip);
		return FALSE ;
	}	

	return 0;
}

BOOL CSerialTestDlg::ExecuteSQL(CString strSQL)
{
	CString strTip ;
	
	try
	{
		if(m_ConPtr == NULL || !m_ConPtr->State)
			return FALSE ;
		BSTR bstrSQL = strSQL.AllocSysString();	//转为UNICODE码
		m_ConPtr->Execute(bstrSQL,NULL,adCmdText) ;
		return TRUE ;
	}
	catch(_com_error e)
	{
		int num = e.WCode() ;
		strTip.Format( "异常:执行SQL语句:%s 产生异常:%d,%s ",strSQL,num,(LPCSTR)e.Description() ) ;
		TRACE0(strTip);
		return FALSE ;
	}
	
	return TRUE ;

}



int CSerialTestDlg::ReadDB(CString strSQL, _RecordsetPtr& pRsPtr,CString strTip)
{
	CString strError ;

	try
	{
		BSTR bstrSQL = strSQL.AllocSysString();
		pRsPtr->Open(	bstrSQL ,
						m_ConPtr.GetInterfacePtr(),	// 获取库接库的IDispatch指针
						adOpenStatic,
						adLockBatchOptimistic,			//adLockOptimistic
						adCmdText);
		return 0;
	}
	catch(_com_error e)
	{
		strError.Format("异常:执行 %s 发生异常:%s",strSQL,(LPCSTR)e.Description()) ;
		strTip += strError ; 

		return -1 ;
	}
}


BOOL CSerialTestDlg::GetFieldValue(const CString strField, _RecordsetPtr& pRsPtr,int & iValue)
{
	_variant_t var;
	try
	{
		BSTR bstrSQL = strField.AllocSysString();
		var = pRsPtr->GetCollect(bstrSQL) ;
		if (var.vt == VT_NULL)
			iValue = 0;
		else
			iValue = atoi((LPCSTR)_bstr_t(var)) ;
		return TRUE ;
	}
	catch(_com_error e)
	{
		iValue = 0;
		return FALSE ;
	}
	return 0;
}

BOOL CSerialTestDlg::GetFieldValue(const CString strField, _RecordsetPtr& pRsPtr,double & iValue)
{
	_variant_t var;
	try
	{
		BSTR bstrSQL = strField.AllocSysString();
		var = pRsPtr->GetCollect(bstrSQL) ;
		if (var.vt == VT_NULL)
			iValue = 0 ;
		else
			iValue = atof((LPCSTR)_bstr_t(var)) ;
		return TRUE ;
	}
	catch(_com_error e)
	{
		iValue = 0;
		return FALSE ;
	}
	return 0;
}


BOOL CSerialTestDlg::GetFieldValue(const CString strField, _RecordsetPtr& pRsPtr,CString &iValue)
{
	_variant_t var;
	try
	{
		BSTR bstrSQL = strField.AllocSysString();
		var = pRsPtr->GetCollect(bstrSQL) ;
		if(var.vt == VT_NULL)
			iValue.Empty();
		else
			iValue = (LPCSTR)_bstr_t(var) ;
		return TRUE ;
	}
	catch(_com_error e)
	{
		iValue.Empty();
		return FALSE ;
	}
	return 0;
}

int CSerialTestDlg::LoadItem(void)
{
	//装载校验表
	_variant_t var;
	_RecordsetPtr pRsPtr ;
	CString strValue,strTip,strItem,strSql;
	int iIndex,iSubItem,iPageSize,iResult,iValue;
	double dValue;
	iPageSize = 100;
	dValue = 0;
	//if (strSql.GetLength() <= 0)
		strSql = "Select  * From CMTSampling Order By fCarrent";
	
	iSubItem =1 ;
	pRsPtr.CreateInstance(__uuidof(Recordset)); 

	iResult = ReadDB(strSql,pRsPtr,strTip);
	if (iResult == 0)
	{
		m_listCarrent.DeleteAllItems();
		iSubItem = iIndex = 1;
		while (!pRsPtr->adoEOF)
		{
			iSubItem = 1;
			strItem.Format("%d",m_listCarrent.GetItemCount() + 1);
			iIndex = m_listCarrent.InsertItem(m_listCarrent.GetItemCount() + 1,strItem.GetBuffer());
			
			GetFieldValue("fCarrent",pRsPtr,iValue);
			strValue.Format("%d",iValue);
			m_listCarrent.SetItemText(iIndex,iSubItem++,strValue);
			GetFieldValue("fNum",pRsPtr,iValue);
			strValue.Format("%d",iValue);
			m_listCarrent.SetItemText(iIndex,iSubItem++,strValue);
			GetFieldValue("fRate",pRsPtr,iValue);
			strValue.Format("%d",iValue);
			m_listCarrent.SetItemText(iIndex,iSubItem++,strValue);

			pRsPtr->MoveNext();
		}
		pRsPtr->Close();
	}

	return 0;
}

int CSerialTestDlg::IniControl(void)
{
	int i = 0;
	int iItem = 0;

	CBitmap *bmIcon16 = new CBitmap();
	bmIcon16->LoadBitmap(IDB_BMPALARM16);
	m_imgList.Create(16,16,ILC_COLOR24,5,1);
	m_imgList.SetBkColor(RGB(255,255,255));
	m_imgList.Add(bmIcon16,RGB(0,0,0));
	CBitmap *bmIcon32 = new CBitmap();
	bmIcon32->LoadBitmap(IDB_BMPALARM32);
	
	m_imgList32.Create(32,32,ILC_COLOR24,5,1);
	m_imgList32.SetBkColor(RGB(255,255,255));
	m_imgList32.Add(bmIcon32,RGB(0,0,0));
	
	delete bmIcon16;
	delete bmIcon32;

	m_listAlarm.SetImageList(&m_imgList,LVSIL_SMALL);
	m_listAlarm.SetImageList(&m_imgList32,LVSIL_NORMAL);
	m_listAlarm.SetImageList(&m_imgList,LVSIL_STATE);


	
	m_tabAlarm.InsertItem(iItem++,_T("告警信息"));
	m_tabAlarm.InsertItem(iItem++,_T("数据"));
	//m_tabAlarm.ModifyStyle(NULL,TCS_FLATBUTTONS);

	m_listInfo.SetParent(&m_tabAlarm);
	m_SendInfo.SetParent(&m_tabAlarm);
	m_listAlarm.SetParent(&m_tabAlarm);

	m_listCarrent.DeleteAllItems();
	m_listCarrent.ModifyStyle(NULL,LVS_REPORT | WS_VSCROLL | WS_VSCROLL );
	m_listCarrent.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE);
	m_listCarrent.InsertColumn(i,"序号",LVCFMT_CENTER,60,0);
	m_listCarrent.InsertColumn(++i,"电流",LVCFMT_CENTER,60,0);
	m_listCarrent.InsertColumn(++i,"采样值",LVCFMT_CENTER,60,0);
	m_listCarrent.InsertColumn(++i,"频率",LVCFMT_CENTER,60,0);

	m_listAlarm.DeleteAllItems();
	m_listAlarm.ModifyStyle(NULL,LVS_REPORT | WS_VSCROLL | WS_VSCROLL );
	m_listAlarm.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE);
	m_listAlarm.InsertColumn(i,"地址",LVCFMT_CENTER,70,0);
	//m_listAlarm.InsertColumn(++i,"端口",LVCFMT_CENTER,50,0);
	m_listAlarm.InsertColumn(++i,"电流",LVCFMT_CENTER,60,0);
	m_listAlarm.InsertColumn(++i,"频率",LVCFMT_CENTER,60,0);
	m_listAlarm.InsertColumn(++i,"告警级别",LVCFMT_CENTER,70,0);
	m_listAlarm.InsertColumn(++i,"起始时间",LVCFMT_CENTER,160,0);
	m_listAlarm.InsertColumn(++i,"结束时间",LVCFMT_CENTER,160,0);
	m_listAlarm.InsertColumn(++i,"持续秒数",LVCFMT_CENTER,60,0);
	m_listAlarm.InsertColumn(++i,"状态",LVCFMT_CENTER,80,0);
	m_listAlarm.InsertColumn(++i,"电压",LVCFMT_CENTER,0,0);



	m_listCom.AddString(_T("COM1"));
	m_listCom.AddString(_T("COM2"));
	m_listCom.AddString(_T("COM3"));
	m_listCom.AddString(_T("COM4"));
	m_listCom.AddString(_T("COM5"));
	m_listCom.AddString(_T("COM6"));
	m_listCom.AddString(_T("COM7"));
	m_listCom.AddString(_T("COM8"));


	//m_listInfo.ShowWindow(SW_HIDE);
	//m_SendInfo.ShowWindow(SW_HIDE);
	m_tabAlarm.SetCurSel(0);
	//m_listAlarm.ShowWindow(SW_SHOW);
	
	//m_listAlarm.SetFocus();


	return 0;
}

void CSerialTestDlg::OnTcnSelchangeTabalarm(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	int iItem = 0;
	iItem = m_tabAlarm.GetCurSel();
	switch(iItem)
	{
		case 0:
			m_listInfo.ShowWindow(SW_HIDE);
			m_SendInfo.ShowWindow(SW_HIDE);
			m_listAlarm.ShowWindow(SW_SHOW);
			//m_listAlarm.EnableWindow();

			break;
		case 1:
			m_listAlarm.ShowWindow(SW_HIDE);
			m_listInfo.ShowWindow(SW_SHOW);
			m_SendInfo.ShowWindow(SW_SHOW);
			

			break;
	}

	*pResult = 0;
}



// 装载告警记录
int CSerialTestDlg::LoadAlarmItem(void)
{
	
	_variant_t var;
	_RecordsetPtr pRsPtr ;
	CString strValue,strTip,strItem,strSql;
	int iIndex,iSubItem,iPageSize,iResult,iValue,iState ;
	double dValue;
	iPageSize = 100;
	dValue = 0;
	//if (strSql.GetLength() <= 0)
		strSql = "Select  * From CMTSampValue ";
	
	iSubItem =1 ;
	pRsPtr.CreateInstance(__uuidof(Recordset)); 
	
	
	iResult = ReadDB(strSql,pRsPtr,strTip);
	if (iResult == 0)
	{
		m_listAlarm.DeleteAllItems();
		iSubItem = iIndex = 1;
		while (!pRsPtr->adoEOF)
		{
			iSubItem = 1;

			GetFieldValue("fLevel",pRsPtr,iState);


			//strItem.Format("%d",m_listAlarm.GetItemCount() + 1);
			strItem= "01";
			iIndex = m_listAlarm.InsertItem(m_listAlarm.GetItemCount() + 1,strItem.GetBuffer(),iState);
			
			//GetFieldValue("fPort",pRsPtr,iValue);
			//strValue.Format("%d",iValue);
			//m_listAlarm.SetItemText(iIndex,iSubItem++,strValue);

			GetFieldValue("fCarrent",pRsPtr,iValue);
			strValue.Format("%d",iValue);
			m_listAlarm.SetItemText(iIndex,iSubItem++,strValue);

			GetFieldValue("fRate",pRsPtr,iValue);
			strValue.Format("%d",iValue);
			m_listAlarm.SetItemText(iIndex,iSubItem++,strValue);

			GetFieldValue("fLevel",pRsPtr,iValue);
			strValue.Format("%d",iValue);

⌨️ 快捷键说明

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