微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果给定函数 1 中的参数为真,则尝试调用函数作为回调

如何解决如果给定函数 1 中的参数为真,则尝试调用函数作为回调

我目前正在从事一个涉及 Arduino Pro Micro 的小型副项目。目标是对某些按钮输入模式进行有效检测。我已经编写了按钮初始化和检测给定模式所需的所有功能。结果当前是由数组组成的字符串,最多可容纳四个输入。

短、长、短的按钮输入如下所示:Sp:Lp:Sp:Np。 (Np = 没有按下)。

因为我是面向对象的,所以我想添加这样的新潜在模式,并直接包含一个指向回调函数的指针作为参数:

Button1.addInputPattern(1,"Lp:sp:Lp:Np",*INSERT FUNCTION TO BE RUN IF PATTERN IS TRUE HERE*);

我在 .h 文件中的声明可能如下所示:

void addInputPattern(int patternNmbr,String pattern,callbackfunction functionToRun);

我也尝试像这样定义“回调函数”:

typedef void (*callbackFunction)(void);

我的最终目标是实现这样的功能

Button1.addInputPattern(1,mySys.resetServos);

.. 如果模式为真,将调用对象 mySys 的函数“resetServer”。 目前,我的模式检测如下所示:

case 5: // Check if one of the defined cases are true
      for (int i = 1; i <= 4; i++){
        if(inputResult == allPatterns[i]){ // Iterate through all four possible patterns
          patternDetected[i] = "True";
          patternFound = 1;
          FSM_state = 7;
        }
      }
      if(patternFound == 0){
        FSM_state = 6;
      }
      break;

此时,我的临时解决方案是这样的:

if(Button1.patternDetected[1] == "True"){
Serial.println("Yuchee!");
Button1.patternDetected[1] = "False";}

我已经尝试寻找更好的解决方案,但由于缺乏 OOP、回调函数和睡眠方面的经验,这使得这比我预期的要困难一些。 编辑:我的问题是:如何实现这个回调函数?它还必须调整模式编号:所以模式 Nr。 1 将不得不调用函数 1,模式 Nr。 2 应该调用函数 2,依此类推。

也许有更好的方法解决这个问题?

对此甚至想法的任何帮助都非常感谢!

如果需要,我也可以在这里发布我的整个代码(乱七八糟)。 干杯!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。