1

目前我正在开发一个具有以下设置的项目。

  1. AVR微控制器
  2. IDE - AVR 工作室
  3. 操作系统 - FreeRTOS

对于输入,我使用 4x3 的键盘矩阵。我已经为 4x3 键盘进行了编码,以将输入作为数字。但现在我想让它变成字母数字。就像我们在手机键盘中看到的那样。

示例 - 键 2 将用于输入 2、a、b、c。单击键 2,我们将得到数字 2,双击键 2,然后我们将得到“a”,三次按下键 2,然后我们将得到“b”,四次按下键 2,然后我们将在屏幕上得到“d”。

我希望你们都明白我上面的意思。任何人都可以在 C 中给出一些代码想法来实现这种类型的功能吗?

4

2 回答 2

2

您很可能只需要跟踪最后一次按键的系统时间并将其与下一次按键的系统时间进行比较。如果当前键与上次按下的键相同,并且按下之间的时间很短(例如,不到一秒),则将当前输入的字符替换为该键的字符列表中的下一个字符。如果时间差超过一秒,或者按下了不同的键,则接受当前字符并添加一个新字符,从键列表中的第一个字符开始。

于 2011-09-04T05:15:03.347 回答
2

看到问题是当您在 30 毫秒后的 xxx 秒内按 2(比如说)时,如果您检查并发现 2 被按下,那么有两种情况。case1> 按下的键是新的,和之前的一样 case2> 按下的键和之前的一样,从xxx一直按下到现在。

于 2012-11-23T08:41:40.307 回答