我想要制作一个实时图表来绘制来自我的Arduino的数据,并且我想使用来自QCustomPlot的以下函数来绘制心电图样式的图形(几秒钟后再开始,并替换以前的数据):
void QCPGraph::addData(const QVector<double> &keys, const QVector<double> &values)`使用串口的keys=time和values=data。
我已经有了串行数据和一个连续的图表,但是我不知道如何用上面的函数来修改它,并生成时间向量。
你能给我举个如何调用这个函数的例子吗?
发布于 2016-06-08 16:05:40
如果我做得对,你会得到一个图,它的xAxis范围是常数。让我们假设它被定义为MAX_RANGE秒,并且您希望一旦它超过MAX_RANGE秒,它就会清除图形,并从0秒重新开始。
如果所有这些都是正确的,那么我猜您已经有了一个函数,您将每隔一秒钟调用一次函数,以便更新情节。如果没有,那么看看这个例子。
让我们假设您已经有了一个函数,每隔一秒钟就调用一个函数:
void MyPlot::updatePlot(int yValue)然后简单地添加一个timeCounter作为类变量,它将在每次调用中更新。然后添加一个if语句,检查它是否通过了MAX_RANGE。如果它使用clearData()清除图形,则添加新值并重置timeCounter。如果没有的话,只会增加新的价值。简单的示例(只需修改以适合您的情况):
void MyPlot::updatePlot(int yValue){
this->timeCounter += T;
if (this->timeCounter >= MAX_RANGE) {
ui->customPlot->graph(0)->clearData();
ui->customPlot->graph(0)->addData(0, yValue);
this->timeCounter = 0;
}
else {
ui->customPlot->graph(0)->addData(this->timeCounter, yValue);
}
}https://stackoverflow.com/questions/37689798
复制相似问题