当前位置: 代码迷 >> WinCE >> 关于ce6下6410平台矩阵式键盘驱动中的几点疑问解决办法
  详细解决方案

关于ce6下6410平台矩阵式键盘驱动中的几点疑问解决办法

热度:78   发布时间:2016-04-28 13:19:53.0
关于ce6下6410平台矩阵式键盘驱动中的几点疑问
关于ce6下6410平台矩阵式键盘驱动中的几点疑问
目前在看键盘驱动,不过其中有几个地方看的不太明白
希望各位大师帮忙解答一下:
1.在中断处理线程中irq = IRQ_KEYPAD;查了一下#define IRQ_KEYPAD 32,此处是系统规定好的,还是?另外就是这个IRQ_KEYPAD是如何和物理上实际的中断对应起来的?键盘中断是单独的一个中断,还是用的某一个普通的外部中断?
2.键盘的各个键值是怎么传给应用层的?怎么实现的哪个键对应的哪个值啊?
我大致想了一下过程不知道对不对,我认识是首先有按键按下就会产生中断,之后中断处理程序中,判断具体是哪个键被按下了,把这个键对应的键值,发给了应用程序。不知道我的想法对不对,我也没在程序中找到用哪个函数往上发的键值,还请各位大师帮忙讲解。
3.如果我想通过按某个键,实现对键盘的锁定,之后再按那个键对键盘进行解锁,或是更复杂点像目前有的手机那样通过组合键实现,该如何做?
4.再借此处问个关于触摸屏的问题,如何实现按某个键实现对触摸屏的锁定啊?都有什么方法,那种方法比较好?

------解决方案--------------------
1。键盘有专门的中断,
2、最终调用CALLBACK函数将参数传回给系统,应用程序获取KEYDOWN消息,
// Finally! Send the key down.
(*v_pfnKeybdEventCallback)(vkDown|vkOther, KeyStateFlags);


4、
1、在按键驱动跟TP驱动里面创建一个同名事件,

2、在按键的KEYBDMDD中获取锁屏按键是否按下, 如果按下则发锁屏事件给TP驱动,

3、TP驱动中创建一个线程专门等待按键驱动发出来的锁屏事件,收到锁屏事件后,调用。
DdsiTouchPanelPowerHandler(BOOL bOff)
{
RETAILMSG(TS_DBGON, (TEXT("::: DdsiTouchPanelPowerHandler()\r\n")));
if (bOff)
{
TSP_PowerOff();
}
else
{
TSP_PowerOn();

}

------解决方案--------------------
1、键盘有一个固定的中断,可以通过寄存器配置关掉它
2、往上传键值可以用 v_pfnKeybdEvent()也可以用keybd_event()
3、锁键盘可以通过不往上发键值的方式
4、锁触屏可以关触屏中断
  相关解决方案