📄 readkey.cpp
字号:
// readkey.cpp : implementation file
//
#include "stdafx.h"
#include "pctest.h"
#include "readkey.h"
#include "adc.h"
#include "address.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Creadkey dialog
extern PCHAR mDynVxDName ;
Creadkey::Creadkey(CWnd* pParent /*=NULL*/)
: CDialog(Creadkey::IDD, pParent)
{
//{{AFX_DATA_INIT(Creadkey)
m_char = _T("");
//}}AFX_DATA_INIT
nRet=NULL;
m_display=TRUE;
m_key_number=-1;
m_display_bit=0;
m_key=-1;
hDevice=hDevice1=0;
}
void Creadkey::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Creadkey)
DDX_Control(pDX, IDC_BUTTON16, m_b16);
DDX_Control(pDX, IDC_BUTTON15, m_b15);
DDX_Control(pDX, IDC_BUTTON14, m_b14);
DDX_Control(pDX, IDC_BUTTON13, m_b13);
DDX_Control(pDX, IDC_BUTTON12, m_b12);
DDX_Control(pDX, IDC_BUTTON11, m_b11);
DDX_Control(pDX, IDC_BUTTON10, m_b10);
DDX_Control(pDX, IDC_BUTTON9, m_b9);
DDX_Control(pDX, IDC_BUTTON8, m_b8);
DDX_Control(pDX, IDC_BUTTON7, m_b7);
DDX_Control(pDX, IDC_BUTTON6, m_b6);
DDX_Control(pDX, IDC_BUTTON5, m_b5);
DDX_Control(pDX, IDC_BUTTON4, m_b4);
DDX_Control(pDX, IDC_BUTTON3, m_b3);
DDX_Control(pDX, IDC_BUTTON2, m_b2);
DDX_Control(pDX, IDC_BUTTON1, m_b1);
DDX_Text(pDX, IDC_EDIT1, m_char);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Creadkey, CDialog)
//{{AFX_MSG_MAP(Creadkey)
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()
/////////////////////////////////////////////////////////////////////////////
// Creadkey message handlers
void Creadkey::OnCancel()
{CDialog::OnCancel();
}
void Creadkey:: Zonebutton(WPARAM wparam,LPARAM lParam)
{
m_b1.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b1.SendMessage(BM_SETSTATE,0,0);
m_char="0";
UpdateData(FALSE);
}
void Creadkey:: Onebutton(WPARAM wparam,LPARAM lParam)
{
m_b2.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b2.SendMessage(BM_SETSTATE,0,0);
m_char="1";
UpdateData(FALSE);
}
void Creadkey:: Twobutton(WPARAM wparam,LPARAM lParam)
{
m_b3.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b3.SendMessage(BM_SETSTATE,0,0);
m_char="2";
UpdateData(FALSE);
}
void Creadkey::Fourbutton(WPARAM wparam,LPARAM lParam)
{
m_b5.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b5.SendMessage(BM_SETSTATE,0,0);
m_char="4";
UpdateData(FALSE);
}
void Creadkey:: Fivebutton(WPARAM wparam,LPARAM lParam)
{
m_b6.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b6.SendMessage(BM_SETSTATE,0,0);
m_char="5";
UpdateData(FALSE);
}
void Creadkey:: Sixbutton(WPARAM wparam,LPARAM lParam)
{
m_b7.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b7.SendMessage(BM_SETSTATE,0,0);
m_char="6";
UpdateData(FALSE);
}
void Creadkey:: Sevenbutton(WPARAM wparam,LPARAM lParam)
{
m_b8.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b8.SendMessage(BM_SETSTATE,0,0);
m_char="7";
UpdateData(FALSE);
}
void Creadkey:: Eightbutton(WPARAM wparam,LPARAM lParam)
{
m_b9.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b9.SendMessage(BM_SETSTATE,0,0);
m_char="8";
UpdateData(FALSE);
}
void Creadkey:: Threebutton(WPARAM wparam,LPARAM lParam)
{
m_b4.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b4.SendMessage(BM_SETSTATE,0,0);
m_char="3";
UpdateData(FALSE);
}
void Creadkey:: Ninebutton(WPARAM wparam,LPARAM lParam)
{
m_b10.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b10.SendMessage(BM_SETSTATE,0,0);
m_char="9";
UpdateData(FALSE);
}
void Creadkey:: Abutton(WPARAM wparam,LPARAM lParam)
{
m_b11.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b11.SendMessage(BM_SETSTATE,0,0);
m_char="A";
UpdateData(FALSE);
}
void Creadkey:: Bbutton(WPARAM wparam,LPARAM lParam)
{
m_b12.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b12.SendMessage(BM_SETSTATE,0,0);
m_char="B";
UpdateData(FALSE);
}
void Creadkey:: Cbutton(WPARAM wparam,LPARAM lParam)
{
m_b13.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b13.SendMessage(BM_SETSTATE,0,0);
m_char="C";
UpdateData(FALSE);
}
void Creadkey:: Dbutton(WPARAM wparam,LPARAM lParam)
{
m_b14.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b14.SendMessage(BM_SETSTATE,0,0);
m_char="D";
UpdateData(FALSE);
}
void Creadkey:: Ebutton(WPARAM wparam,LPARAM lParam)
{
m_b15.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b15.SendMessage(BM_SETSTATE,0,0);
m_char="E";
UpdateData(FALSE);
}
void Creadkey:: Fbutton(WPARAM wparam,LPARAM lParam)
{
m_b16.SendMessage(BM_SETSTATE,1,0);
Sleep(50);
m_b16.SendMessage(BM_SETSTATE,0,0);
m_char="F";
UpdateData(FALSE);
}
BOOL Creadkey::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 );
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
}
BOOL Creadkey::Readkey_number()
{
BYTE m_a=0x10;
m_a=WRIO(&m_a);
BYTE m_b=m_a;
m_b=m_b&0x0f;
if(m_b!=0)
{
for(int x=0;x<10;x++)
{
m_b=m_b>>1;
if(m_b==0)
{
m_key_number=x;
x=11;
}
}
Setdiaplay_time();
return TRUE;
}
m_a=0x20;
m_a=WRIO(&m_a);
m_b=m_a;
m_b=m_b&0x0f;
if(m_b!=0)
{
for(int x=0;x<10;x++)
{
m_b=m_b>>1;
if(m_b==0)
{
m_key_number=x+4;
x=11;
}
}
Setdiaplay_time();
return TRUE;
}
m_a=0x40;
m_a=WRIO(&m_a);
m_b=m_a;
m_b=m_b&0x0f;
if(m_b!=0)
{
for(int x=0;x<10;x++)
{
m_b=m_b>>1;
if(m_b==0)
{
m_key_number=x+8;
x=11;
}
}
Setdiaplay_time();
return TRUE;
}
m_a=0x80;
m_a=WRIO(&m_a);
m_b=m_a;
m_b=m_b&0x0f;
if(m_b!=0)
{
for(int x=0;x<10;x++)
{
m_b=m_b>>1;
if(m_b==0)
{
m_key_number=x+12;
x=11;
}
}
Setdiaplay_time();
return TRUE;
}
return FALSE;
}
BYTE Creadkey::WRIO(PBYTE x)
{
BYTE m_byte;
W_AD->Address =IC_8255_C;
W_AD->Data=*x;
DeviceIoControl(
hDevice,
IOCTL_IOW,
W_AD,
sizeof(W_AD)+1,
NULL,
0,
&nRet,
NULL);
ULONG OffSet=IC_8255_C; //地址
BOOL status = DeviceIoControl(
hDevice,
IOCTL_IOR,
&OffSet,
sizeof(ULONG),
&m_byte,
0,
&nRet,
NULL);
return m_byte;
}
void Creadkey::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1:
{
if(Readkey_number()==TRUE)
{
Handle_key();
}
}break;
case 2:
m_display_bit+=1;
if(m_display_bit>4)
{
m_display_bit=1;
}
DisplayLED_bit(m_display_bit);
break;
}
CDialog::OnTimer(nIDEvent);
}
void Creadkey::Handle_key()
{
SendMessage(WM_USER+0x100+m_key_number,0,0);
}
void Creadkey::OnOK()
{
// TODO: Add extra validation here
KillTimer(1);
KillTimer(2);
W_AD->Address =IC_8255_type;
W_AD->Data=0x0ff;
DeviceIoControl(
hDevice,
IOCTL_IOW,
W_AD,
sizeof(W_AD)+1,
NULL,
0,
&nRet,
NULL);
if(hDevice!=NULL)
{
CloseHandle( hDevice);
hDevice=NULL;
}
if(hDevice1!=NULL)
{
CloseHandle( hDevice1);
hDevice1=NULL;
}
CDialog::OnOK();
}
void Creadkey::Setdiaplay_time()
{
m_display=FALSE;
SetTimer(2,10,NULL);
}
void Creadkey::DisplayLED_bit(int x)
{
BYTE m_a=0x08;
m_a<<=x;
W_AD->Address =IC_8255_B;
W_AD->Data=m_a;
DeviceIoControl(
hDevice,
IOCTL_IOW,
W_AD,
sizeof(W_AD)+1,
NULL,
0,
&nRet,
NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -