Как кодировать на C для буквенно-цифровой клавиатуры 4x3

В настоящее время я работаю над проектом, который имеет следующую настройку.

  1. микроконтроллер AVR
  2. IDE - Студия AVR
  3. Операционная система - FreeRTOS

Для ввода я использую матрицу клавиатуры 4x3. Я уже закодировал клавиатуру 4x3, чтобы вводить данные как числа. Но теперь я хочу сделать его буквенно-цифровым. Как мы видим в клавиатурах наших мобильных телефонов.

Пример. Клавиша 2 будет использоваться для ввода 2,a,b,c. Однократное нажатие клавиши 2, мы получим номер 2, двойное нажатие клавиши 2, тогда мы получим «a», тройное нажатие клавиши 2, тогда мы получим «b», и четыре раза нажмите клавишу 2, тогда мы получим «d» на осыпи.

Надеюсь, вы все поняли, что я имею в виду выше. Может ли кто-нибудь дать какую-нибудь идею кода на C для реализации такого типа функций?


person Surjya Narayana Padhi    schedule 04.09.2011    source источник
comment
Есть ли у вас какой-либо способ предоставить пользователю обратную связь о том, что он выбрал для ввода?   -  person blueberryfields    schedule 04.09.2011
comment
Я хочу реализовать это, и я хочу спросить, можете ли вы это сделать. не могли бы вы сказать мне, как?   -  person Sepehr Hamzehlooy    schedule 16.10.2016


Ответы (2)


Скорее всего, вам просто нужно отслеживать системное время последнего нажатия клавиши и сравнивать его с системным временем следующего нажатия клавиши. Если текущая клавиша та же, что и при последнем нажатии, а время между нажатиями небольшое (скажем, менее одной секунды), замените текущий введенный символ следующим символом в списке символов для этой клавиши. Если разница во времени превышает одну секунду или если была нажата другая клавиша, примите текущий символ и добавьте новый символ, начиная с первого символа в списке для этой клавиши.

person SingleNegationElimination    schedule 04.09.2011

видите, проблема в том, что когда вы нажимаете 2 (скажем) через xxx секунд позже, через 30 миллисекунд, если вы проверяете и обнаружите, что нажата 2, тогда есть два случая. case1> нажатая клавиша новая и такая же, как и предыдущая case2> нажатая клавиша такая же, как и предыдущая, и она нажимается с xxx до сих пор непрерывно.

person rajshekhar    schedule 23.11.2012