我们知道,qt的定时器最快是1ms的,不过1个G频率的信号就是1ns 10M的信号 就是100ns,所以当我们采样回来的数字信号,要完整的显示在qcustomplot中,就需要我们做一些处理,
我这边的处理方法是 给坐标轴加一个单位,如下图:
上面图 我设定的是1ms一格,不过采样过来的信号为1us,那么每一格我插入1000个数据,
先了解一下addData()函数:
源代码:
我这里是10ms 添加10000个数据
void MainWindow::updateData()
{
static double i;
i=0.0;
if(mflag.start_btn==1)
{
if(ui->customPlot->xAxis->range().upper >=1000)
{
// ui->customPlot->xAxis->setRange(ui->customPlot->xAxis->range().upper,100,Qt::AlignRight);
ui->customPlot->xAxis->setRange(i-100,i);
}
int a = ui->customPlot->graph(0)->dataCount();
for(int datacount=0;datacount<=10000;datacount++)
{
// ui->customPlot->graph(0)->addData(a+datacount/10, qSin(ui->customPlot->graph(0)->dataCount()/50.0)+qSin(ui->customPlot->graph(0)->dataCount()/50.0/0.3843)*0.25);
ui->customPlot->graph(0)->addData(i+(datacount/1000),g_seriaDdata(datacount) );
}
i=i+10.0;
ui->customPlot->replot();
}
}
void MainWindow::timerSlot() //定时器是10ms
{
if (QObject::sender() == timer)
{
updateData();
}
}
结果图: