📄 atmeasureview.cpp
字号:
// AfxMessageBox("校验和错误");
pDoc->m_DataCOM.SetOutput(COleVariant(pDoc->m_SendRequireHEX));
CheckNum++;
/* if(CheckNum==20)
{
OnStop();
OnStart();
}*/
return ;
}
if(pDoc->GetWaveLen() != 0)
{
CheckNum=0;
CheckNumG++;
// AfxMessageBox("串口数据错误");
pDoc->m_DataCOM.SetOutput(COleVariant(pDoc->m_SendRequireHEX));
return;
}
if(pDoc->datacont<10)
{
CheckNumG=0;
pDoc->m_DataCOM.SetOutput(COleVariant(pDoc->m_SendRequireHEX));
Sleep(50);
pDoc->datacont++;
}
else if((pDoc->sndNum)<(pDoc->ChannelNum-1))
{
pDoc->SendTo51();
}
}
// pDoc->Pointpos(52);
}
void CAtmeasureView::OnTimer(UINT nIDEvent)
{
CAtmeasureDoc* pDoc = GetDocument();
CView::OnTimer(nIDEvent);
// pDoc->Pointpos(31);
if (pDoc->JobOK)
{
pDoc->JobOK=false;
pDoc->SendTo51();
pDoc->sndTempNum=0;
}
// pDoc->Pointpos(32);
}
int CAtmeasureView::show()
{
m_pSet->MoveFirst();
int i=0;
do
{
CString s;
s=m_pSet->m_time.Format("%Y-%m-%d %H:%M:%S");
m_ListCtrl.InsertItem(i,s,0);
s.Format("%d",m_pSet->m_channel);
m_ListCtrl.SetItemText(i,1,s);
s.Format("%d",m_pSet->m_point);
m_ListCtrl.SetItemText(i,2,s);
// s.Format("%.6f",m_pSet->m_wave);
// m_ListCtrl.SetItemText(i,3,s);
s.Format("%.2f",m_pSet->m_temp);
m_ListCtrl.SetItemText(i,3,s);
s.Format("%.1f",m_pSet->m_change);
m_ListCtrl.SetItemText(i,4,s);
s.Format("%.1f",m_pSet->m_pressure);
m_ListCtrl.SetItemText(i,5,s);
i++;
m_pSet->MoveNext();
} while(!m_pSet->IsEOF());
m_pSet->Close();
return i;
}
void CAtmeasureView::OnSize(UINT nType, int cx, int cy)
{
CRecordView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
hScrollPos=vScrollPos=0;
// InvalidateRect(NULL,TRUE);
}
void CAtmeasureView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar)
{
if(nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK)
vScrollPos = nPos;
// TODO: Add your message handler code here and/or call default
CRecordView::OnVScroll(nSBCode, nPos, pScrollBar);
Invalidate();
}
void CAtmeasureView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar)
{
if(nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK)
hScrollPos = nPos;
CRecordView::OnHScroll(nSBCode, nPos, pScrollBar);
Invalidate();
}
void CAtmeasureView::OnPaint()
{
/* CCyTime *ww;
ww=new CCyTime;
CTime time;
ww->Open();
ww->MoveLast();
ww->m_xs=time.GetCurrentTime();
ww->Update();
ww->Close();*/
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call C???::OnPaint() for painting messages
//确定顶底四点的坐标
CPoint LeftTop,LeftBottom,RightTop,RightBottom,CenterPoint;
LeftTop.x=480-50-hScrollPos-35;
LeftTop.y=150+45*2-vScrollPos;
LeftBottom.x=480-50-hScrollPos-35;
LeftBottom.y=600-vScrollPos;
RightTop.x=480-50+24*24-hScrollPos-35;
RightTop.y=150+45*2-vScrollPos;
RightBottom.x=480-50+24*24-hScrollPos-35;
RightBottom.y =600-vScrollPos;
// 画坐标
CPen pen1(PS_SOLID,1,RGB(115,146,115));
CPen * pOldPen1=dc.SelectObject(&pen1);
dc.MoveTo(LeftTop.x,LeftTop.y);
dc.LineTo(LeftBottom.x,LeftBottom.y);
dc.LineTo(RightBottom.x,RightBottom.y);
dc.SelectObject(pOldPen1);
CPen pen3(PS_SOLID,1,RGB(0,0,210));
CPen * pOldPen3=dc.SelectObject(&pen3);
dc.SelectObject(pOldPen3);
// 布网格
// CPen pen2(PS_SOLID,1,RGB(115/*135*/,146/*88*/,115/*199*/));
// CPen * pOldPen2=dc.SelectObject(&pen2);
CPen pen2(PS_SOLID,1,RGB(115,146,115));
CPen * pOldPen2=dc.SelectObject(&pen2);
dc.LineTo(RightBottom.x,RightBottom.y);
dc.SetTextColor(RGB(115,146,115));
int tem3 = atoi((LPCTSTR)m_tem3);
int tem4 = atoi((LPCTSTR)m_tem4);
int n=tem4-tem3;
for(int i=0;i<=24;i++)
{
dc.MoveTo(i*24+LeftTop.x,LeftTop.y);
dc.LineTo(i*24+LeftTop.x,LeftBottom.y);
}
for(int k=0;k<=n;k++)
{
CString c;
c.Format("%d",k+tem3);
if(k>=0&&k<10)
{
dc.Ellipse(k*24*24/n+LeftTop.x-2,LeftBottom.y-2,k*24*24/n+LeftTop.x+2,LeftBottom.y+2);
dc.TextOut(k*24*24/n+LeftTop.x-10,LeftBottom.y+15,c);//标注行坐标
}
else if(k>=10)
dc.Ellipse(k*24*24/n+LeftTop.x-2,LeftBottom.y-2,k*24*24/n+LeftTop.x+2,LeftBottom.y+2);
dc.TextOut(k*24*24/n+LeftTop.x-10,LeftBottom.y+15,c);
// dc.TextOut(k*24*24/n+LeftTop.x-14,LeftBottom.y+15,c);//标注行坐标
// dc.MoveTo(k*24+LeftTop.x,LeftTop.y);
// dc.LineTo(k*24+LeftTop.x,LeftBottom.y);
}
/* for(k=0;i<=n;k++)
{
CString c;
c.Format("%d",k+tem3);
if(k>=0&&k<10)
{
dc.Ellipse(k*24*24/n+LeftTop.x-2,LeftBottom.y-2,k*24*24/n+LeftTop.x+2,LeftBottom.y+2);
dc.TextOut(k*24*24/n+LeftTop.x-5,LeftBottom.y+15,c);//标注行坐标
}
else if(k>=10)
{
dc.Ellipse(k*24*24/n+LeftTop.x-2,LeftBottom.y-2,k*24*24/n+LeftTop.x+2,LeftBottom.y+2);
dc.TextOut(k*24*24/n+LeftTop.x-10,LeftBottom.y+15,c);//标注行坐标
}
}*/
dc.SetTextColor(RGB(115,146,115));
/////////////////////////////////////////////////////////
for(int j=0;j<=8;j++)
{
CString c;
double tem1 = atof((LPCTSTR)m_tem1);
double tem2 = atof((LPCTSTR)m_tem2);
c.Format(_T("%.1f"),(tem2-j*((tem2-tem1)/8)));
dc.TextOut(LeftTop.x-30,LeftTop.y+j*45,c); //众坐标
dc.MoveTo(LeftTop.x,LeftBottom.y-j*45);
dc.LineTo(RightTop.x,LeftBottom.y-j*45);
}
dc.SelectObject(pOldPen2);
//draw table
////////////////////////////////////
m_PointRoadCtrl.GetLBText(m_PointRoadCtrl.GetCurSel(),m_PointRoad);
m_PointNameCtrl.GetLBText(m_PointNameCtrl.GetCurSel(),m_PointData);
m_PointRoadCtrl0.GetLBText(m_PointRoadCtrl0.GetCurSel(),m_PointRoad0);
m_PointNameCtrl0.GetLBText(m_PointNameCtrl0.GetCurSel(),m_PointData0);
m_PointRoadCtrl1.GetLBText(m_PointRoadCtrl1.GetCurSel(),m_PointRoad1);
m_PointNameCtrl1.GetLBText(m_PointNameCtrl1.GetCurSel(),m_PointData1);
m_PointRoadCtrl2.GetLBText(m_PointRoadCtrl2.GetCurSel(),m_PointRoad2);
m_PointNameCtrl2.GetLBText(m_PointNameCtrl2.GetCurSel(),m_PointData2);
m_PointRoadCtrl3.GetLBText(m_PointRoadCtrl3.GetCurSel(),m_PointRoad3);
m_PointNameCtrl3.GetLBText(m_PointNameCtrl3.GetCurSel(),m_PointData3);
m_TimeData.GetCurrentTime();
m_TimeChoose.GetTime(m_TimeData);
m_Time=m_TimeData.Format("%Y-%m-%d");
// AfxMessageBox(m_Time);
long chl,pt,chl0,pt0,chl1,pt1,chl2,pt2,chl3,pt3;
chl = atol(m_PointRoad);
pt=atol(m_PointData);
chl0 = atol(m_PointRoad0);
pt0=atol(m_PointData0);
chl1 = atol(m_PointRoad1);
pt1=atol(m_PointData1);
chl2 = atol(m_PointRoad2);
pt2=atol(m_PointData2);
chl3 = atol(m_PointRoad3);
pt3=atol(m_PointData3);
if(chl>3)
{
MessageBox("第一行通道不存在,请重新选择!!!");
return;
}
if(pt>10)
{
MessageBox("第一行点不存在,请重新选择!!!");
return;
}
if(chl0>3)
{
MessageBox("第二行通道不存在,请重新选择!!!");
return;
}
if(pt0>10)
{
MessageBox("第二行点不存在,请重新选择!!!");
return;
}
if(chl1>3)
{
MessageBox("第三行通道不存在,请重新选择!!!");
return;
}
if(pt1>10)
{
MessageBox("第三行点不存在,请重新选择!!!");
return;
}
if(chl2>3)
{
MessageBox("第四行通道不存在,请重新选择!!!");
return;
}
if(pt2>10)
{
MessageBox("第四行点不存在,请重新选择!!!");
return;
}
if(chl3>3)
{
MessageBox("第五行通道不存在,请重新选择!!!");
return;
}
if(pt3>10)
{
MessageBox("第五行点不存在,请重新选择!!!");
return;
}
///////////////////////////判断点属性//////////////
CString flag;
int flag1,flag2,flag3,flag4,flag5;
CSysSet *ws;
ws=new CSysSet;
flag.Format("select * from [参数初始化] where channel_id=%d and point_id=%d",chl,pt);
ws->Open(AFX_DB_USE_DEFAULT_TYPE,flag);
flag1=ws->m_flag;
ws->Close();
flag.Format("select * from [参数初始化] where channel_id=%d and point_id=%d",chl0,pt0);
ws->Open(AFX_DB_USE_DEFAULT_TYPE,flag);
flag2=ws->m_flag;
ws->Close();
flag.Format("select * from [参数初始化] where channel_id=%d and point_id=%d",chl1,pt1);
ws->Open(AFX_DB_USE_DEFAULT_TYPE,flag);
flag3=ws->m_flag;
ws->Close();
flag.Format("select * from [参数初始化] where channel_id=%d and point_id=%d",chl2,pt2);
ws->Open(AFX_DB_USE_DEFAULT_TYPE,flag);
flag4=ws->m_flag;
ws->Close();
flag.Format("select * from [参数初始化] where channel_id=%d and point_id=%d",chl3,pt3);
ws->Open(AFX_DB_USE_DEFAULT_TYPE,flag);
flag5=ws->m_flag;
ws->Close();
if((flag1!=flag2)||(flag2!=flag3)||(flag3!=flag4)||(flag4!=flag5))
{
MessageBox("选择点的属性不同,请重新选择!!!");
return;
}
// Invalidate();
//////////////////////////////////////////
// switch(flag1)
// {
// case 0:
if(flag1==0)
// GetDlgItem(IDC_temp)->ShowWindow(SW_SHOW);
// GetDlgItem(IDC_CHANGE)->ShowWindow(SW_HIDE);
// GetDlgItem(IDC_temp)->ShowWindow(SW_SHOW);
// GetDlgItem(IDC_CHANGE)->ShowWindow(SW_HIDE);
// GetDlgItem(IDC_preasure)->ShowWindow(SW_HIDE);
{
if(m_pSet->IsOpen())
m_pSet->Close();
CString a,b,c,d,e;
// sql.Format("SELECT * FROM [测量值]");
// sql.Format("select * from [测量值] where time between #%s 00:00:00# and #%s 23:59:59# and channel=%d and point=%d order by time",m_Time,m_Time,chl,pt);
//////////////////////////////画第一条线/////////////////
a.Format("select * from [测量值] where time between #%s 00:00:00# and #%s 23:59:59# and channel=%d and point=%d",m_Time,m_Time,chl,pt);
m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,a);
if(m_pSet->GetRecordCount()==0)
return;
CPen cpen2(PS_SOLID,1,RGB(164,55,232));
dc.SelectObject(&cpen2);
m_pSet->MoveFirst();
//////////////////////////////////////////////////////
int HH,MM,SS;
CString cs;
cs=m_pSet->m_time.Format("%H");
HH=atoi(cs);
cs=m_pSet->m_time.Format("%M");
MM=atoi(cs);
cs=m_pSet->m_time.Format("%S");
SS=atoi(cs);
int tem1 = atoi((LPCTSTR)m_tem1);
int tem2 = atoi((LPCTSTR)m_tem2);
CenterPoint.x=LeftTop.x+((HH-tem3)*3600+MM*60+SS)*24*24/((tem4-tem3)*3600);
CenterPoint.y=LeftBottom.y-(m_pSet->m_temp-tem1)*(LeftBottom.y-LeftTop.y)/(tem2-tem1);
dc.MoveTo(CenterPoint.x,CenterPoint.y);
if((NumCtrl++)==0)
return;
while(!m_pSet->IsEOF())
{
m_pSet->MoveNext();
CString cs;
cs=m_pSet->m_time.Format("%H");
HH=atoi(cs);
cs=m_pSet->m_time.Format("%M");
MM=atoi(cs);
cs=m_pSet->m_time.Format("%S");
SS=atoi(cs);
if(!m_pSet->IsEOF())
{
CenterPoint.x=LeftTop.x+((HH-tem3)*3600+MM*60+SS)*24*24/((tem4-tem3)*3600);
CenterPoint.y=LeftBottom.y-(m_pSet->m_temp-tem1)*(LeftBottom.y-LeftTop.y)/(tem2-tem1);
dc.LineTo(CenterPoint.x,CenterPoint.y);
}
}
m_pSet->Close();
/////////////////////画第二条线//////////////
if(m_pSet->IsOpen())
m_pSet->Close();
b.Format("select * from [测量值] where time between #%s 00:00:00# and #%s 23:59:59# and channel=%d and point=%d ",m_Time,m_Time,chl0,pt0);
m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,b);
if(m_pSet->GetRecordCount()==0)
return;
CPen cpen4(PS_SOLID,1,RGB(164,55,100));
dc.SelectObject(&cpen4);
m_pSet->MoveFirst();
cs=m_pSet->m_time.Format("%H");
HH=atoi(cs);
cs=m_pSet->m_time.Format("%M");
MM=atoi(cs);
cs=m_pSet->m_time.Format("%S");
SS=atoi(cs);
////////////////////////////////////////////////////////
CenterPoint.x=LeftTop.x+((HH-tem3)*3600+MM*60+SS)*24*24/((tem4-tem3)*3600);
CenterPoint.y=LeftBottom.y-(m_pSet->m_temp-tem1)*(LeftBottom.y-LeftTop.y)/(tem2-tem1);
dc.MoveTo(CenterPoint.x,CenterPoint.y);
if((NumCtrl++)==0)
return;
while(!m_pSet->IsEOF())
{
m_pSet->MoveNext();
CString cs;
cs=m_pSet->m_time.Format("%H");
HH=atoi(cs);
cs=m_pSet->m_time.Format("%M");
MM=atoi(cs);
cs=m_pSet->m_time.Format("%S");
SS=atoi(cs);
if(!m_pSet->IsEOF())
{
CenterPoint.x=LeftTop.x+((HH-tem3)*3600+MM*60+SS)*24*24/((tem4-tem3)*3600);
CenterPoint.y=LeftBottom.y-(m_pSet->m_temp-tem1)*(LeftBottom.y-LeftTop.y)/(tem2-tem1);
dc.LineTo(CenterPoint.x,CenterPoint.y);
}
}
m_pSet->Close();
///////////////////////////画第三条线////////////////////
if(m_pSet->IsOpen())
m_pSet->Close();
c.Format("select * from [测量值] where time between #%s 00:00:00# and #%s 23:59:59# and channel=%d and point=%d ",m_Time,m_Time,chl1,pt1);
m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,c);
if(m_pSet->GetRecordCount()==0)
return;
CPen cpen5(PS_SOLID,1,RGB(0,55,100));
dc.SelectObject(&cpen5);
m_pSet->MoveFirst();
cs=m_pSet->m_time.Format("%H");
HH=atoi(cs);
cs=m_pSet->m_time.Format("%M");
MM=atoi(cs);
cs=m_pSet->m_time.Format("%S");
SS=atoi(cs);
//////////////////////////////////////////////////////////////////
CenterPoint.x=LeftTop.x+((HH-tem3)*3600+MM*60+SS)*24*24/((tem4-tem3)*3600);
CenterPoint.y=LeftBottom.y-(m_pSet->m_temp-tem1)*(LeftBottom.y-LeftTop.y)/(tem2-tem1);
dc.MoveTo(CenterPoint.x,CenterPoint.y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -