📄 visitaddressdlg.cpp
字号:
// VISITADDRESSDlg.cpp : implementation file
//
#include "stdafx.h"
#include "VISITADDRESS.h"
#include "VISITADDRESSDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CVISITADDRESSDlg dialog
CVISITADDRESSDlg::CVISITADDRESSDlg(CWnd* pParent /*=NULL*/)
: CDialog(CVISITADDRESSDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CVISITADDRESSDlg)
m_content = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CVISITADDRESSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVISITADDRESSDlg)
DDX_Text(pDX, IDC_CONTENT, m_content);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CVISITADDRESSDlg, CDialog)
//{{AFX_MSG_MAP(CVISITADDRESSDlg)
ON_BN_CLICKED(IDC_SET, OnSet)
ON_BN_CLICKED(IDC_BUTTONGPIO, OnButtongpio)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVISITADDRESSDlg message handlers
BOOL CVISITADDRESSDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
unsigned int ASCII2BINARY( unsigned int data)
{
switch( data )
{
case 0x30:return 0x0;break;
case 0x31:return 0x1;break;
case 0x32:return 0x2;break;
case 0x33:return 0x3;break;
case 0x34:return 0x4;break;
case 0x35:return 0x5;break;
case 0x36:return 0x6;break;
case 0x37:return 0x7;break;
case 0x38:return 0x8;break;
case 0x39:return 0x9;break;
case 0x41:return 0xa;break;
case 0x42:return 0xb;break;
case 0x43:return 0xc;break;
case 0x44:return 0xd;break;
case 0x45:return 0xe;break;
case 0x46:return 0xf;break;
case 0x61:return 0xa;break;
case 0x62:return 0xb;break;
case 0x63:return 0xc;break;
case 0x64:return 0xd;break;
case 0x65:return 0xe;break;
case 0x66:return 0xf;break;
default: return 0x0;break;
}
}
void CVISITADDRESSDlg::OnSet()
{
// TODO: Add your control notification handler code here
UpdateData(true);
TCHAR *ph_address = (TCHAR * )0x70800000;
TCHAR *vi_address;
int i,j;
i = m_content.GetLength();
if( i!=2)
{
MessageBox(L"You should write a data as 0xff mode");
return;
}
unsigned char tmp;
tmp =0x00;
for(j=0;j<i;j++)
{
tmp = tmp | ASCII2BINARY(m_content[j]);
if(j<i-1)
tmp <<=4;
}
vi_address = (TCHAR *)VirtualAlloc(
0,
4096,
MEM_RESERVE,
PAGE_READWRITE);
if (vi_address == NULL )
{
MessageBox(L"alloc wrong");
return;
}
BOOL test;
test = VirtualCopy(vi_address, (void *)(((LONG)(ph_address))/256), 4096,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
if( test == false )
{
MessageBox(L"Copy wrong!");
DWORD rlt = GetLastError();
return;
}
*vi_address =tmp;
MessageBox(L"Write Ok!");
}
void initGPIOpin()
{
unsigned int uiPADDR, uiPADR, uiPBDDR, uiPBDR;
uiPADDR = *GPIO_PADDR | 0x20;//0x20=00100000
*GPIO_PADDR = uiPADDR;
}
void delay( int dly)
{
int i;
for (;dly>0;dly--)
for(i=0;i<3000;i++);
}
void CVISITADDRESSDlg::OnButtongpio()
{
// TODO: Add your control notification handler code here
unsigned int uiPADDR, uiPADR, uiPBDDR, uiPBDR;
initGPIOpin();
uiPADR = *GPIO_PADR & 0xdf;//0xdf=11011111
*GPIO_PADR = uiPADR;
//delay(50);
//uiPADR = *GPIO_PADR | 0x20;//0x20=00100000
//*GPIO_PADR = uiPADR;
MessageBox(L"The gpio control Precedure is Ok!\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -