0

我有来自传感器的实时信号。一旦信号高于阈值,我需要逻辑来实现屏蔽时间。如下所示:

在此处输入图像描述

此处信号(蓝色)越过阈值。而且我需要屏蔽一段时间(屏蔽时间)对阈值的任何检查。(这样我只能检测到正脉冲,同样,我还有另一个检查负脉冲

请看下面的代码:

static QTime time(QTime::currentTime());
// calculate two new data points:
double key = time.elapsed()/1000.0; // time elapsed since start of demo, in seconds
static double lastKey;

if(a_vertical> onThreshold && key-lastKey >0.2) // is this check correct for masking time?
    {
        ui->rdo_btn_vertical->show();
        ui->rdo_btn_vertical->setStyleSheet(StyleSheetOn1);
        lastKey = key;
    }
    else
    {
        ui->rdo_btn_vertical->setStyleSheet(StyleSheetOff1);
    }


我不确定 IF 语句中的表达式是否是实现屏蔽时间的正确方法。欢迎任何想法/建议。

编辑

屏蔽时间:它是为任何阈值检查屏蔽的时间段。这是为了区分正负脉冲。见下文,在正脉冲期间有一个负向,但不应将其检测为“负脉冲”。这就是我实施屏蔽时间的原因。

在此处输入图像描述

4

1 回答 1

0

您可以定义 2 个信号槽来处理启动、停止经过的计时器,幸运的是,Qt 有一个类为您执行此操作,请阅读此处的文档并注意可能的溢出,如果需要设置QElapsedTimer::MonotonicClock

QElapsedTimer timer;
timer.start();
slowOperation1();
qDebug() << "The slow operation took" << timer.elapsed() << "milliseconds";

并触发信号

if(sensorSignal>THRESHOLD_K)
    emit startTimer();
else
    emit stopTimer();
    
void startTimer()
{   
    timer.start();
}

void stopTimer()
{

    timer.elapsed();
}
于 2020-06-29T10:29:25.610 回答