📄 serkey.cpp
字号:
break;
case 10:
m_a=0x88;
break;
case 11:
m_a=0x83;
break;
case 12:
m_a=0xc6;
break;
case 13:
m_a=0xa1;
break;
case 14:
m_a=0x86;
break;
case 15:
m_a=0x8e;
break;
}
return m_a;
}
void Cserkey::DisplayLED_bit(int x)
{
// Display_LED((BYTE)data);
/*BYTE m_a=0xf7;
m_a<<=x;
m_a=m_a|0x0f;
DeviceIoControl(hDevice,
IOCTL_IOW,
m_p,
IC_8255_B,
NULL,
m_a,
&nRet,
NULL);*/
}
void Cserkey::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
BOOL data=0x81;
BOOL status = DeviceIoControl(
hDevice,
IOCTL_IOW,
m_p,
IC_8255_type,
NULL,
data,
&nRet,
NULL);
data=0xff;
DeviceIoControl(
hDevice,
IOCTL_IOW,
m_p,
IC_8255_A,
NULL,
data,
&nRet,
NULL);
m_display=TRUE;
if(Readkey_number()==TRUE)
{
Handle_key();
}
CDialog::OnTimer(nIDEvent);
}
void Cserkey::Display_LED(BYTE x,int y)
{
x=GetLED_data(x);
BYTE m_1,m_2,m_3;
m_1=m_d->work[1];
m_2=m_d->work[2];
m_3=m_d->work[3];
m_d->work[1]=m_d->work[0];
m_d->work[0]=x;
m_d->work[2]=m_1;
m_d->work[3]=m_2;
DeviceIoControl(
hDevice,
IOCTL_LED,
m_p,
IC_8255_A,
m_d,
IC_8255_B,
&nRet,
NULL);
}
void Cserkey::OnOK()
{
// TODO: Add extra validation here
KillTimer(1);
KillTimer(2);
for(int z=0;z<4;z++)
{
m_d->work[z]=0xff;
}
data=0xff;
DeviceIoControl(
hDevice,
IOCTL_LED,
m_p,
IC_8255_A,
m_d,
IC_8255_B,
&nRet,
NULL);
if(m_p!=NULL)
{
free( m_p);
m_p=NULL;
}
if(m_d!=NULL)
{
free( m_d);
m_d=NULL;
}
if(hDevice!=NULL)
{
CloseHandle( hDevice);
hDevice=NULL;
}
if(hDevice1!=NULL)
{
CloseHandle( hDevice1);
hDevice1=NULL;
}
CDialog::OnOK();
}
BOOL Cserkey::Readkey_number()
{
BYTE m_a=0x10;
m_a=WRIO(&m_a);
BYTE m_b=m_a;
if((m_b&0x01)==0x01)
{
if(m_key_number!=0)
{
m_key_number=0;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=0;
return FALSE;
}
}
if((m_b&0x02)==0x02)
{
if(m_key_number!=1)
{
m_key_number=1;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=1;
return FALSE;
}
}
if((m_b&0x04)==0x04)
{
if(m_key_number!=2)
{
m_key_number=2;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=2;
return FALSE;
}
}
if((m_b&0x08)==0x08)
{
if(m_key_number!=3)
{
m_key_number=3;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=3;
return FALSE;
}
}
m_a=0x20;
m_a=WRIO(&m_a);
m_b=m_a;
if((m_b&0x01)==0x01)
{
if(m_key_number!=4)
{
m_key_number=4;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=4;
// return FALSE;
}
}
if((m_b&0x02)==0x02)
{
if(m_key_number!=5)
{
m_key_number=5;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=5;
return FALSE;
}
}
if((m_b&0x04)==0x04)
{
if(m_key_number!=6)
{
m_key_number=6;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=6;
return FALSE;
}
}
if((m_b&0x08)==0x08)
{
if(m_key_number!=7)
{
m_key_number=7;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=7;
return FALSE;
}
}
m_a=0x40;
m_a=WRIO(&m_a);
m_b=m_a;
if((m_b&0x01)==0x01)
{
if(m_key_number!=8)
{
m_key_number=8;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=8;
return FALSE;
}
}
if((m_b&0x02)==0x02)
{
if(m_key_number!=9)
{
m_key_number=9;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=9;
return FALSE;
}
}
if((m_b&0x04)==0x04)
{
if(m_key_number!=10)
{
m_key_number=10;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=10;
return FALSE;
}
}
if((m_b&0x08)==0x08)
{
if(m_key_number!=11)
{
m_key_number=11;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=11;
return FALSE;
}
}
m_a=0x80;
m_a=WRIO(&m_a);
m_b=m_a;
if((m_b&0x01)==0x01)
{
if(m_key_number!=12)
{
m_key_number=12;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=12;
return FALSE;
}
}
if((m_b&0x02)==0x02)
{
if(m_key_number!=13)
{
m_key_number=13;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=13;
return FALSE;
}
}
if((m_b&0x04)==0x04)
{
if(m_key_number!=14)
{
m_key_number=14;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=14;
return FALSE;
}
}
if((m_b&0x08)==0x08)
{
if(m_key_number!=15)
{
m_key_number=15;
if(m_display==TRUE)
{
Setdiaplay_time();
}
return TRUE;
}else{
m_key_number=15;
return FALSE;
}
}
m_key_number=-1;
return FALSE;
}
BYTE Cserkey::WRIO(PBYTE x)
{
BYTE m_byte;
BOOL status = DeviceIoControl(
hDevice,
IOCTL_IOW,
m_p,
IC_8255_C,
NULL,
*x,
&nRet,
NULL);
status = DeviceIoControl(
hDevice,
IOCTL_IOR,
m_p,
IC_8255_C,
&m_byte,
NULL,
&nRet,
NULL);
return m_byte;
}
void Cserkey::Handle_key()
{
SendMessage(WM_USER+0x100+m_key_number,0,0);
}
void Cserkey::Setdiaplay_time()
{
m_display=FALSE;
SetTimer(2,10,NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -