|
Опрос клавиатуры на С, Как написать компактный и "красивый" код? |
|
|
|
 |
Ответов
|
Jun 23 2018, 06:38
|

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

|
Цитата(Make_Pic @ Jun 23 2018, 08:17)  Опрос клавиатуры на С -> Как написать компактный и "красивый" код? Дайте pls примеры опроса матрицы клавиш на С (C++ не надо). В своих проектах разделяю опрос клавиатуры (неважно какая, матричная или обычная) на два разных этапа: 1) опрос существующего состояния кнопок с заданной периодичностью, обычно раз в 50мс, чтобы потом не "воевать" с дребезгом. 2) анализ (сравнение) текущего и предыдущего состояния клавиатуры, тем самым выделяя события отпускания и нажатия далее в зависимости от проекта реализовывал систему подписки на различные события, если в двух словах, то речь про колбэки и их продвинутые аналоги. Модули, которым нужно ждать события от клавиатуры, "подписываются" на нужные события и кнопки, "обращаясь" к модулю клавиатуры. События всего два - отпускание и нажатие. Этого обычно вполне достаточно. Долгое удержание или т. п. реализуется уже в самом модуле. Такая схема дает возможность напрочь отвязаться от способа реализации клавиатуры: будь то "примитивные" кнопки на пинах и внешние проводные или беспроводное клавиатуры (например, пульты оператора). Т.е. я жестко разделяю опрос клавиатуры от тех модулей/блоков, которые ждут от нее реакцию. Примеры приводить не буду, т. к. вы "запретили" тут использовать C++. Однако, на голом С все описанное выше тоже реализуется, но уже несколько "топорно" и далеко не так "компактно и красиво". К счастью (кому-то к сожалению) давно не использую подобный инструментарий и поэтому примеров на нем, увы, не сохранилось (( Добавлю, что использую RTOS, т. к. под ней это реализуется значительно проще: не нужно "колдовать" с таймерами и самодельными генераторами/приемниками событий. зы. В проектах с одной/двумя кнопками все реализую значительно проще, но аналогично - периодический опрос и сравнение двух состояний: предыдущего и текущего.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|