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

📄 serkey.cpp

📁 有关树WDM 驱动的编程.里面包含了许多实例,学习硬件的可以参考哦
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -