|
GPIO_TestDlg.cpp程序是这样的:
// GPIO_TestDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "GPIO_Test.h"
#include "GPIO_TestDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define IO_CTL_GPIO_1_ON 0x01
#define IO_CTL_GPIO_2_ON 0x02
#define IO_CTL_GPIO_3_ON 0x03
#define IO_CTL_GPIO_4_ON 0x04
#define IO_CTL_GPIO_ALL_ON 0x05
#define IO_CTL_GPIO_1_OFF 0x06
#define IO_CTL_GPIO_2_OFF 0x07
#define IO_CTL_GPIO_3_OFF 0x08
#define IO_CTL_GPIO_4_OFF 0x09
#define IO_CTL_GPIO_ALL_OFF 0x0a
// CGPIO_TestDlg 对话框
CGPIO_TestDlg::CGPIO_TestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGPIO_TestDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CGPIO_TestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CGPIO_TestDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_LED1_ON, &CGPIO_TestDlg::OnBnClickedLed1On)
ON_BN_CLICKED(IDC_LED2_ON, &CGPIO_TestDlg::OnBnClickedLed2On)
ON_BN_CLICKED(IDC_LED3_ON, &CGPIO_TestDlg::OnBnClickedLed3On)
ON_BN_CLICKED(IDC_LED4_ON, &CGPIO_TestDlg::OnBnClickedLed4On)
ON_BN_CLICKED(IDC_ALL_ON, &CGPIO_TestDlg::OnBnClickedAllOn)
ON_BN_CLICKED(IDC_LED1_OFF, &CGPIO_TestDlg::OnBnClickedLed1Off)
ON_BN_CLICKED(IDC_LED2_OFF, &CGPIO_TestDlg::OnBnClickedLed2Off)
ON_BN_CLICKED(IDC_LED3_OFF, &CGPIO_TestDlg::OnBnClickedLed3Off)
ON_BN_CLICKED(IDC_LED4_OFF, &CGPIO_TestDlg::OnBnClickedLed4Off)
ON_BN_CLICKED(IDC_ALL_OFF, &CGPIO_TestDlg::OnBnClickedAllOff)
END_MESSAGE_MAP()
// CGPIO_TestDlg 消息处理程序
BOOL CGPIO_TestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
gpiodriver=CreateFile(L"GIO1:",GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,NULL );
if(!gpiodriver)
MessageBox(L"打开GPIO设备失败!");
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CGPIO_TestDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
if (AfxIsDRAEnabled())
{
DRA::RelayoutDialog(
AfxGetResourceHandle(),
this->m_hWnd,
DRA::GetDisplayMode() != DRA::Portrait ?
MAKEINTRESOURCE(IDD_GPIO_TEST_DIALOG_WIDE) :
MAKEINTRESOURCE(IDD_GPIO_TEST_DIALOG));
}
}
#endif
void CGPIO_TestDlg::OnBnClickedLed1On()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_1_ON, NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(255,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,10,117,22);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedLed2On()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_2_ON,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(255,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,37,117,49);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedLed3On()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_3_ON,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(255,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,64,117,76);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedLed4On()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_4_ON,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(255,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,91,117,103);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedAllOn()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_ALL_ON,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(255,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,10,117,22);
pDC->Ellipse(105,37,117,49);
pDC->Ellipse(105,64,117,76);
pDC->Ellipse(105,91,117,103);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedLed1Off()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_1_OFF,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(0,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,10,117,22);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedLed2Off()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_2_OFF,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(0,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,37,117,49);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedLed3Off()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_3_OFF,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(0,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,64,117,76);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedLed4Off()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_4_OFF,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(0,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,97,117,103);
pDC->SelectObject(pOldBrush);
delete pDC;
}
void CGPIO_TestDlg::OnBnClickedAllOff()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = new CClientDC(this);
CBrush brush;
DeviceIoControl(gpiodriver,IO_CTL_GPIO_ALL_OFF,NULL,0,NULL,0,NULL,NULL);
//下面绘制一个圆来表示灯亮和灭。
brush.CreateSolidBrush(RGB(0,0,0));
CBrush *pOldBrush = pDC->SelectObject(&brush);
pDC->Ellipse(105,10,117,22);
pDC->Ellipse(105,37,117,49);
pDC->Ellipse(105,64,117,76);
pDC->Ellipse(105,91,117,103);
pDC->SelectObject(pOldBrush);
delete pDC;
}
生产解决方案,调试后的 效果图 是这样的:
,
没有LED1 on,LED1 off,LED2 on,LED2 off,LED3 on,LED3 off,LED4 on,LED4 off,All on,All off 按钮界面。。。
忘解决啊
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|