arduino实现一个EventBus设计模式-Arduino中文社区 - Powered by Discuz! Archiver

cxg 发表于 2021-1-29 20:09

arduino实现一个EventBus设计模式

eventBus事件总线在javascript里极为常见, 但是在c和单片机方面没见有人提出过, 我试着写了这个库, 这个库具体有什么用, 我也不知道。c,c++缺少闭包的支持,感觉用处不大。

demo代码:

#include <Arduino.h>
#include "cxg_EventBus.h"

//支持arduino uno, stm32, esp32
//仿照javascript的事件总线实现的库
CxgEventBus eventBus;

void setup() {
Serial.begin(115200);
//注册事件, 可以多次执行, 第三个参数表示是否覆盖已注册的事件
eventBus.on(
    "test1", [](void* params) {
      //获取参数
      int a = *( int* )params;
      Serial.println("exeTest1");
      Serial.println(a);
    },
    false);

//注册事件, 仅执行一次
eventBus.once(
    "once", [](void* params) {
      Serial.println("exe once");
    },
    false);
}
void loop() {
while(Serial.available()) {
    char d = Serial.read();
    if(d == 'a') {
      int a = 32;
      //传递一个参数
      eventBus.emit("test1", &a);
    }
    if(d == 'b') {
      eventBus.emit("once", NULL);
    }
}
}







页: [1]
查看完整版本: arduino实现一个EventBus设计模式