动态改变开关柜的尺寸

动态改变开关柜的尺寸

以下情况:

我的系统收到硬件信号,并将时间值写入我的缓冲区
信号处理程序例程。然后,将(时间)值作为参数的(软件)信号发送到相应的插槽功能。
插槽例程被正确调用,但是我的问题出在这里:

在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/

10-11 21:48