Code Monkey home page Code Monkey logo

Comments (9)

GyverLibs avatar GyverLibs commented on August 17, 2024

Привет, каких аргументов? Не очень понятна ситуация, нужно подробности

from encbutton.

jackfrombb avatar jackfrombb commented on August 17, 2024

Привет, каких аргументов? Не очень понятна ситуация, нужно подробности

Вот пример.
Только сразу договоримся, что "метод" = "функция" и наоборот, точно не знаю как в плюсах принято)
Предположим, надо определить реализацию контроля от виртуального класса.
Присоеденить не статический метод класса мы не сможем, из за несовпадения типов.
photo_2024-01-10_14-37-27

Но, если мы сделаем метод статическим, то поля класса становятся недоступны, что логично
photo_2024-01-10_14-29-40

Я вижу такое, возможное, решение:

Делаем событие с аргументами, например, в стиле WindowsForms)
photo_1

Чуть изменяем привязку события
photo_2

И вызов
photo_3

Тогда в классе можно сделать так:
photo_4

from encbutton.

GyverLibs avatar GyverLibs commented on August 17, 2024

а зачем вообще использовать attach в классе, если всё равно вызывается тикер и action можно опросить там же?.. По сути даже так например:

class....
void foo() {
  if (enc->tick()) handler();
}
void handler() {
  enc->action().....
}

from encbutton.

GyverLibs avatar GyverLibs commented on August 17, 2024

также можно использовать лямбда-функцию. Но это опять же не имеет смысла, потому что библиотека не event-зависимая и всё равно есть тикер, который вызывается явно

class....
void foo() {
  enc->attach([this]() {
    // ...
  });
}

from encbutton.

jackfrombb avatar jackfrombb commented on August 17, 2024

а зачем вообще использовать attach в классе, если всё равно вызывается тикер и action можно опросить там же?..

В этом случае, при некоторых обстоятельствах, очень глючит. В частности, когда прерывания забирают много веремени у loop.

from encbutton.

jackfrombb avatar jackfrombb commented on August 17, 2024

также можно использовать лямбда-функцию. Но это опять же не имеет смысла, потому что библиотека не event-зависимая и всё равно есть тикер, который вызывается явно

class....
void foo() {
  enc->attach([this]() {
    // ...
  });
}

А с таким решением я не знаком. Извини, если отнял время. Плюсы совсем недавно изучать начал
И спасибо за помощь)

from encbutton.

GyverLibs avatar GyverLibs commented on August 17, 2024

очень глючит

не может такого быть)) Приаттаченный хэндлер вызывается из тикера

    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.

jackfrombb avatar jackfrombb commented on August 17, 2024

очень глючит

не может такого быть)) Приаттаченный хэндлер вызывается из тикера

    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.

GyverLibs avatar GyverLibs commented on August 17, 2024

👍

from encbutton.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.