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

📄 atmeasureview.cpp

📁 串口应变采集系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//                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 + -