adwaveview.cpp

来自「用于数据采集分析的对话框界面」· C++ 代码 · 共 176 行

CPP
176
字号
// ADWaveView.cpp : implementation file
//

#include "stdafx.h"
#include "CAITest.h"
#include "ADWaveView.h"
#include "CAITestDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

const int width= 320;
const int high= 180;

extern CCAITestApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CADWaveView

IMPLEMENT_DYNCREATE(CADWaveView, CView)

CADWaveView::CADWaveView()
{
	m_Drawflag = false;
	//m_xMin=-100;
	//m_xMax=100;
	//m_size = 200;*/
	m_xMin=-180;
	m_xMax=540;
	
	m_xMinHeat=-180;
	m_xMaxHeat=180;

	m_size =theApp.m_Stand.m_DABoard.GetReadSizeWords(); //1950;
	//图示标记
	m_yTitle[0] = "缸内压力";
	m_yTitle[1] = "放热率";
	m_yTitle[2] = "压力升高率";
	m_yTitle[3] = "质量燃烧";
}

CADWaveView::~CADWaveView()
{
}


BEGIN_MESSAGE_MAP(CADWaveView, CView)
	//{{AFX_MSG_MAP(CADWaveView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CADWaveView drawing

void CADWaveView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
	int i= 0;

	if (!m_Drawflag) 
	{
		CRect rect;

		for(i=0;i<4;i++)
		{	
			//1图
			rect.left =20; 
			rect.top = 10+(i/2)*(10+high);
			rect.right = rect.left+width;
			rect.bottom=rect.top+high;

			m_Graphic[i].Create(pDC,rect,this);
			switch (i)
			{
			case 0:
				m_Graphic[i].Initialize(RGB(0, 128, 0),RGB(0,0,0),
						RGB(0,255,128),RGB(190,190,190),
						"曲轴转角(CA)",m_yTitle[i],m_xMin,m_xMax,0,50);
				break;
			case 2:
				m_Graphic[i].Initialize(RGB(0, 128, 0),RGB(0,0,0),
						RGB(0,255,128),RGB(190,190,190),
						"曲轴转角(CA)",m_yTitle[i],m_xMin,m_xMax,-1,1);
		}
			m_Graphic[i].Draw();
			//2图
			rect.left =rect.left+width+40; 
			rect.top = rect.top;
			rect.right = rect.left+width;
			rect.bottom=rect.top+high;

			m_Graphic[i+1].Create(pDC,rect,this);
			switch (i+1)
			{
			case 1:
				m_Graphic[i+1].Initialize(RGB(0, 128, 0),RGB(0,0,0),
						RGB(0,255,128),RGB(190,190,190),
						"曲轴转角(CA)",m_yTitle[i+1],m_xMinHeat,m_xMaxHeat,0,100);
				break;
			case 3:
				m_Graphic[i+1].Initialize(RGB(0, 128, 0),RGB(0,0,0),
						RGB(0,255,128),RGB(190,190,190),
						"曲轴转角(CA)",m_yTitle[i+1],m_xMinHeat,m_xMaxHeat,0,1);
				break;
			}
			m_Graphic[i+1].Draw();
			i++;
		}
		m_Drawflag = true;
		
	}
	else
	{	
		CCAITestDoc* pDoc;
		pDoc = (CCAITestDoc*)GetDocument();

		pDoc->GetADInit(m_IVC,m_P0,
				m_TDC,m_TDCoffSet);

		int sizeBegin=m_TDC-500,sizeEnd=sizeBegin+2000;
		for(i=0;i<4;i++)
		{	
			// 通知数据处理线程,正在绘制波形,
			//请不要往DrawBuffer中填充新数据
			theApp.m_bDrawing = TRUE;
			switch(i){
				case 0:
					m_Graphic[i].Draw(&pDoc->m_Buffer[i][0],
						sizeBegin,sizeEnd);//m_size200
					break;
				case 1:
					m_Graphic[i].Draw(&pDoc->m_Buffer[i][0],
						sizeBegin,sizeBegin+1000);//m_size200sizeBegin+360
					break;
				case 2:
					m_Graphic[i].Draw(&pDoc->m_Buffer[i][0],
						sizeBegin,sizeEnd);//m_size200
					break;
				case 3:
					m_Graphic[i].Draw(&pDoc->m_Buffer[i][0],
						sizeBegin,sizeBegin+1000);//m_size200sizeEnd
					break;
			}
			theApp.m_bDrawing = FALSE;
		}
	}
}


void CADWaveView::refresh()
{
	CWindowDC dc(this);	
	OnDraw(&dc);
}
/////////////////////////////////////////////////////////////////////////////
// CADWaveView diagnostics

#ifdef _DEBUG
void CADWaveView::AssertValid() const
{
	CView::AssertValid();
}

void CADWaveView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CADWaveView message handlers

⌨️ 快捷键说明

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