以下情况:
我的系统收到硬件信号,并将时间值写入我的缓冲区
信号处理程序例程。然后,将(时间)值作为参数的(软件)信号发送到相应的插槽功能。
插槽例程被正确调用,但是我的问题出在这里:
在slot函数中,我有一个简单的switch-case语句,如下所示:
switch(id) {
case 1:
do something..
id = 2;
break;
case 2:
start_time = val;
id = 3;
break;
case 3:
end_time = val;
id = 1;
break;
}
在这三种情况下,我存储了情况2和3之间的开始时间和结束时间值,以及
从这些时间值中,我确定硬件之间的经过时间
信号。效果很好,但是现在我不得不测量有时“更长”的时间,
取决于参数。这意味着,我无法在案例3中停止测量
我有案例4、5、6等。对于此“问题”,什么是优雅且最佳的解决方案?
而不是写:
if (param < xy) {
switch(id) {
case 1:
...
break;
case 2:
...
break;
} else if (param > xy) {
switch(id) {
case 1:
...;
break;
case 2:
...;
break;
case 3:
...;
break;
case 4:
...;
break;
case 5:
...;
break;
}
}
}
最佳答案
您所描述的称为finite state machine,那里有大量出色的状态机库,这些库将为您处理繁重的工作。
看一看this question及其引用的其他一些内容。
关于c++ - 动态改变开关柜的尺寸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7390847/