Qt实时数据显示: void serial::realtimeDataSlot1() 函数解析

该函数 void serial::realtimeDataSlot1() 是一个槽函数,用于实时显示采集到的数据。以下是对其工作原理的详细解析:

1. 时间计算和变量初始化

函数首先获取当前时间和日期,并计算出距离程序启动时间经过的时间(单位为秒)。

static QTime time(QTime::currentTime());
static QDateTime datetime(QDateTime::currentDateTime());
double key = time.elapsed()/1000.0; // time elapsed since start of demo, in seconds
static double lastPointKey = 0;
  • time 变量存储程序启动的时间。
  • datetime 变量存储程序启动的日期和时间。
  • key 变量表示当前时间距离程序启动时间经过的秒数。
  • lastPointKey 变量存储上一次数据更新的时间点。

2. 数据更新频率控制

函数使用 time_inter 变量控制数据更新的频率。

float temp_float,time_inter;
time_inter=0.075;// 采样数据的更新时间256*1/3125Hz=0.08192
if (key-lastPointKey > time_inter)
{
  // ... 数据更新操作 ...
}
  • time_inter 设置为0.075秒,表示每隔0.075秒更新一次数据。

3. 数据更新和保存

当满足数据更新条件时,函数执行以下操作:

save_num++;
temp_float=data_num[num++];

// ... 保存数据到 save_data 数组 ...

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);
ui->dataView->graph(0)->rescaleValueAxis();
  • save_num 记录保存的数据个数。
  • temp_float 存储当前采集到的数据。
  • 将采集到的数据保存到 save_data 数组中。
  • 将数据添加到图形 ui->dataView->graph(0) 中。
  • 重新调整 ui->dataView->graph(0) 的纵坐标范围以适应当前数据。

4. 图形显示更新

最后,函数更新图形的显示范围并重新绘制图形。

ui->dataView->xAxis->setRange(key, 0.3, Qt::AlignRight);
ui->dataView->replot();
  • 设置横坐标范围,使图形能够滚动显示。
  • 使用 replot() 函数重新绘制图形,以显示最新的数据。

总结

void serial::realtimeDataSlot1() 函数通过定时采集数据、更新数据到图形并重新绘制图形,实现了数据的实时显示功能。

Qt实时数据显示: void serial::realtimeDataSlot1() 函数解析

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

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