vc_ad_testview.cpp

来自「ad板数据采集程序」· C++ 代码 · 共 620 行

CPP
620
字号
// VC_AD_TESTView.cpp : implementation of the CVC_AD_TESTView class
//

#include "stdafx.h"
#include "VC_AD_TEST.h"

#include "VC_AD_TESTDoc.h"
#include "VC_AD_TESTView.h"
#include "VaribleDolg.h"
#include "MagicDlg.h"
#include "P180X.H"
#include "afxmt.H"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
Word TotalBoards=1;
int glcounter=0;
float V0[600]={0};
CEvent eventobject;
UINT ThreadProc(LPVOID ThreadParam)
{
	Word RetValue;
//	float v1[600]={0};

	int i=0;

		for(i=0;i<600;i++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));
		
		
			
				P180X_DelayUs(23);
				P180X_AdPolling(&V0[i]);
				glcounter=i;
			
		eventobject.SetEvent();
		
		}


return 1;
}
/////////////////////////////////////////////////////////////////////////////
// CVC_AD_TESTView
//UINT ThreadProc(LPVOID,ThreadParam);
IMPLEMENT_DYNCREATE(CVC_AD_TESTView, CView)

BEGIN_MESSAGE_MAP(CVC_AD_TESTView, CView)
	//{{AFX_MSG_MAP(CVC_AD_TESTView)
	ON_COMMAND(ID_VARIEBLES, OnVariebles)
	ON_COMMAND(ID_START, OnStart)
	ON_COMMAND(ID_MAGICCONFIG, OnMagicconfig)
	ON_COMMAND(ID_STARMAGICSAN, OnStarmagicsan)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVC_AD_TESTView construction/destruction

CVC_AD_TESTView::CVC_AD_TESTView()
{
	// TODO: add construction code here
     Word RetValue;

     RetValue = P180X_DriverInit(&TotalBoards);
	if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}
	for(int i=0;i<12;i++)
		channels[i]=false;
	m_samplerate=0;

}

CVC_AD_TESTView::~CVC_AD_TESTView()
{
}

BOOL CVC_AD_TESTView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CVC_AD_TESTView drawing

void CVC_AD_TESTView::OnDraw(CDC* pDC)
{
	CVC_AD_TESTDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	pDC->SetMapMode(MM_TEXT);
	CPen pen1(PS_SOLID,1,RGB(255,0,0));
	CPen *pOldPen=pDC->SelectObject(&pen1);

	pDC->MoveTo(50,300);
	pDC->LineTo(674,300);
	pDC->LineTo(664,305);
	pDC->MoveTo(674,300);
	pDC->LineTo(664,295);
	pDC->MoveTo(50,350);
	pDC->LineTo(50,50);
	pDC->LineTo(45,60);
	pDC->MoveTo(50,50);
	pDC->LineTo(55,60);
	

	pDC->SelectObject(pOldPen);


}

/////////////////////////////////////////////////////////////////////////////
// CVC_AD_TESTView printing

BOOL CVC_AD_TESTView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CVC_AD_TESTView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CVC_AD_TESTView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CVC_AD_TESTView diagnostics

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

void CVC_AD_TESTView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CVC_AD_TESTDoc* CVC_AD_TESTView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVC_AD_TESTDoc)));
	return (CVC_AD_TESTDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CVC_AD_TESTView message handlers

void CVC_AD_TESTView::OnVariebles() 
{
	// TODO: Add your command handler code here
	Word RetValue=8;
	
	RetValue=P180X_ActiveBoard(0);
	if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}
	CVaribleDolg dlg;
if(dlg.DoModal()==IDOK)

		
	switch(dlg.m_inputrange)
	{
	case 1:
		m_inputrange=5;
		break;
	case 2:
		m_inputrange=10;
		break;
	case 3:
		m_inputrange=1;
		break;

	}

	if(dlg.m_b00==true)
		channels[0]=true;
	if(dlg.m_b01==true)
		channels[1]=true;
	if(dlg.m_b02==true)
		channels[2]=true;
	if(dlg.m_b03==true)
		channels[3]=true;
	if(dlg.m_b04==true)
		channels[4]=true;

	m_samplerate=dlg.m_samplerate;

}

