mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 03:49:13 +03:00
call back test class
This commit is contained in:
@@ -7,20 +7,20 @@
|
|||||||
// должен быть метод без результата и без параметров.
|
// должен быть метод без результата и без параметров.
|
||||||
// Новый тип мы называем AsynсActionCb - хотя можешь назвать вообще как нравиться а что значит callBack
|
// Новый тип мы называем AsynсActionCb - хотя можешь назвать вообще как нравиться а что значит callBack
|
||||||
|
|
||||||
typedef std::function<void()> AsyncActionCb; //метод без результата и параметров
|
typedef std::function<void()> AsyncActionCb; //метод без результата и параметров
|
||||||
|
|
||||||
typedef std::function<bool(const String)> AsyncParamActionCb; //метод без результата и параметров
|
typedef std::function<bool(const String)> AsyncParamActionCb; //метод без результата и параметров
|
||||||
|
|
||||||
class AsyncActions {
|
class CallBackTest {
|
||||||
private:
|
private:
|
||||||
long count;
|
long count;
|
||||||
AsyncActionCb _cb;
|
AsyncActionCb _cb;
|
||||||
AsyncParamActionCb _pcb;
|
AsyncParamActionCb _pcb;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AsyncActions();
|
CallBackTest();
|
||||||
void loop();
|
void loop();
|
||||||
void setCallback(AsyncActionCb cb);
|
void setCallback(AsyncActionCb cb);
|
||||||
void setCallback(AsyncParamActionCb pcb);
|
void setCallback(AsyncParamActionCb pcb);
|
||||||
};
|
};
|
||||||
extern AsyncActions* async;
|
extern CallBackTest* CB;
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
#include "Class/AsyncActions.h"
|
#include "Class/CallBackTest.h"
|
||||||
|
|
||||||
AsyncActions::AsyncActions(){};
|
CallBackTest::CallBackTest(){};
|
||||||
|
|
||||||
void AsyncActions::loop() {
|
void CallBackTest::loop() {
|
||||||
count++;
|
count++;
|
||||||
if (count > 5000) {
|
if (count > 5000) {
|
||||||
|
|
||||||
// Проверяем что переменная содержит указатель - не пустая не null
|
// Проверяем что переменная содержит указатель - не пустая не null
|
||||||
// и непосредственно вызываем то, на что это указывает
|
// и непосредственно вызываем то, на что это указывает
|
||||||
// просто пишем имя - без () - это указатель на фунецию.
|
// просто пишем имя - без () - это указатель на фунецию.
|
||||||
@@ -30,12 +29,21 @@ void AsyncActions::loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//передаем внутрь класса функцию любую void функцию без агрументов
|
//передаем внутрь класса функцию любую void функцию без агрументов
|
||||||
void AsyncActions::setCallback(AsyncActionCb cb) {
|
void CallBackTest::setCallback(AsyncActionCb cb) {
|
||||||
_cb = cb;
|
_cb = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
//передаем внутрь класса функцию любую void функцию с аргументами
|
//передаем внутрь класса функцию любую void функцию с аргументами
|
||||||
void AsyncActions::setCallback(AsyncParamActionCb pcb) {
|
void CallBackTest::setCallback(AsyncParamActionCb pcb) {
|
||||||
_pcb = pcb;
|
_pcb = pcb;
|
||||||
}
|
}
|
||||||
AsyncActions* async;
|
CallBackTest* CB;
|
||||||
|
|
||||||
|
//CB->setCallback([]() {
|
||||||
|
// Serial.println("123");
|
||||||
|
//});
|
||||||
|
//
|
||||||
|
//CB->setCallback([](const String str) {
|
||||||
|
// Serial.println(str);
|
||||||
|
// return true;
|
||||||
|
//});
|
||||||
@@ -75,13 +75,13 @@ void setup() {
|
|||||||
just_load = false;
|
just_load = false;
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
||||||
async = new AsyncActions();
|
CB = new CallBackTest();
|
||||||
|
|
||||||
async->setCallback([]() {
|
CB->setCallback([]() {
|
||||||
Serial.println("123");
|
Serial.println("123");
|
||||||
});
|
});
|
||||||
|
|
||||||
async->setCallback([](const String str) {
|
CB->setCallback([](const String str) {
|
||||||
Serial.println(str);
|
Serial.println(str);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user