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 + -
显示快捷键?