📄 waveform.cpp
字号:
// waveform.cpp : implementation file
//
#include "stdafx.h"
#include "pctest.h"
#include "waveform.h"
#include "adc.h"
#include "address.h"
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Cwaveform dialog
extern HANDLE hDevice;
extern HANDLE hDevice1;
extern PCHAR DynVxDName;
PCHAR DACVxDName="\\\\.\\query.VXD";
extern PCHAR IoVxDName;
Cwaveform::Cwaveform(CWnd* pParent /*=NULL*/)
: CDialog(Cwaveform::IDD, pParent)
{
//{{AFX_DATA_INIT(Cwaveform)
m_wavwform = -1;
//}}AFX_DATA_INIT
m_ber=0;
m_tr=FALSE;
hDevice1=NULL;
hDevice=NULL;
}
void Cwaveform::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Cwaveform)
DDX_Radio(pDX, IDC_RADIO1, m_wavwform);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Cwaveform, CDialog)
//{{AFX_MSG_MAP(Cwaveform)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Cwaveform message handlers
void Cwaveform::OnCancel()
{
}
BOOL Cwaveform::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_wavwform=0;
int m_x=4;
for(int x=0;x<1000;x++)
{
BYTE md;
if(x<500)
{
if(x%2==0)
{
m_x=m_x+1;
m_a1.Add(m_x);
}else{
m_a1.Add(m_x);
}
}else{
if(x%2==0)
{
m_x=m_x-1;
m_a1.Add(m_x);
}else{
m_a1.Add (m_x);
}
}
if(x<500)
{
m_a2.Add(255);
}else{
m_a2.Add(0);
}
md=100*sin((double)(0.062*x))+127;
m_a3.Add((BYTE)md);
}
if(hDevice1==NULL)
{
hDevice1 = CreateFile(DynVxDName, 0,0,0,
CREATE_NEW,
FILE_FLAG_DELETE_ON_CLOSE,
0);
if (hDevice1 == INVALID_HANDLE_VALUE)
{
AfxMessageBox("请检查板卡和驱动程序");
CDialog::OnCancel();
return FALSE;
}
m_p=(pci_cfg*)malloc(sizeof(pci_cfg));
BOOL status = DeviceIoControl(
hDevice1,
DIOC_PCICFG,
m_p,
0,
NULL,
0,
NULL,
NULL);
hDevice = CreateFile(DACVxDName, 0,0,0,
CREATE_NEW,
FILE_FLAG_DELETE_ON_CLOSE,
0);
if (hDevice == INVALID_HANDLE_VALUE)
{
AfxMessageBox("请检查板卡和驱动程序");
return FALSE;
}
}
Sampling=(Query_D*)malloc(sizeof(Query_D));
Sampling->BUFFER_SIZE=1000;
Sampling->DAC_ADDRESS=IC_DC0832;
Sampling->KEY_ADDRESS=IC_DC0832_2;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Cwaveform::OnRadio1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
PBYTE c=&m_a1[0];
memcpy(c,&m_a1[0],1000);
Sampling->DATA_BUFFER=c;
BOOL status = DeviceIoControl(
hDevice,
DIOC_DAC,
m_p,
0,
Sampling,
0,
NULL,
NULL);
}
void Cwaveform::OnRadio3()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
PBYTE c=&m_a3[0];
Sampling->DATA_BUFFER=c;
BOOL status = DeviceIoControl(
hDevice,
DIOC_DAC,
m_p,
0,
Sampling,
0,
NULL,
NULL);
}
void Cwaveform::OnOK()
{
// TODO: Add extra validation here
if(hDevice!=NULL)
{
CloseHandle( hDevice);
hDevice=NULL;
}
if(hDevice1==NULL)
{
CloseHandle( hDevice1);
hDevice1=NULL;
}
m_a1.RemoveAll();
m_a2.RemoveAll ();
m_a3.RemoveAll ();
CDialog::OnOK();
}
void Cwaveform::OnButton1()
{
// TODO: Add your control notification handler code here
switch(m_wavwform)
{
case 0:
OnRadio1();
break;
case 2:
OnRadio3();
break;
}
}
BOOL Cwaveform::SetIO(int a,int x)
{
switch(a)
{
case 1:
{
DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_DC0832_2,
NULL,
m_a1[x],
NULL,
NULL);
}
break;
case 2:
{
DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_DC0832,
NULL,
m_a2[x],
NULL,
NULL);
DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_DC0832_2,
NULL,
m_a2[x],
NULL,
NULL);
}
break;
case 3:
{
DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_DC0832,
NULL,
m_a3[x],
NULL,
NULL);
DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_DC0832_2,
NULL,
m_a3[x],
NULL,
NULL);
}
break;
}
if(m_tr==FALSE)
{
return TRUE;
}else{
return FALSE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -