реклама на сайте
подробности

 
 
> Опрос клавиатуры на С, Как написать компактный и "красивый" код?
Make_Pic
сообщение Jun 23 2018, 05:17
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828



Опрос клавиатуры на С -> Как написать компактный и "красивый" код?
Дайте pls примеры опроса матрицы клавиш на С (C++ не надо).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Forger
сообщение Jun 23 2018, 06:38
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Make_Pic @ Jun 23 2018, 08:17) *
Опрос клавиатуры на С -> Как написать компактный и "красивый" код?
Дайте pls примеры опроса матрицы клавиш на С (C++ не надо).

В своих проектах разделяю опрос клавиатуры (неважно какая, матричная или обычная) на два разных этапа:
1) опрос существующего состояния кнопок с заданной периодичностью, обычно раз в 50мс, чтобы потом не "воевать" с дребезгом.
2) анализ (сравнение) текущего и предыдущего состояния клавиатуры, тем самым выделяя события отпускания и нажатия
далее в зависимости от проекта реализовывал систему подписки на различные события, если в двух словах, то речь про колбэки и их продвинутые аналоги.
Модули, которым нужно ждать события от клавиатуры, "подписываются" на нужные события и кнопки, "обращаясь" к модулю клавиатуры.
События всего два - отпускание и нажатие. Этого обычно вполне достаточно. Долгое удержание или т. п. реализуется уже в самом модуле.
Такая схема дает возможность напрочь отвязаться от способа реализации клавиатуры: будь то "примитивные" кнопки на пинах и внешние проводные или беспроводное клавиатуры (например, пульты оператора).

Т.е. я жестко разделяю опрос клавиатуры от тех модулей/блоков, которые ждут от нее реакцию.
Примеры приводить не буду, т. к. вы "запретили" тут использовать C++.
Однако, на голом С все описанное выше тоже реализуется, но уже несколько "топорно" и далеко не так "компактно и красиво".
К счастью (кому-то к сожалению) давно не использую подобный инструментарий и поэтому примеров на нем, увы, не сохранилось ((

Добавлю, что использую RTOS, т. к. под ней это реализуется значительно проще: не нужно "колдовать" с таймерами и самодельными генераторами/приемниками событий.

зы. В проектах с одной/двумя кнопками все реализую значительно проще, но аналогично - периодический опрос и сравнение двух состояний: предыдущего и текущего.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Make_Pic
сообщение Jun 23 2018, 07:20
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828



Цитата(Forger @ Jun 23 2018, 09:38) *
...
Добавлю, что использую RTOS, т. к. под ней это реализуется значительно проще: не нужно "колдовать" с таймерами и самодельными генераторами/приемниками событий.

зы. В проектах с одной/двумя кнопками все реализую значительно проще, но аналогично - периодический опрос и сравнение двух состояний: предыдущего и текущего.

Я не запрещал, но понимаю, что на плюсах удобнее - приведите свой пример pls!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Make_Pic   Опрос клавиатуры на С   Jun 23 2018, 05:17
||- - Forger   Цитата(Make_Pic @ Jun 23 2018, 10:20) Я н...   Jun 23 2018, 08:05
||- - AlexandrY   RE: Опрос клавиатуры на С   Jun 23 2018, 13:40
||- - Forger   ЦитатаB такая генерация спасает от рутины громозди...   Jun 23 2018, 13:54
|||- - AlexandrY   Цитата(Forger @ Jun 23 2018, 16:54) Отлич...   Jun 23 2018, 14:09
|||- - Forger   Цитата(AlexandrY @ Jun 23 2018, 17:09) Во...   Jun 23 2018, 14:13
|||- - AlexandrY   Цитата(Forger @ Jun 23 2018, 17:13) Друго...   Jun 23 2018, 14:22
|||- - Forger   Цитата(AlexandrY @ Jun 23 2018, 17:22) Та...   Jun 23 2018, 14:29
|||- - AlexandrY   Цитата(Forger @ Jun 23 2018, 17:29) Какие...   Jun 23 2018, 14:43
|||- - Forger   Цитата(AlexandrY @ Jun 23 2018, 17:43) Че...   Jun 23 2018, 14:54
||- - x893   Цитата(AlexandrY @ Jun 23 2018, 16:40) .....   Jun 23 2018, 15:01
||- - Сергей Борщ   QUOTE (x893 @ Jun 23 2018, 18:01) Но это ...   Jun 23 2018, 16:01
||- - AlexandrY   Цитата(Сергей Борщ @ Jun 23 2018, 19:01) ...   Jun 23 2018, 17:25
|- - x893   Цитата(Forger @ Jun 23 2018, 09:38) ... д...   Jun 23 2018, 08:03
- - iliusmaster   Обычно, чтобы ничего постояно не опрашивать, все с...   Jun 23 2018, 17:17
|- - Forger   Цитата(iliusmaster @ Jun 23 2018, 20:17) ...   Jun 23 2018, 18:03
|- - k155la3   Цитата(iliusmaster @ Jun 23 2018, 20:17) ...   Jun 24 2018, 08:23
- - ArtemKAD   Ну развели... Проблема дребезга полностью освещена...   Jun 23 2018, 19:56
|- - Forger   Цитата(ArtemKAD @ Jun 23 2018, 22:56) Ну ...   Jun 23 2018, 20:43
|- - Сергей Борщ   QUOTE (ArtemKAD @ Jun 23 2018, 22:56) For...   Jun 23 2018, 21:07
|- - Forger   Цитата(Сергей Борщ @ Jun 24 2018, 00:07) ...   Jun 23 2018, 21:17
|- - ArtemKAD   Цитата(Сергей Борщ @ Jun 24 2018, 00:07) ...   Jun 23 2018, 23:20
|- - Forger   Цитата(ArtemKAD @ Jun 24 2018, 02:20) Я б...   Jun 24 2018, 06:52
- - ArtemKAD   Импульсную подтяжку еще и на кнопку - знаете вы то...   Jun 24 2018, 07:23
|- - Forger   Цитата(ArtemKAD @ Jun 24 2018, 10:23) Имп...   Jun 24 2018, 08:10
||- - ArtemKAD   Цитата(Forger @ Jun 24 2018, 11:10) Извра...   Jun 25 2018, 22:31
||- - AlexandrY   Цитата(ArtemKAD @ Jun 26 2018, 01:31) Кон...   Jun 26 2018, 05:17
||- - Forger   Цитата(AlexandrY @ Jun 26 2018, 08:17) Чт...   Jun 26 2018, 05:25
||- - iliusmaster   Цитата(AlexandrY @ Jun 26 2018, 08:17) Чт...   Jun 26 2018, 05:30
|||- - =L.A.=   Цитата(iliusmaster @ Jun 26 2018, 08:30) ...   Jun 26 2018, 05:44
||||- - haker_fox   QUOTE (=L.A.= @ Jun 26 2018, 13:44) Писан...   Jun 26 2018, 06:32
||||- - Forger   Имхо, физика процесса тут не очень однозначная: ра...   Jun 26 2018, 06:52
|||- - AlexandrY   Цитата(iliusmaster @ Jun 26 2018, 08:30) ...   Jun 26 2018, 07:42
|||- - Forger   Цитата(AlexandrY @ Jun 26 2018, 10:42) По...   Jun 26 2018, 07:49
|||- - iliusmaster   Цитата(AlexandrY @ Jun 26 2018, 10:42) А ...   Jun 28 2018, 15:55
|||- - AlexandrY   Цитата(iliusmaster @ Jun 28 2018, 18:55) ...   Jun 28 2018, 19:40
|||- - Herz   Цитата(AlexandrY @ Jun 28 2018, 22:40) Ну...   Jun 28 2018, 19:49
||||- - AlexandrY   Цитата(Herz @ Jun 28 2018, 22:49) Коллега...   Jun 28 2018, 20:27
||||- - Forger   Вот еще немного любопытной информации про электрич...   Jun 28 2018, 20:28
|||||- - AlexandrY   Цитата(Forger @ Jun 28 2018, 23:28) Вот е...   Jun 29 2018, 04:36
|||||- - Forger   Цитата(AlexandrY @ Jun 29 2018, 07:36) У ...   Jun 29 2018, 05:08
|||||- - AlexandrY   Цитата(Forger @ Jun 29 2018, 08:08) И не ...   Jun 29 2018, 05:39
|||||- - Forger   Цитата(AlexandrY @ Jun 29 2018, 08:39) Ищ...   Jun 29 2018, 05:50
|||||- - AlexandrY   Цитата(Forger @ Jun 29 2018, 08:50) По-хо...   Jun 29 2018, 06:40
|||||- - Forger   Цитата(AlexandrY @ Jun 29 2018, 09:40) От...   Jun 29 2018, 06:51
|||||- - AlexandrY   Цитата(Forger @ Jun 29 2018, 09:51) Пруфы...   Jun 29 2018, 06:56
|||||- - Forger   Цитата(AlexandrY)Также вам предлагаю помолчать отн...   Jun 29 2018, 07:05
||||- - rx3apf   Цитата(AlexandrY @ Jun 28 2018, 23:27) То...   Jun 28 2018, 20:41
|||||- - AlexandrY   Цитата(rx3apf @ Jun 28 2018, 23:41) Все б...   Jun 28 2018, 20:43
||||- - Herz   Цитата(AlexandrY @ Jun 28 2018, 23:27) С ...   Jun 28 2018, 23:13
|||- - rx3apf   Цитата(AlexandrY @ Jun 28 2018, 22:40) (д...   Jun 28 2018, 20:11
||- - ArtemKAD   Цитата(AlexandrY @ Jun 26 2018, 08:17) Чт...   Jun 28 2018, 14:42
|- - Herz   Цитата(ArtemKAD @ Jun 24 2018, 10:23) Имп...   Jun 24 2018, 09:50
|- - Forger   Цитата(Herz @ Jun 24 2018, 12:50) Греть р...   Jun 24 2018, 10:03
|- - Herz   Цитата(Forger @ Jun 24 2018, 13:03) Напри...   Jun 25 2018, 10:02
|- - Forger   Цитата(Herz @ Jun 25 2018, 13:02) А зачем...   Jun 25 2018, 12:13
|- - AlexandrY   Цитата(Forger @ Jun 25 2018, 15:13) Вы ве...   Jun 25 2018, 12:24
|- - Forger   Цитата(AlexandrY @ Jun 25 2018, 15:24) А ...   Jun 25 2018, 12:32
- - iliusmaster   У музыкантов нужно точно отслеживать длительность ...   Jun 24 2018, 09:30
|- - Forger   Цитата(iliusmaster @ Jun 24 2018, 12:30) ...   Jun 24 2018, 09:38
|- - k155la3   Цитата(iliusmaster @ Jun 24 2018, 12:30) ...   Jun 24 2018, 09:57
- - iliusmaster   Ну раз музыканты это специфика, то вот еще один пр...   Jun 24 2018, 11:11
|- - Forger   Цитата(iliusmaster @ Jun 24 2018, 14:11) ...   Jun 24 2018, 11:21
|- - k155la3   Цитата(iliusmaster @ Jun 24 2018, 14:11) ...   Jun 24 2018, 13:07
|- - Make_Pic   Цитата(k155la3 @ Jun 24 2018, 17:07) Мой ...   Jun 25 2018, 02:06
|- - AlexandrY   Цитата(Make_Pic @ Jun 25 2018, 05:06) Тем...   Jun 25 2018, 08:49
|- - k155la3   Цитата(Make_Pic @ Jun 25 2018, 05:06) Тем...   Jun 25 2018, 09:09
||- - AlexandrY   Цитата(k155la3 @ Jun 25 2018, 12:09) Вот ...   Jun 25 2018, 10:35
|- - arhiv6   Цитата(Make_Pic @ Jun 25 2018, 09:06) Тем...   Jun 27 2018, 05:34
- - k155la3   Цитата(Make_Pic @ Jun 23 2018, 08:17) . ....   Jun 26 2018, 08:41
- - Jenya7   В последних проектах юзаем ADP5589. Изначально я б...   Jun 26 2018, 14:35
|- - Forger   Цитата(Jenya7 @ Jun 26 2018, 17:35) В пос...   Jun 26 2018, 15:24
||- - haker_fox   QUOTE (Forger @ Jun 26 2018, 23:24) Имхо,...   Jun 27 2018, 02:32
|||- - Forger   Цитата(haker_fox @ Jun 27 2018, 05:32) Ну...   Jun 27 2018, 04:35
||- - k155la3   Цитата(Forger @ Jun 26 2018, 18:24) Код в...   Jun 27 2018, 06:36
|- - AlexandrY   Цитата(Jenya7 @ Jun 26 2018, 17:35) В пос...   Jun 27 2018, 05:08
- - haker_fox   QUOTE (Forger @ Jun 27 2018, 12:35) Спорн...   Jun 27 2018, 07:22
- - rx3apf   Напряжение, очевидно, нужно чтобы пробить пленку. ...   Jun 28 2018, 15:59
- - Forger   Цитата(iliusmaster) Цитата(rx3apf) Вот: https://el...   Jun 28 2018, 16:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016