?? gpiobeepdlg.cpp
字號:
// GPIOBeepDlg.cpp : implementation file
//
#include "stdafx.h"
#include "GPIOBeep.h"
#include "GPIOBeepDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGPIOBeepDlg dialog
CGPIOBeepDlg::CGPIOBeepDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGPIOBeepDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CGPIOBeepDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CGPIOBeepDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGPIOBeepDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGPIOBeepDlg, CDialog)
//{{AFX_MSG_MAP(CGPIOBeepDlg)
ON_BN_CLICKED(IDC_OPEN_PIO1, OnOpenPio1)
ON_BN_CLICKED(IDC_CLOSE_PIO1, OnClosePio1)
ON_BN_CLICKED(IDC_BEEP_ON, OnBeepOn)
ON_BN_CLICKED(IDC_BEEP_OFF, OnBeepOff)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGPIOBeepDlg message handlers
BOOL CGPIOBeepDlg::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
}
/***************************************
實 驗 代 碼
****************************************/
// 包含命令碼頭文件
#include "gpio.h"
// 文件句柄
HANDLE hFile = INVALID_HANDLE_VALUE;
// "打開GPIO驅動" 按鍵單擊事件代碼
void CGPIOBeepDlg::OnOpenPio1()
{
BOOL ret;
BYTE pinnum = 10;
// 打開 GPIO 驅動
hFile = CreateFile(TEXT("PIO1:"), GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, 0, 0);
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(_T("打開 GPIO 驅動失敗!"));
return;
}
else
MessageBox(_T("打開 GPIO 驅動成功!"));
// 設置 GPH10 為輸出口
ret = ::DeviceIoControl(hFile, IOCTL_GPH_SET_PIN_OUT, &pinnum, 1, NULL, 0, NULL, NULL);
if (ret != TRUE)
{
OnClosePio1();
MessageBox(_T("設置 GPH10 引腳輸出失敗!"));
return;
}
CButton *pOpenButton = (CButton*)GetDlgItem(IDC_OPEN_PIO1); /* 取得控件指針 */
CButton *pCloseButton = (CButton*)GetDlgItem(IDC_CLOSE_PIO1);
pOpenButton->EnableWindow(FALSE); /* 禁止按鍵 */
pCloseButton->EnableWindow(TRUE); /* 使能按鍵 */
}
// "關閉GPIO驅動" 按鍵單擊事件代碼
void CGPIOBeepDlg::OnClosePio1()
{
if (hFile != INVALID_HANDLE_VALUE)
{
CloseHandle(hFile);
hFile = INVALID_HANDLE_VALUE;
}
CButton *pOpenButton = (CButton*)GetDlgItem(IDC_OPEN_PIO1); /* 取得控件指針 */
CButton *pCloseButton = (CButton*)GetDlgItem(IDC_CLOSE_PIO1);
pOpenButton->EnableWindow(TRUE); /* 使能按鍵 */
pCloseButton->EnableWindow(FALSE); /* 禁止按鍵 */
}
// "蜂鳴器蜂鳴" 按鍵單擊事件代碼
void CGPIOBeepDlg::OnBeepOn()
{
BOOL ret;
BYTE pinnum = 10;
// 置 GPH10 為低電平, 蜂鳴器蜂鳴
ret = ::DeviceIoControl(hFile, IOCTL_GPH_CLR_PIN, &pinnum, 1, NULL, 0, NULL, NULL);
if (ret != TRUE)
MessageBox(_T("設置 GPH10 低電平失敗!"));
}
// "禁止蜂鳴器蜂鳴" 按鍵單擊事件代碼
void CGPIOBeepDlg::OnBeepOff()
{
BOOL ret;
BYTE pinnum = 10;
// 置 GPH10 為高電平, 禁止蜂鳴器蜂鳴
ret = ::DeviceIoControl(hFile, IOCTL_GPH_SET_PIN, &pinnum, 1, NULL, 0, NULL, NULL);
if (ret != TRUE)
MessageBox(_T("設置 GPH10 高電平失敗!"));
}
// 對話框關閉退出處理函數
void CGPIOBeepDlg::OnDestroy()
{
CDialog::OnDestroy();
OnClosePio1(); /* 關閉 GPIO 驅動 */
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -