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

📄 waveform.cpp

📁 有关树WDM 驱动的编程.里面包含了许多实例,学习硬件的可以参考哦
💻 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 + -