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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1871|回复: 0

arduino实现一个EventBus设计模式

[复制链接]
发表于 2021-1-29 20:09 | 显示全部楼层 |阅读模式
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);
    }
  }
}





CxgEventBus.zip (2.66 KB, 下载次数: 1)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:29 , Processed in 0.095732 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表