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

📄 jkeyout.c.bak

📁 motorola jw32 usb 源码
💻 BAK
字号:
///////////////////////////////////////////////////////////////////////////////
//                                   pate 1                                  //
///////////////////////////////////////////////////////////////////////////////
#define min_d (90)//79+10
#define max_d (164)//175-20
//#define JK_LENGTH   0x08
#define KEY_SLENTH  0x05
typedef struct {
	 unsigned char key_state[KEY_SLENTH];
	 unsigned char key_save[KEY_SLENTH];
}keybit;
keybit JkeyState;
byte jkState=0; //right or left jk data state
//static JkeyState key; 
//+++++++++++++++++++++++++++++++++++++++++++++++++++
/*********************************************************************
 * Function:       byte Joystick_Waykey(byte x,byte y)
 *
 * Input:          x:joystick x analog value.
 									 y:joystick y analog value.
 *
 * Output:          joystick transfered direction key value .
 *
 * Side Effects:    None
 *
 *
 * Note:            None
 ********************************************************************/
byte Joystick_Waykey(byte x,byte y)
{
    byte output_key;
    
  if(x<max_d&&x>min_d&&y<min_d)
	 {  output_key =0x01;
   }  //down
//----------------------------------   
	else if(x>min_d&&x<max_d&&y>max_d)
	 { output_key =0x02;  
	 }  //up
//----------------------------------
  else if(x<min_d&&y>min_d&&y<max_d)
	 {  output_key =0x04; 
   }    //left
//----------------------------------
	else if(x>max_d&&y<max_d&&y>min_d)
	 { output_key =0x08;  
   }  //right
   
   
//----------------------------------
  else if(x<min_d&&y<min_d)
	 {  output_key =0x10; 
   }  //down and left  
 //----------------------------------
  else if(x>max_d&&y<min_d)
	 {  output_key =0x80;  
   }  //right and down
 //----------------------------------	
  else if(x<min_d&&y>max_d)
   {  output_key =0x20; 
   }   //up and left
 //----------------------------------
	else if(x>max_d&&y>max_d)
	 { output_key =0x40;  
   }  //up and right
//----------------------------------
  else 	{
          output_key =0x00; 
        }
  return (output_key);      
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++
/*********************************************************************
 * Function:       byte Joystick_Waykey(byte x,byte y)
 *
 * Input:         inbuffer:joystick data buffer.
 									inlength:joystick data length.
 									outputbuffer:	joystick key out data buffer.
 									outlength:    joystick key out data length. 	
 *
 * Output:          joystick transfered direction key value .
 *
 *
 *
 * Note:            *outength is outbuffer max length.when put data into
 	                  outputbuffer,should chekc input data length less than
 	                  *outength.in case outputbuffer overflow 
 	output :  0: no key map.1:normal key map.2:especial key map
 ********************************************************************/
byte Joystick_KeyFilter(byte *inbuffer,byte inlength,byte *outputbuffer,byte* outlength)//,byte *outputbuffer
{
	 unsigned char key_r,key_l,i,lenth=0;	 
//——————————————————————————————————————————————————————————————————————
	if(inlength!=JK_LENGTH)
	{
		* outlength = 0;
			return 0;
	}
	if(*outlength==0)
	{
		return 0;
	}
   key_r = Joystick_Waykey(inbuffer[0],inbuffer[1]);
   key_l = Joystick_Waykey(inbuffer[2],inbuffer[3]);
	 JkeyState.key_state[0] = inbuffer[4]>>4;
	 JkeyState.key_state[1] = inbuffer[5];
	 JkeyState.key_state[2] = inbuffer[6];
	 JkeyState.key_state[3] = key_l;
	 JkeyState.key_state[4] = key_r;
//——————————————————————————————————————————————————————————————————————
for(i=0;i<8;i++)
 {
//——————————————————————————————————————————————————————————————————————
	 	 if(JkeyState.key_state[0]&Groupbit[i]) //
		 {
		  if((JkeyState.key_save[0]&Groupbit[i])==0)  //有键按下
		   {
			   outputbuffer[lenth] = ((i+1)<<1)+1;
			   if(lenth<*outlength)
	 				  lenth++; 
		   }
		 }
	 
	 	else{
		       if(JkeyState.key_save[0]&Groupbit[i]) //有键松起
			   {  
	 			   outputbuffer[lenth] = (i+1)<<1;
	 			   if(lenth<*outlength)
	 				    lenth++; 
			   } 
		    }
//————————————————————————————————————————————————————————————————
	 	 if(JkeyState.key_state[1]&Groupbit[i]) 
		 {
		  if((JkeyState.key_save[1]&Groupbit[i])==0)  // 有键按下
		   {
			   outputbuffer[lenth]= ((i+5)<<1)+1;
	 			 if(lenth<*outlength)
	 				  lenth++; 
		   }
		 }
	 
	 	else{
		       if(JkeyState.key_save[1]&Groupbit[i]) //有键松起
			   {  
	 			  outputbuffer[lenth]= (i+5)<<1;
	 			  if(lenth<*outlength)
	 				 lenth++; 
			   } 
		    }
//——————————————————————————————————————————————————————————————————
	 	 if(JkeyState.key_state[2]&Groupbit[i]) 
		 {
		  if((JkeyState.key_save[2]&Groupbit[i])==0)  // 有键按下
		   {
			   outputbuffer[lenth] = ((i+13)<<1)+1;
	 	     if(lenth<*outlength)
	 				 lenth++;
		   }
		 }
	 
	 	else{
		       if(JkeyState.key_save[2]&Groupbit[i]) //有键松起
			   {  
	 			 outputbuffer[lenth] = (i+13)<<1;
	 			 if(lenth<*outlength)
	 				 lenth++;
			   } 
		    }
//——————————————————————————————————————————————————————————————————————
	 	 if(JkeyState.key_state[3]&Groupbit[i]) 
		 { 
		  if((JkeyState.key_save[3]&Groupbit[i])==0x00)  // 有键按下
		   {
			    outputbuffer[lenth] = ((i+20)<<1)+1;
	 			  if(lenth<*outlength)
	 				 lenth++;
		   } 
		 }
	 
	 	else{
		       if(JkeyState.key_save[3]&Groupbit[i]) //有键松起
			   {  
	 			    outputbuffer[lenth]= (i+20)<<1;
	 			    if(lenth<*outlength)
	 				     lenth++;
			   } 
		    }
//——————————————————————————————————————————————————————————————————————
	 	 if(JkeyState.key_state[4]&Groupbit[i]) 
		 { 
		  if((JkeyState.key_save[4]&Groupbit[i])==0x00)  // 有键按下
		   {
			    outputbuffer[lenth] = ((i+28)<<1)+1;
	 			  if(lenth<*outlength)
	 				 lenth++;
		   } 
		 }
	 
	 	else{
		       if(JkeyState.key_save[4]&Groupbit[i]) //有键松起
			   {  
	 			    outputbuffer[lenth]= (i+28)<<1;
	 			    if(lenth<*outlength)
	 				     lenth++;
			   } 
		    }
//——————————————————————————————————————————————————————————————————————
 }
 	 JkeyState.key_save[0] = JkeyState.key_state[0];
	 JkeyState.key_save[1] = JkeyState.key_state[1];
	 JkeyState.key_save[2] = JkeyState.key_state[2];
	 JkeyState.key_save[3] = JkeyState.key_state[3];
	 JkeyState.key_save[4] = JkeyState.key_state[4];
	 if(lenth==0){
	/* 	if(jkState==1)
	 		return 0;
	 	jkState =1;	*/
	 	outputbuffer[0] = 40;
	 	outputbuffer[1] = 56;
	 	* outlength = 2;
	  return 2;}
	 // jkState=0;
	 * outlength = lenth;
	 return 1;
}
void Joystick_KeyInit()
{
	byte i;
	for(i=0;i<KEY_SLENTH;i++)
	{
		JkeyState.key_save[i]=0x00;
		JkeyState.key_state[i]=0x00;
	}
//	jkState= 0;
}


























⌨️ 快捷键说明

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