📄 demodlg.cpp
字号:
{
n=ReadOne();
m+=n;
}
reading=m;
realreading=(reading-m_lBase)/16384.0;
m_strTempValue.Format("%.4f",reading/16384.0);
m_strRealValue.Format("%.4f",(reading-m_lBase)/16384.0);
if(realreading>m_fUpLimit)
m_strResult="High alarm!";
else
if(realreading<m_fDownLimit)
m_strResult="Low alarm!";
else
m_strResult="OK!";
ResultOutput(m_strResult,realreading);
UpdateData(false);
}
void CDemoDlg::OnSetBase()
{
long reading;
reading=m_OrbitModule.ReadCurrent();
m_lBase=reading;
m_strZeroBase.Format("%.4f",reading*10/16384.0);
UpdateData(false);
}
long CDemoDlg::ReadOne()
{
long reading;
reading=m_OrbitModule.ReadCurrent();
return reading;
//m_strRealValue;
}
void CDemoDlg::OnCollect1000()
{
UpdateData(true);
ClearDatabase();
OnOneCollect();
ConnectToAccess();
for(int i=0;i<1000;i++)
{
SaveDataToAccess();
}
DisconnectToAccess();
UpdateData(false);
}
void CDemoDlg::OnScan()
{
/*
ReadOne();
UpdateData(false);
ResultOutput(m_strResult);
*/
OnOneCollect();
SetTimer(1,20,NULL);
}
void CDemoDlg::OnOpenAccess()
{
//ConnectToAccess();
CAccessDlg AccessDlg;
AccessDlg.DoModal();
}
void CDemoDlg::ConnectToAccess()
{
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Solartron.mdb","","",adModeUnknown);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open("SELECT * FROM Orbit",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void CDemoDlg::DisconnectToAccess()
{
if(m_pRecordset->State)
{
m_pRecordset->Close();
m_pRecordset=NULL;
}
if(m_pConnection->State)
{
m_pConnection->Close();
m_pConnection=NULL;
}
}
void CDemoDlg::SaveDataToAccess()
{
static long times=1;
try
{
realnum=ReadOne();
m_pRecordset->AddNew();
m_pRecordset->PutCollect("Sequence",_variant_t(times));
m_pRecordset->PutCollect("TempValue", _variant_t(m_strTempValue));
m_pRecordset->PutCollect("BaseValue", _variant_t((m_lBase*10/16384.0)));
m_pRecordset->PutCollect("RealValue", _variant_t(realnum));
m_pRecordset->PutCollect("Uplimit", _variant_t(m_fUpLimit));
m_pRecordset->PutCollect("Lowlimit", _variant_t(m_fDownLimit));
m_pRecordset->PutCollect("Result", _variant_t(m_strResult));
m_pRecordset->Update();
times++;
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void CDemoDlg::ResultOutput(CString str,double reading)
{
CDC *dc=GetDC();
//dc->MoveTo(0,475);
static int i=1;
if(i>1000)
i=1;
else
{
CRect rectUplimit,rectOk,rectDownlimit,rectWave,rect;
GetClientRect(&rect);
rectUplimit.bottom=40;
rectUplimit.right=130;
rectUplimit.left=100;
rectUplimit.top=30;
rectOk.bottom=60;
rectOk.right=130;
rectOk.left=100;
rectOk.top=50;
rectDownlimit.bottom=80;
rectDownlimit.right=130;
rectDownlimit.left=100;
rectDownlimit.top=70;
COLORREF m_colorRed;
COLORREF m_colorGreen;
COLORREF m_colorBlue;
COLORREF m_colorWhite;
COLORREF m_colorPoint;
m_colorRed=RGB(255,0,0);
m_colorGreen=RGB(0,255,0);
m_colorBlue=RGB(0,0,255);
m_colorWhite=RGB(255,255,255);
dc->FillSolidRect(&rectUplimit,m_colorWhite);
dc->FillSolidRect(&rectOk,m_colorWhite);
dc->FillSolidRect(&rectDownlimit,m_colorWhite);
if(str=="High alarm!")
{
dc->FillSolidRect(&rectUplimit,m_colorRed);
dc->FillSolidRect(&rectDownlimit,m_colorWhite);
dc->FillSolidRect(&rectOk,m_colorWhite);
m_colorPoint=m_colorRed;
}
else
if(str=="Low alarm!")
{
dc->FillSolidRect(&rectDownlimit,m_colorBlue);
dc->FillSolidRect(&rectUplimit,m_colorWhite);
dc->FillSolidRect(&rectOk,m_colorWhite);
m_colorPoint=m_colorBlue;
}
else
{
dc->FillSolidRect(&rectOk,m_colorGreen);
dc->FillSolidRect(&rectDownlimit,m_colorWhite);
dc->FillSolidRect(&rectUplimit,m_colorWhite);
m_colorPoint=m_colorGreen;
}
rectWave.bottom=rect.bottom;
rectWave.right=rect.right;
rectWave.left=0;
rectWave.top=rect.bottom-410;
dc->FillSolidRect(&rectWave,m_colorWhite);
CPoint point;
point.x=i;
point.y=rect.bottom-205+long(reading*20);
dc->SetPixel(point,m_colorPoint);
dc->LineTo(point);
i++;
ReleaseDC(dc);
}
}
void CDemoDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
OnScan();
CDialog::OnTimer(nIDEvent);
}
void CDemoDlg::LoadDataFromAccess()
{
CAccessDlg AccessDlg;
_variant_t var;
CString strSequence,strTempValue,strBaseValue,strRealValue,strUplimit,strLowlimit,strResult;
strSequence=strTempValue=strBaseValue=strRealValue=strUplimit=strLowlimit=strResult="";
int i=0;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("The content is blank");
}
while(!m_pRecordset->adoEOF)
{
var=m_pRecordset->GetCollect("Sequence");
if(var.vt==VT_NULL)
strSequence="";
else
strSequence.Format("%d",var.lVal);
var=m_pRecordset->GetCollect("TempValue");
if(var.vt==VT_NULL)
strTempValue="";
else
strTempValue.Format("%.4f",var.fltVal);
var=m_pRecordset->GetCollect("BaseValue");
if(var.vt==VT_NULL)
strBaseValue="";
else
strBaseValue.Format("%.4f",var.fltVal);
var=m_pRecordset->GetCollect("RealValue");
if(var.vt==VT_NULL)
strRealValue="";
else
strRealValue.Format("%.4f",var.fltVal);
var=m_pRecordset->GetCollect("Uplimit");
if(var.vt==VT_NULL)
strUplimit="";
else
strUplimit.Format("%.4f",var.fltVal);
var=m_pRecordset->GetCollect("Lowlimit");
if(var.vt==VT_NULL)
strLowlimit="";
else
strLowlimit.Format("%.4f",var.fltVal);
var=m_pRecordset->GetCollect("Result");
if(var.vt==VT_NULL)
strResult="";
else
strResult.Format("%s",var.pbstrVal);
AccessDlg.m_Display.InsertItem(i,"");
AccessDlg.m_Display.SetItemText(i,0,strSequence);
AccessDlg.m_Display.SetItemText(i,1,strTempValue);
AccessDlg.m_Display.SetItemText(i,1,strBaseValue);
AccessDlg.m_Display.SetItemText(i,1,strRealValue);
AccessDlg.m_Display.SetItemText(i,1,strUplimit);
AccessDlg.m_Display.SetItemText(i,1,strLowlimit);
AccessDlg.m_Display.SetItemText(i,1,strResult);
i++;
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
}
void CDemoDlg::ClearDatabase()
{
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Solartron.mdb","","",adModeUnknown);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open("DELETE * FROM Orbit",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void CDemoDlg::OnEmptyAccess()
{
ClearDatabase();
}
void CDemoDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
/*
if(m_OrbitServer.GetConnected())
{
m_OrbitServer.Disconnect();
m_OrbitServer.ReleaseDispatch();
}
*/
}
void CDemoDlg::DrawWave(CDC *pDC)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -