Comments (9)
Привет, каких аргументов? Не очень понятна ситуация, нужно подробности
from encbutton.
Привет, каких аргументов? Не очень понятна ситуация, нужно подробности
Вот пример.
Только сразу договоримся, что "метод" = "функция" и наоборот, точно не знаю как в плюсах принято)
Предположим, надо определить реализацию контроля от виртуального класса.
Присоеденить не статический метод класса мы не сможем, из за несовпадения типов.
Но, если мы сделаем метод статическим, то поля класса становятся недоступны, что логично
Я вижу такое, возможное, решение:
Делаем событие с аргументами, например, в стиле WindowsForms)
Чуть изменяем привязку события
Тогда в классе можно сделать так:
from encbutton.
а зачем вообще использовать attach в классе, если всё равно вызывается тикер и action можно опросить там же?.. По сути даже так например:
class....
void foo() {
if (enc->tick()) handler();
}
void handler() {
enc->action().....
}
from encbutton.
также можно использовать лямбда-функцию. Но это опять же не имеет смысла, потому что библиотека не event-зависимая и всё равно есть тикер, который вызывается явно
class....
void foo() {
enc->attach([this]() {
// ...
});
}
from encbutton.
а зачем вообще использовать attach в классе, если всё равно вызывается тикер и action можно опросить там же?..
В этом случае, при некоторых обстоятельствах, очень глючит. В частности, когда прерывания забирают много веремени у loop.
from encbutton.
также можно использовать лямбда-функцию. Но это опять же не имеет смысла, потому что библиотека не event-зависимая и всё равно есть тикер, который вызывается явно
class.... void foo() { enc->attach([this]() { // ... }); }
А с таким решением я не знаком. Извини, если отнял время. Плюсы совсем недавно изучать начал
И спасибо за помощь)
from encbutton.
очень глючит
не может такого быть)) Приаттаченный хэндлер вызывается из тикера
bool tick(bool s) {
clear();
s = pollBtn(s);
#ifndef EB_NO_CALLBACK
if (cb && s) cb();
#endif
return s;
}
то есть if (enc->tick()) myHandler();
это абсолютно тот же самый код получится
from encbutton.
очень глючит
не может такого быть)) Приаттаченный хэндлер вызывается из тикера
bool tick(bool s) { clear(); s = pollBtn(s); #ifndef EB_NO_CALLBACK if (cb && s) cb(); #endif return s; }то есть
if (enc->tick()) myHandler();
это абсолютно тот же самый код получится
Ок. Значит тогда глючило из за того что не вызывал тик в прерывании) Значит, вполне годное решение, спасибо ещё раз)
/// @brief Прерывание для обработки пропущенных считываний энкодера
/// @param args = NULL
/// @return nothing
bool IRAM_ATTR encTick(void *args)
{
enc.tickISR();
return false;
}
from encbutton.
👍
from encbutton.
Related Issues (20)
- Конфликтует с библиотекой ArduinoJson HOT 2
- Проблема с энкодерами HOT 2
- Не работают прерывания, как следует на stm32 HOT 1
- Добавить поддержку энкодера HOT 18
- Не работает на Arduino Nano 33 BLE HOT 36
- Опрос кнопок в момент перезагрузки устройства HOT 5
- Проект на wokwi с кнопками EncButton HOT 61
- Todo? HOT 8
- Migration from V2 to V3: tick() returns unreliable status HOT 5
- the 'eb.clear()' does not really set the encoder counter to 0 HOT 1
- Unusual step counting by rotary encoder HOT 5
- Многократное срабатывание виртуальной кнопки при однократном нажатии кнопки HOT 3
- fast() всегда false
- Ke-040 и 74hc165 HOT 9
- Совместимость с ESP8266 (Wemos D1 Mini) HOT 4
- 3.5.1 Won't compile HOT 1
- Описка в README HOT 1
- Внутрення подтяжка пинов INPUT_PULLUP HOT 13
- Невозможно использовать библиотеку после обновления до 3.5.9 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from encbutton.