Kk:Sandbox2

From LEXWiKi

Revision as of 10:15, 13 December 2012 by Kk (Talk | contribs)
Jump to: navigation, search

Contents

The Sample code source you can download from

1.Binary file:
2.Source file:

How to Use The Utility

Image:key_pad_utility.jpg

1.config
start set button
2.save
save button
3.setbutton
Settings button analog keyboard

Introduction

Initial Internal F75111 port address (0x9c)

   define GPIO1X, GPIO2X, GPIO3X to input or output 
   and Enable WDT function pin 

Set F75111 DI/DO ( sample code as below Get Input value/Set output value )

   DI: InterDigitalInput()

PULSE mode

Sample to setting GP33, 32, 31, 30 output 1mS low pulse signal.

{ 
    this->Write_Byte(F75111_INTERNAL_ADDR, GPIO3X_PULSE_CONTROL,       0x00);             //This is setting low pulse output
    this->Write_Byte(F75111_INTERNAL_ADDR, GPIO3X_PULSE_WIDTH_CONTROL, 0x01);             //This selects the pulse width to 1mS
    this->Write_Byte(F75111_INTERNAL_ADDR, GPIO3X_CONTROL_MODE,        0x0F);             //This is setting the GP33, 32, 31, 30 to output function.    
    this->Write_Byte(F75111_INTERNAL_ADDR, GPIO3X_Output_Data ,        0x0F);             //This is setting the GP33, 32, 31, 30 output data.
}

Initial internal F75111

void CKey_Pad_utilityDlg::InitInternalF75111()
{
    ::Write_Byte(F75111_INTERNAL_ADDR,GPIO1X_CONTROL_MODE  ,0x00);        //set GPIO1X to Input  function     
    ::Write_Byte(F75111_INTERNAL_ADDR,GPIO3X_CONTROL_MODE  ,0x00);        //set GPIO3X to Input  function
    ::Write_Byte(F75111_INTERNAL_ADDR,GPIO2X_CONTROL_MODE  ,0x00);        //set GPIO2X to Input function
}

Get Digital Input

BYTE F75111_GetDigitalI0 ()
{
	BYTE byteGPIO1X = 0;
	BYTE byteGPIO2X = 0;
	BYTE byteGPIO3X = 0;
	BYTE byteData   = 0;

	::SMBus_ReadByte(m_F75111.bAddress,GPIO1X_INPUT_DATA,&byteGPIO1X) ;
	::SMBus_ReadByte(m_F75111.bAddress,GPIO2X_INPUT_DATA,&byteGPIO2X) ;	
	::SMBus_ReadByte(m_F75111.bAddress,GPIO3X_INPUT_DATA,&byteGPIO3X) ;	

	byteGPIO1X = ~byteGPIO1X  & 0xF0;
	byteGPIO3X = ~byteGPIO3X  & 0x0F;
	byteGPIO2X = ~byteGPIO2X  & 0xFF;

	byteData = ( byteGPIO1X & 0x10 )? byteData + 0x01 : byteData ;
	byteData = ( byteGPIO2X & 0x80 )? byteData + 0x02 : byteData ;
	byteData = ( byteGPIO1X & 0x80 )? byteData + 0x04 : byteData ;	
	byteData = ( byteGPIO2X & 0x04 )? byteData + 0x08 : byteData ;

	byteData = ( byteGPIO1X & 0x40 )? byteData + 0x10 : byteData ;
	byteData = ( byteGPIO2X & 0x02 )? byteData + 0x20 : byteData ;
	byteData = ( byteGPIO3X & 0x01 )? byteData + 0x40 : byteData ;
	byteData = ( byteGPIO2X & 0x01 )? byteData + 0x80 : byteData ;

	return byteData;
}

get keyboard wParam & lParam

BOOL CKey_Pad_utilityDlg::PreTranslateMessage(MSG* pMsg) 
{
	char StrTemp[16];
	int StrSize=16;
	if( setbutton1 == true ||  setbutton2 == true || setbutton3 == true || setbutton4 == true  )
	{	
		if(pMsg -> message == WM_SYSKEYDOWN )
		{		
			for(int i=1;i<256;i++)
			{
				if(pMsg -> wParam == i)
				{
					if(setbutton1== true)
					{
						msg1.wParam=pMsg->wParam;
						msg1.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit1.SetWindowText(StrTemp);
						setbutton1=false;
					}
					if(setbutton2== true)
					{
						msg2.wParam=pMsg->wParam;
						msg2.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit2.SetWindowText(StrTemp);
						setbutton2=false;
					}
					if(setbutton3== true)
					{
						msg3.wParam=pMsg->wParam;
						msg3.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit3.SetWindowText(StrTemp);
						setbutton3=false;
					}
					if(setbutton4== true)
					{
						msg4.wParam=pMsg->wParam;
						msg4.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit4.SetWindowText(StrTemp);
						setbutton4=false;
					}
				}
			}
		}
		if(pMsg -> message == WM_KEYDOWN)
		{
			for(int i=1;i<256;i++)
			{
				if(pMsg -> wParam == i)
				{
					if(setbutton1== true)
					{
						msg1.wParam=pMsg->wParam;
						msg1.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit1.SetWindowText(StrTemp);
						setbutton1=false;
					}
					if(setbutton2== true)
					{
						msg2.wParam=pMsg->wParam;
						msg2.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit2.SetWindowText(StrTemp);
						setbutton2=false;
					}
					if(setbutton3== true)
					{
						msg3.wParam=pMsg->wParam;
						msg3.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit3.SetWindowText(StrTemp);
						setbutton3=false;
					}
					if(setbutton4== true)
					{
						msg4.wParam=pMsg->wParam;
						msg4.lParam=pMsg->lParam;
						GetKeyNameText(pMsg->lParam,StrTemp,StrSize);
						m_edit4.SetWindowText(StrTemp);
						setbutton4=false;
					}
				}
			}
		}				
	}
	return CDialog::PreTranslateMessage(pMsg);
}
Personal tools