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

📄 serkey.cpp

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

#include "stdafx.h"
#include "pctest.h"
#include "serkey.h"
#include "adc.h"
#include "address.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Cserkey dialog
extern HANDLE	hDevice;
HANDLE	hDevice1;
extern  PCHAR mDynVxDName ;
Cserkey::Cserkey(CWnd* pParent /*=NULL*/)
	: CDialog(Cserkey::IDD, pParent)
{
	//{{AFX_DATA_INIT(Cserkey)
	m_editchar = _T("");
	//}}AFX_DATA_INIT
	m_display_bit=0;
	m_key_number=-1;
	m_bitnum=-1;
	m_display=TRUE;
	m_d=NULL;
	 m_d=(p_data*)malloc(sizeof(p_data));
	for(int z=0;z<4;z++)
	{
	  m_d->work[z]=0xff;
	}

}


void Cserkey::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Cserkey)
	DDX_Control(pDX, IDC_BUTTON16, m_bbf);
	DDX_Control(pDX, IDC_BUTTON15, m_bbe);
	DDX_Control(pDX, IDC_BUTTON14, m_bbd);
	DDX_Control(pDX, IDC_BUTTON13, m_bbc);
	DDX_Control(pDX, IDC_BUTTON12, m_bbb);
	DDX_Control(pDX, IDC_BUTTON11, m_bba);
	DDX_Control(pDX, IDC_BUTTON10, m_bb9);
	DDX_Control(pDX, IDC_BUTTON9, m_bb8);
	DDX_Control(pDX, IDC_BUTTON8, m_bb7);
	DDX_Control(pDX, IDC_BUTTON7, m_bb6);
	DDX_Control(pDX, IDC_BUTTON6, m_bb5);
	DDX_Control(pDX, IDC_BUTTON5, m_bb4);
	DDX_Control(pDX, IDC_BUTTON4, m_bb3);
	DDX_Control(pDX, IDC_BUTTON3, m_bb2);
	DDX_Control(pDX, IDC_BUTTON2, m_bb1);
	DDX_Control(pDX, IDC_BUTTON1, m_bb0);
	DDX_Text(pDX, IDC_EDIT1, m_editchar);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Cserkey, CDialog)
	//{{AFX_MSG_MAP(Cserkey)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_USER+0x100,Zonebutton)
	ON_MESSAGE(WM_USER+0x101,Onebutton)
	ON_MESSAGE(WM_USER+0x102,Twobutton)
	ON_MESSAGE(WM_USER+0x103,Threebutton)
	ON_MESSAGE(WM_USER+0x104,Fourbutton)
	ON_MESSAGE(WM_USER+0x105,Fivebutton)
	ON_MESSAGE(WM_USER+0x106,Sixbutton)
	ON_MESSAGE(WM_USER+0x107,Sevenbutton)
	ON_MESSAGE(WM_USER+0x108,Eightbutton)
	ON_MESSAGE(WM_USER+0x109,Ninebutton)
	ON_MESSAGE(WM_USER+0x10a,Abutton)
	ON_MESSAGE(WM_USER+0x10b,Bbutton)
	ON_MESSAGE(WM_USER+0x10c,Cbutton)
	ON_MESSAGE(WM_USER+0x10d,Dbutton)
	ON_MESSAGE(WM_USER+0x10e,Ebutton)
	ON_MESSAGE(WM_USER+0x10f,Fbutton)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cserkey message handlers
