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

📄 master.cpp

📁 有关树WDM 驱动的编程.里面包含了许多实例,学习硬件的可以参考哦
💻 CPP
字号:
// Master.cpp : implementation file
//

#include "stdafx.h"
#include "pctest.h"
#include "Master.h"
#include "adc.h"
#include "address.h"
#include "EditEx.h"
#include <stdlib.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CPctestApp theApp;
extern HANDLE	hDevice;
 HANDLE	hDevice3;
extern PCHAR DynVxDName;
extern PCHAR DMAVxDName;
/////////////////////////////////////////////////////////////////////////////
// CMaster dialog


CMaster::CMaster(CWnd* pParent /*=NULL*/)
	: CDialog(CMaster::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMaster)
	m_select_way = -1;
	//}}AFX_DATA_INIT
	m_range_d=4;
	m_d1=0x0ff;
}


void CMaster::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMaster)
	DDX_Control(pDX, IDC_EDIT2, m_datedel);
	DDX_Control(pDX, IDC_EDIT1, m_datescr);
	DDX_Radio(pDX, IDC_RADIO3, m_select_way);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMaster, CDialog)
	//{{AFX_MSG_MAP(CMaster)
	ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
	ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
	ON_BN_CLICKED(IDC_BUTTON1, OnSend)
	ON_BN_CLICKED(IDC_BUTTON2, OnRead)
	ON_BN_CLICKED(IDC_RADIO5, OnRadio5)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMaster message handlers

BOOL CMaster::OnInitDialog() 
{
	CDialog::OnInitDialog();
		m_datescr. m_pData= (LPBYTE)malloc(m_d1);
	m_datescr.m_length=m_d1;
m_datescr.m_bUpdate=FALSE;
	m_datescr.m_bShowAddress=TRUE;
	m_datescr.m_bShowHex=TRUE;
	// TODO: Add extra initialization here
    m_datedel. m_pData= (LPBYTE)malloc(m_d1);
	m_datedel.m_length=m_d1;
	m_datedel.m_bShowAddress=FALSE;
	m_datedel.m_bShowHex=FALSE;
	m_select_way = -1;
	UpdateData(FALSE);
	 if(hDevice==NULL)
	{
	hDevice = CreateFile(DMAVxDName, 0,0,0,
                        CREATE_NEW, 
                        FILE_FLAG_DELETE_ON_CLOSE,
                        0);
	if (hDevice == INVALID_HANDLE_VALUE)
	{
		AfxMessageBox("请检查板卡和驱动程序");
		CDialog::OnCancel();
		return FALSE;
	}

	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

int CMaster::DoModal() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DoModal();
}
void CMaster::OnCancel()
{
}


void CMaster::OnRadio4() 
{
	// TODO: Add your control notification handler code here
	BYTE m_b=0xff;
	for(long x=0;x<m_d1;x++)
	{
		m_datescr.m_pData[x] = m_b;
	}m_datescr.m_bUpdate=TRUE;
		m_datescr.m_bShowAddress=TRUE;
	m_datescr.m_bShowHex=TRUE;
	m_datescr.SetScrollPos(SB_VERT,0);
            m_datescr.Invalidate ();
}

void CMaster::OnRadio3() 
{
	// TODO: Add your control notification handler code here
	
	BYTE m_a=0x0;
	for(long x=0;x<m_d1;x++)
	{
	m_datescr.m_pData[x] = m_a;
	}m_datescr.m_bUpdate=TRUE;
		m_datescr.m_bShowAddress=TRUE;
	m_datescr.m_bShowHex=TRUE;
	m_datescr.SetScrollPos(SB_VERT,0);
m_datescr.Invalidate ();


}

void CMaster::OnRadio5() 
{
	for(long x=0;x<m_d1;x++)
	{
		BYTE a=(BYTE)rand();
       	m_datescr.m_pData[x] = a;
	}
	m_datescr.m_bUpdate=TRUE;
		m_datescr.m_bShowAddress=TRUE;
	m_datescr.m_bShowHex=TRUE;
        m_datescr.Invalidate ();
	
}

void CMaster::OnOK() 
{
	// TODO: Add extra validation here
if(hDevice!=NULL)
	{
	CloseHandle( hDevice);
	hDevice=NULL;
	}

	CDialog::OnOK();
}


void CMaster::OnSend() 
{
	// TODO: Add your control notification handler code here
//PBYTE c=(PBYTE)malloc(2048);
//memcpy(c,&m_datescr.m_pData [0],2048);	
BOOL status =  DeviceIoControl(
					hDevice, 
					DIOC_DMA_MASTER,
					&m_datescr.m_pData [0], 
					255,//m_datescr.m_length, 
					NULL, 
					0,
					NULL, 
 					NULL);
}

void CMaster::OnRead() 
{
	// TODO: Add your control notification handler code here
for(int x=0;x<4;x++)
{

BOOL status =  DeviceIoControl(
					hDevice, 
					DIOC_DMA_MASTER,
					&m_datedel.m_pData [0],
					255,//m_datedel.m_length, 
					NULL, 
					1,
					NULL, 
 					NULL);
if(status==TRUE)
{
	x=5;
	

}else{
	AfxMessageBox("DMA失败");
	return ;
}
}
    m_datedel.m_bUpdate=TRUE;
    m_datedel.m_bShowAddress=TRUE;
    m_datedel.m_bShowHex=TRUE;
    m_datedel.Invalidate ();
	m_datedel.SetScrollPos(SB_VERT,0);
}


⌨️ 快捷键说明

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