如何解决如果给定函数 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 举报,一经查实,本站将立刻删除。