void Cserkey::OnCancel()
{CDialog::OnCancel();
}
BOOL Cserkey::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_edit.SubclassDlgItem(IDC_EDIT1, this );
	COLORREF bk = RGB(0, 0, 0);
	 m_edit.bkColor( bk );
	 m_edit.textColor( RGB(255,0,0) );
	  m_edit.setFont( 80 );
	
	  UpdateData(FALSE);
      //m_p=(pci_cfg*)malloc(sizeof(pci_cfg));
		if(hDevice==NULL)
	{
	hDevice = CreateFile(mDynVxDName, 0,0,0,
                        CREATE_NEW, 
                        FILE_FLAG_DELETE_ON_CLOSE,
                        0);
	if (hDevice == INVALID_HANDLE_VALUE)
	{
		AfxMessageBox("请检查板卡和驱动程序");
		CDialog::OnCancel();
		return FALSE;
	}
		W_AD=(Write_AD*)malloc(sizeof(Write_AD));
	W_AD->Address=IC_8255_type;
	W_AD->Data=0x81;
           //C 端口 上部out ,last in,A in
	BOOL status =  DeviceIoControl(
					hDevice, 
					IOCTL_IOW,
					W_AD, 
					sizeof(W_AD)+1, 
					NULL, 
					0,
					&nRet, 
 					NULL);
		W_AD->Data=0x0ff;
		W_AD->Address=IC_8255_A;
DeviceIoControl(
					hDevice, 
					IOCTL_IOW,
					W_AD, 
					sizeof(W_AD)+1, 
					NULL, 
					0,
					&nRet, 
 					NULL);
	SetTimer(1,50,NULL);
		}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void Cserkey::Zonebutton(WPARAM wparam,LPARAM lParam)
{
	m_bb0.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb0.SendMessage(BM_SETSTATE,0,0);
	m_editchar="0";
	UpdateData(FALSE);
	data=0x00;
	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Onebutton(WPARAM wparam,LPARAM lParam)
{
	m_bb1.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb1.SendMessage(BM_SETSTATE,0,0);
	m_editchar="1";
	UpdateData(FALSE);
data=0x01;

	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Twobutton(WPARAM wparam,LPARAM lParam)
{
    m_bb2.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb2.SendMessage(BM_SETSTATE,0,0);
	m_editchar="2";
	UpdateData(FALSE);
data=0x02;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Fourbutton(WPARAM wparam,LPARAM lParam)
{
	m_bb4.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb4.SendMessage(BM_SETSTATE,0,0);
	m_editchar="4";
	UpdateData(FALSE);
data=0x04;
	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Fivebutton(WPARAM wparam,LPARAM lParam)
{
	m_bb5.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb5.SendMessage(BM_SETSTATE,0,0);
	m_editchar="5";
	UpdateData(FALSE);
	data=0x05;
	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Sixbutton(WPARAM wparam,LPARAM lParam)
{
	m_bb6.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb6.SendMessage(BM_SETSTATE,0,0);
	m_editchar="6";
	UpdateData(FALSE);
	data=0x06;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Sevenbutton(WPARAM wparam,LPARAM lParam)
{
	m_bb7.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb7.SendMessage(BM_SETSTATE,0,0);
	m_editchar="7";
	UpdateData(FALSE);
	data=0x07;
	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Eightbutton(WPARAM wparam,LPARAM lParam)
{
	m_bb8.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb8.SendMessage(BM_SETSTATE,0,0);
	m_editchar="8";
	UpdateData(FALSE);
	data=0x08;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Threebutton(WPARAM wparam,LPARAM lParam)
{
	m_bb3.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb3.SendMessage(BM_SETSTATE,0,0);
	m_editchar="3";
	UpdateData(FALSE);
	data=0x03;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Ninebutton(WPARAM wparam,LPARAM lParam)
{
	m_bb9.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bb9.SendMessage(BM_SETSTATE,0,0);
	m_editchar="9";
	UpdateData(FALSE);
	data=0x09;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Abutton(WPARAM wparam,LPARAM lParam)
{
	m_bba.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bba.SendMessage(BM_SETSTATE,0,0);
	m_editchar="A";
	UpdateData(FALSE);
	data=0x0a;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Bbutton(WPARAM wparam,LPARAM lParam)
{
	m_bbb.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bbb.SendMessage(BM_SETSTATE,0,0);
	m_editchar="B";
	UpdateData(FALSE);
	data=0x0b;
	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Cbutton(WPARAM wparam,LPARAM lParam)
{
	m_bbc.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bbc.SendMessage(BM_SETSTATE,0,0);
	m_editchar="C";
	UpdateData(FALSE);
	data=0x0c;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Dbutton(WPARAM wparam,LPARAM lParam)
{
	m_bbd.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bbd.SendMessage(BM_SETSTATE,0,0);
	m_editchar="D";
	UpdateData(FALSE);
	data=0x0d;
		m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Ebutton(WPARAM wparam,LPARAM lParam)
{
	m_bbe.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bbe.SendMessage(BM_SETSTATE,0,0);
	m_editchar="E";
	UpdateData(FALSE);
	data=0x0e;
	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}
void Cserkey::Fbutton(WPARAM wparam,LPARAM lParam)
{
	m_bbf.SendMessage(BM_SETSTATE,1,0);
	Sleep(50);
	m_bbf.SendMessage(BM_SETSTATE,0,0);
	m_editchar="F";
	UpdateData(FALSE);
	data=0x0f;
	m_bitnum+=1;
	if(m_bitnum>=4)
	{
		m_bitnum=0;
	}
	Display_LED((BYTE)data,m_bitnum);

}


BYTE Cserkey::GetLED_data(BYTE x)
{
	BYTE m_a=0;
	switch(x)
	{
		case 0:
		m_a=0xc0;
		break;
	case 1:
		m_a=0xf9;
		break;
	case 2:
		m_a=0xa4;
		break;
	case 3:
		m_a=0xb0;
		break;
	case 4:
		m_a=0x99;
		break;
	case 5:
		m_a=0x92;
		break;
	case 6:
		m_a=0x82;
		break;
	case 7:
		m_a=0xf8;
		break;
	case 8:
		m_a=0x80;
		break;
	case 9:
		m_a=0x98;

⌨️ 快捷键说明

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