увеличить число на основе условия - PullRequest
0 голосов
/ 06 марта 2020

У меня есть базовый c вопрос, у меня есть данные в реальном времени. Мне нужно посчитать, сколько раз значение данных пересекает порог.

realtime_data - это поток данных с частотой 10 Гц.

Я пробовал это:

 int pCount=0;

    if(realtime_data>0.25)
    {
        ++pCount;
        ui->lbl_peak->setText(QString::number(pCount));
    }

Но это увеличивается только один раз. Не учитывает все вхождения. Может кто-нибудь показать мне правильный способ сделать это?

РЕДАКТИРОВАТЬ

Вот как я называю realtime_data:

void Settings::EventHandler(uint8_t index, DATA_T *sample)
{
    realtimeDataSlot(sample->sensor_value[0]);
}


void Settings::realtimeDataSlot(double realtime_data)
{

// Here I need to check if the data exceeds a threshold value and count those occurrences

    int pCount=0;

   if(realtime_data>0.25)
    {
        ++pCount;
        ui->lbl_peak->setText(QString::number(pCount));
    }

}

Ответы [ 2 ]

3 голосов
/ 06 марта 2020

Вы объявили pCount в своей функции realtimeDataSlot, что означает, что каждый раз, когда функция вызывается, pCount возвращается к 0. Сделайте pCount переменной-членом вашего класса.

2 голосов
/ 06 марта 2020

каждый раз, когда вызывается функция, pcount будет установлен на ноль. Так что pcount будет только ноль или один. Установка pcount как stati c решит проблему.

void Settings::realtimeDataSlot(double realtime_data)
{

// Here I need to check if the data exceeds a threshold value and count those     occurrences

    static int pCount=0;
    if(realtime_data>0.25)
    {
        ++pCount;
        ui->lbl_peak->setText(QString::number(pCount));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...