void CVC_AD_TESTView::OnStart() 
{
	// TODO: Add your command handler code here
	P180X_ClearScan();
 //   float V0[600]={0};
	float V1;
    Word Didata;
    Word dadata;
    Word RetValue; //, ret, cc
//	outport(wAddrCtrl,0x2000);



	if(channels[0])
	{
		RetValue  = P180X_SetChannelConfig(0, 0);    // +/- 5V range
		if (RetValue != 0)
       	
		{	
			MessageBox("It is wrong");
			return;
		} 
		P180X_DelayUs(23);               // delay 23 us settling time
		RetValue  = P180X_AdsPolling(V0,600);
		if (RetValue != 0)
     
		{	
			MessageBox("It is wrong");
			return;
		} 
		CClientDC dc(this);
		dc.SetMapMode(MM_TEXT);
		dc.TextOut(55,60,"电压+5v");


	//	AfxBeginThread(ThreadProc,0);


		for(int j=0;j<600;j++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));


				if(j==0)	
					dc.TextOut(50,300-V0[0]-10,"1");
				if (j>=glcounter);
				//停
				//	eventobject.Lock();
				dc.SetPixel(50+j,300-V0[j]*10,RGB(0,0,0));

		}




	//	AfxBeginThread(ThreadProc,0);
	
	}
	//int p;

	if(channels[1])
	{
		RetValue  = P180X_SetChannelConfig(1, 0);    // +/- 5V range
		if (RetValue != 0)
       	
		{	
			MessageBox("It is wrong");
			return;
		} 
		P180X_DelayUs(23);               // delay 23 us settling time
		RetValue  = P180X_AdsPolling(V0,600);
		if (RetValue != 0)
     
		{	
			MessageBox("It is wrong");
			return;
		} 
		CClientDC dc(this);
		dc.SetMapMode(MM_TEXT);
		dc.TextOut(55,60,"电压+5v");




		int j=0;

		for(int i=0;i<600;i++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));
		
			for(j=10;j>0;j--)
			{
				P180X_DelayUs(23);
				P180X_AdPolling(&V1);
				if(i==0&&j==10)	
					dc.TextOut(50,300-V1-10,"2");
				dc.SetPixel(50+i,300-V1*10,RGB(0,0,255));
			}
			Sleep(10);
		}

	
	}


	if(channels[3])
	{
		RetValue  = P180X_SetChannelConfig(3, 0);    // +/- 5V range
		if (RetValue != 0)
       	
		{	
			MessageBox("It is wrong");
			return;
		} 
		P180X_DelayUs(23);               // delay 23 us settling time
		RetValue  = P180X_AdsPolling(V0,600);
		if (RetValue != 0)
     
		{	
			MessageBox("It is wrong");
			return;
		} 
		CClientDC dc(this);
		dc.SetMapMode(MM_TEXT);
		dc.TextOut(55,60,"电压+5v");




		int j=0;

		for(int i=0;i<600;i++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));
		
			for(j=10;j>0;j--)
			{
				P180X_DelayUs(23);
				P180X_AdPolling(&V1);
				if(i==0&&j==10)	
					dc.TextOut(50,300-V1-10,"3");
				dc.SetPixel(50+i,300-V1*10,RGB(0,255,0));
			}
			Sleep(10);
		}

	
	}



	if(channels[4])
	{
		RetValue  = P180X_SetChannelConfig(4, 0);    // +/- 5V range
		if (RetValue != 0)
       	
		{	
			MessageBox("It is wrong");
			return;
		} 
		P180X_DelayUs(23);               // delay 23 us settling time
		RetValue  = P180X_AdsPolling(V0,600);
		if (RetValue != 0)
     
		{	
			MessageBox("It is wrong");
			return;
		} 
		CClientDC dc(this);
		dc.SetMapMode(MM_TEXT);
		dc.TextOut(55,60,"电压+5v");




		int j=0;

		for(int i=0;i<600;i++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));
		
			for(j=10;j>0;j--)
			{
				P180X_DelayUs(23);
				P180X_AdPolling(&V1);
				if(i==0&&j==10)	
					dc.TextOut(50,300-V1-10,"4");
				dc.SetPixel(50+i,300-V1*10,RGB(155,155,155));
			}
			Sleep(10);
		}

	
	}



	if(channels[5])
	{
		RetValue  = P180X_SetChannelConfig(5, 0);    // +/- 5V range
		if (RetValue != 0)
       	
		{	
			MessageBox("It is wrong");
			return;
		} 
		P180X_DelayUs(23);               // delay 23 us settling time
		RetValue  = P180X_AdsPolling(V0,600);
		if (RetValue != 0)
     
		{	
			MessageBox("It is wrong");
			return;
		} 
		CClientDC dc(this);
		dc.SetMapMode(MM_TEXT);
		dc.TextOut(55,60,"电压+5v");




		int j=0;

		for(int i=0;i<600;i++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));
		
			for(j=10;j>0;j--)
			{
				P180X_DelayUs(23);
				P180X_AdPolling(&V1);
				if(i==0&&j==10)	
					dc.TextOut(50,300-V1-0,"5");
				dc.SetPixel(50+i,300-V1*10,RGB(98,30,155));
			}
			Sleep(10);
		}

	
	}
}

