添加实体按键之前的代码,运行电阻触摸屏是OK的。现在添加按键之后,按键能实现功能,但是触摸没作用。
添加的按键代码:
void Taskkpi(void)
{
if(ucKeyCode != KEY_NONE)
{
switch (ucKeyCode)
{
case KEYPAD_NUM1: /* K3键按下,实现TAB按键的功能*/
GUI_SendKeyMsg(GUI_KEY_TAB, 1);
//GUI_StoreKeyMsg(GUI_KEY_TAB, 1);
break;
case KEYPAD_NUM2: /* 摇杆UP键按下,实现删除光标后的字符 */
GUI_SendKeyMsg(GUI_KEY_DELETE, 1);
break;
case KEYPAD_NUM3: /* 摇杆DOWN键按下,实现删除光标前的字符 */
GUI_SendKeyMsg(GUI_KEY_BACKSPACE, 1);
break;
case KEYPAD_NUM4: /* 摇杆LEFT键按下,实现光标左移 */
GUI_SendKeyMsg(GUI_KEY_LEFT, 1);
break;
case KEYPAD_NUM5: /* 摇杆RIGHT键按下,实现光标右移 */
GUI_SendKeyMsg(GUI_KEY_RIGHT, 1);
break;
case KEYPAD_NUM6: /* 摇杆OK键按下,发送GUI_KEY_ENTER消息,会被聚焦的按钮或者
WM_KEY消息所接受并处理,功能都是关闭对话框。*/
GUI_SendKeyMsg(GUI_KEY_ENTER, 1);
break;
default:
/* 其它的键值不处理 */
break;
}
ucKeyCode = KEY_NONE;
}
}
void _cbTimer(GUI_TIMER_MESSAGE * pTM)
{
switch (pTM->Context)
{
case 0x00:
#ifdef _KPI_NONBLOCK_
ucKeyCode = kpi_read(KPI_NONBLOCK);
#else
ucKeyCode = kpi_read(KPI_BLOCK);
#endif
sysprintf("key is %d\n", ucKeyCode);
Taskkpi();
/* 此函数一定要调用,设置重新启动,要不仅执行一次 */
GUI_TIMER_Restart(pTM->hTimer);
break;
default:
break;
}
}
extern GUI_TIMER_HANDLE CreateGUITimer(void);
GUI_TIMER_HANDLE CreateGUITimer(void)
{
GUI_TIMER_HANDLE hTimer;
hTimer = GUI_TIMER_Create(_cbTimer, 1000, 0x00, 0);
GUI_TIMER_SetPeriod(hTimer, 500);
return hTimer;
}
而触摸:
sysSetTimerEvent(TIMER0, 20, (PVOID)TMR0_IRQHandler_TouchTask); /* 20 ticks call back */
1、串口的打印信息可以打印出TMR0_IRQHandler_TouchTask里面能识别到被触摸的具体位置,但是没有收到WM_MESSAGE。
2、如果不跑Taskkpi,按键主板能打印到KeyCode的值,触摸这边也能产生正确的WM_MESSAGE。
麻烦大家帮忙分析一下,具体是哪里有问题? |