wince 6.0 IO 扫描键盘驱动

dengchonglin 2009-12-23 03:52:03
各位大哥:
最近在研究用 IO 来做键盘,
有几个问题不明白,
1、很多IO键盘驱动都是使用中断来实现,比如 4X4 的要 4 个中断,首先创建一个事件,然后启动一个线程,
通过线程来等待中断事件,然后扫描IO得到 键盘的状态,对应向系统发送键盘事件。
这里有点不明白的是,为什么需要中断呢?不用中断,在系统加载键盘驱动
的时候启动一个线程,扫描 IO 的状态,然后得到键盘的状态,对应向系统发送事件不就可以了吗?

在这里请问大家,两种做法,哪种比较实用?系统开销那种小?
2、如果需要中文输入法,那么这些按键启动一样适用吗?
比如,我的键盘向系统发送一个 键盘 A 的事件 , 我在双拼里面输入也是 A 吗?

谢谢各位大哥,
小弟刚刚研究 WINCE 。

...全文
247 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengchonglin 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 reallyu 的回复:]
使用中断,在线程中等待的时候,没有中断发生的时候,这个线程相当于一直sleep
不会占用cpu,只有中断发生的时候才占用cpu来扫描键盘
[/Quote]
CPU是处于 sleep ??
我还以为一直处于扫描事件状态呢,
就比如
while(1)
{
if(Event)
{
....
}
}
Reallyu 2009-12-23
  • 打赏
  • 举报
回复
使用中断,在线程中等待的时候,没有中断发生的时候,这个线程相当于一直sleep
不会占用cpu,只有中断发生的时候才占用cpu来扫描键盘
dengchonglin 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 reallyu 的回复:]
当然也可以Sleep若干ms,不断扫描,其实对几百M的cpu来说,也不算什么.
[/Quote]
是的,我就打算用 sleep(5) 来实现,连续检测到 20 次高电平就当有按键。
呵呵,个人感觉一样的占用 CPU 资源啊~!
dengchonglin 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 reallyu 的回复:]
1. 不用中断系统开销太大,键盘绝大部分时间不工作的,你的扫描线程却要不断的扫描.如果是单片机程序我感觉扫描键盘比中断好,相对比较容易处理去抖动以及多键齐按,一键按下后再按另外键等非常规状态.
2. 是的,中文输入法一样可以用.
[/Quote]
但是如果使用中断,在线程里面等待中断事件, 这和扫描有什么区别呢? 一样占用系统资源啊~!
Reallyu 2009-12-23
  • 打赏
  • 举报
回复
当然也可以Sleep若干ms,不断扫描,其实对几百M的cpu来说,也不算什么.
Reallyu 2009-12-23
  • 打赏
  • 举报
回复
1. 不用中断系统开销太大,键盘绝大部分时间不工作的,你的扫描线程却要不断的扫描.如果是单片机程序我感觉扫描键盘比中断好,相对比较容易处理去抖动以及多键齐按,一键按下后再按另外键等非常规状态.
2. 是的,中文输入法一样可以用.
gooogleman 2009-12-23
  • 打赏
  • 举报
回复
结帖率:36.36%

--------------------
我增加曝光率,抢镜。


看优龙的BSP有。

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