📄 serialtestdlg.cpp
字号:
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 + -