void CVC_AD_TESTView::OnMagicconfig() 
{
	// TODO: Add your command handler code here
		Word RetValue=8;
	
	RetValue=P180X_ActiveBoard(0);
	if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}
	CMagicDlg dlg;
if(dlg.DoModal()==IDOK)

		
	switch(dlg.m_inputrange)
	{
	case 1:
		m_inputrange=5;
		break;
	case 2:
		m_inputrange=10;
		break;
	case 3:
		m_inputrange=1;
		break;

	}

/*	if(dlg.m_b00==true)
		channels[0]=true;
	if(dlg.m_b01==true)
		channels[1]=true;
	if(dlg.m_b02==true)
		channels[2]=true;
	if(dlg.m_b03==true)
		channels[3]=true;
	if(dlg.m_b04==true)
		channels[4]=true;*/

	m_samplerate=dlg.m_samplrate;
}

void CVC_AD_TESTView::OnStarmagicsan() 
{
	P180X_ClearScan();
   /* float V0[600]={0};
	float V1;
    Word Didata;
    Word dadata;*/
    Word RetValue;
	 Word Status;
  long int lLowAlarm;
   long int lHighAlarm;
	int i=0;
	RetValue=P180X_AddToScan(0, 0, 1, 0, 0, 0);
	if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}


//	voa0=new float [1000];
//	voa1=new float [1000];
   for (i=0; i<=1000; i++)
   {
        	voa0[i] = 0;
        voa1[i] = 0;
   }


	RetValue = P180X_SaveScan(0, voa0);
	if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}


	RetValue = P180X_AddToScan(2, 0, 1, 0, 0, 0); 
		if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}

RetValue = P180X_SaveScan(1, voa1);
		if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}

RetValue = P180X_StartScan(m_samplerate, 1000,0);
		if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}

   while (true)
   {
        P180X_ReadScanStatus( &Status, (DWORD *)&lLowAlarm, (DWORD *)&lHighAlarm );
        if (Status > 1)
           break;
        Sleep(10);
   }

   RetValue=P180X_StopMagicScan();
		if(RetValue!=0)
	{	
		MessageBox("It is wrong");
		return;
	}
		
		CClientDC dc(this);
		dc.SetMapMode(MM_TEXT);
		dc.TextOut(55,60,"电压+5v");
		//ComputeRealValue(1,voa0[9])

		int j=0;
	

		for(i=0;i<600;i++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));
		
			for(j=10;j>0;j--)
			{
				
				
				if(i==0&&j==10)	
					dc.TextOut(50,300-voa0[0]-10,"1");
				dc.SetPixel(50+i,300-voa0[i]*10,RGB(98,30,155));
			}
			Sleep(10);
		}


		for(i=0;i<600;i++)
		
		{
	//	dc.SetPixel(50+i,300-V0[i]*10,RGB(0,0,255));
		
			for(j=10;j>0;j--)
			{

				if(i==0&&j==10)	
					dc.TextOut(50,300-voa1[0]-10,"2");
				dc.SetPixel(50+i,300-voa1[i]*10,RGB(98,30,0));
			}
			Sleep(10);
		}

//delete []voa0;
//delete []voa1;
}

⌨️ 快捷键说明

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