打印

求助 关于单片机 按键菜单功能实现

[复制链接]
3648|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
joyafa|  楼主 | 2011-3-24 13:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近需要开发一个产品,支持触摸屏和普通按键功能,当在触摸屏失灵的时候,也能通过按键来实现软件各项功能的操作。 举个例子,最终页就是要做成这样的效果。    比如ATM取款机,现在很多ATM取款机都有触摸屏了。
      在屏幕上显示左右两列菜单,点击触摸屏上的菜单,就能取钱查余额什么的;当然也可以按取款机两侧的实物按键,一样的可以达到目的。
      现在就是不知道这个实物按键是怎么跟屏幕菜单对应起来的,看了很多资料,实物按键的功能都是 固定的,比如方向键,只能上下左右移动,不能让他来执行确定功能,这样就限制死了按键的作用。当在键盘相对少的情况下,很好的利用这几个按键,就显得很有必要,请问这是怎么实现的?

相关帖子

沙发
joyafa|  楼主 | 2011-3-25 12:12 | 只看该作者
有做过这方便经验的 多多指点啊,谢谢了

使用特权

评论回复
板凳
Cube| | 2011-3-27 00:34 | 只看该作者
利用两个变量 page sign 并将按键只以K1 K2等进行编程

page 保存的是当前页号码
sign  保存的是光标位置在页号码page与位置sign匹配时触发按键判断,选择进入你要的子程序

使用特权

评论回复
地板
joyafa|  楼主 | 2011-3-27 14:00 | 只看该作者
大虾,能否详细点.
不清楚K1和K2编程.
我的想法是,每个按键按下都有自己的键码,键码相对每个按键都是固定且唯一的.
软件获取到这个键码之后,然后在进入当前页面的消息循环,当接收到某个键码按下的消息,则进入指定的子程序.每个界面都有标识该界面的唯一的窗口句柄,而每个窗口也会有自己的窗口消息循环,进行处理就行了.
问题是:应用程序如何去获得这个按键码触发事件?还要:去抖动、防串键、识别被按键或释放键以及产生
与被按键或释放键对应的键码,这些工作应该由一个键盘接口函数去取得,应用程序再去做其他的事情.不知道是不是这样的?

使用特权

评论回复
5
原野之狼| | 2011-3-28 00:12 | 只看该作者
第一件事:键盘驱动
获取当前按键事件,这些事件包括:键按下、键释放、短按、长按等等。
根据项目本身的需要来确定键盘扫描程序的功能。
就你目前的描述,键盘个数并不多,采用IO扫描的方式就可以获取键的状态了,当然在IO口资源比较紧张的情况下也可以通过一些IO扩展芯片来扩展出更多的口线。
关于键盘扫描的做法可以以关键字:键盘扫描,状态机
在本论坛搜索相关帖子。
第二件事:界面编程
让我们先分析下界面编程方面都有些什么元素。
窗口:即一个屏幕的资源。程序在不同的窗口上完成不同的功能。比如就LZ所提的问题,可能会有欢迎信息的窗口,会有输入密码的窗口,会有取款的窗口等等。在PC上的窗口会比较复杂些,会有窗口重叠,窗口移动等等功能,但是在单片机编程的时候一般不搞这么麻烦,能把所需要的信息表达出来即可。
文本:屏幕上会有各种显示的文字。这些文字会有字体、大小、位置,颜色等属性。
图片:屏幕上会有一些静态或者动态的图片。图片有大小、位置等属性。
按钮:用来响应用户的输入。这些按钮可以作为触摸屏功能的点击区域,也可以作为和屏幕周边实际按键相对应的按键功能的描述。
一些别的控件:比如进度条等。
以上只是一个粗略的表述,实际上我们在PC上编程的时候,所需要使用的控件的功能并没有本质的差异,这些都是基本的GUI的元素。只是PC上GUI会做得更复杂更美观些。
详情可以GOOGLE下mini-gui,uc-gui等软件的实现,看看都有哪些基本的GUI元素以及如何通过程序来实现。
当我们已经有了键盘驱动以及界面元素的时候,接下来的事情就是如何通过响应按键来让屏幕来做一些事情。
刚才也已经说了,界面编程是一屏一屏来实现的,每一屏可以认为是一个状态,在这个状态下按键具有一定的具体功能,而当切换到下一屏即另外一个状态的时候哪些按键又具有了其它的功能,这些都是在你的程序里进行控制的。论坛里经常讨论状态机编程思想,你可以去琢磨下,如何利用这个思想来完成界面编程。
LZ还提到触摸屏和按键共同控制的问题,在进行软件设计的时候需要进行分层设计,显然触摸屏的驱动和按键的驱动位于同一个层次,它们产生的按键消息送到界面控制层去完成具体事宜。

使用特权

评论回复
6
visioninspect| | 2011-3-30 22:27 | 只看该作者
呵呵,这是规划问题了
设计“上一个”,“下一个”,“返回”,“确定”四个按键基本就能满足绝大多数要求了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

1

粉丝