这段代码是实时显示数据的函数。它从串口读取数据,并将其添加到图表中,以实时显示数据。其中,'key' 是时间轴上的数据点,'temp_float' 是从串口读取的数据值,'time_inter' 是两个数据点之间的时间间隔。函数还将数据保存到数组中,以备后续使用。最后,它将图表重新绘制,以更新显示。

void serial::realtimeDataSlot1()
{
  static QTime time(QTime::currentTime());
  static QDateTime datetime(QDateTime::currentDateTime());
  // calculate two new data points:
  double key = time.elapsed()/1000.0; // time elapsed since start of demo, in seconds
  static double lastPointKey = 0;
  float temp_float,time_inter;
  double key_x[256];

  time_inter=0.075;// 采样数据的更新时间256*1/3125Hz=0.08192

  if (key-lastPointKey > time_inter)
  {
    // add data to lines:
      save_num++;
      temp_float=data_num[num++];
/**/      if(save_num<=8)
          for(int i=0;i<256;i++)
          save_data[256*(save_num-1)+i]=data_num[i];
      else
      {
          save_num=8;
          for(int i=256;i<2048;i++) save_data[i-256]=save_data[i];
          for(int i=0;i<256;i++)
          save_data[256*7+i]=data_num[i];
      }

      for(int i=0;i<256;i++)
      {
          key_x[i]=lastPointKey+0.00032*i;
          ui->dataView->graph(0)->addData(key_x[i], data_num[i]);
      }

      ui->dataView->graph(0)->addData(key, temp_float);
      // rescale value (vertical) axis to fit the current data:
      ui->dataView->graph(0)->rescaleValueAxis();
      if(num>255)
          num=0;

    lastPointKey = key;
  }
  // make key axis range scroll with the data (at a constant range size of 8):
  ui->dataView->xAxis->setRange(key, 0.3, Qt::AlignRight);
  ui->dataView->replot();
}

该代码主要包含以下部分:

  • 数据读取: 代码从串口读取数据,并存储在 'data_num' 数组中。
  • 时间轴: 代码使用 'QTime' 和 'QDateTime' 类来记录时间,并计算时间轴上的数据点 'key'。
  • 数据点添加: 代码将时间点 'key' 和数据值 'temp_float' 添加到图表中。
  • 数据保存: 代码将数据保存到 'save_data' 数组中,用于后续分析和处理。
  • 图表更新: 代码调用 'ui->dataView->replot()' 函数重新绘制图表,以更新显示。

该代码可以帮助你实现实时数据显示功能,并方便后续的数据分析和处理。

实时数据显示 - Qt C++ 串口数据可视化

原文地址: https://www.cveoy.top/t/topic/jnW2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录