📄 master.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 + -