功能:
-
每200ms获取一次最新的数据
-
曲线图最多显示100条数据,超过则清空,否则数据过多,显示的很拥挤
//初始化
void init()
{
mPlot->xAxis->setLabel("时间");
mPlot->yAxis2->setLabel("扭力 N.m");
mPlot->legend->setVisible(false);
#if 0 //显示图列
mPlot->legend->setFont(QFont("Helvetica",9));
mPlot->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop | Qt::AlignLeft); // 设置图例在左上方
#else//显示标题
QCPTextElement *title = new QCPTextElement(mPlot, "螺丝锁附实时扭力", QFont("sans", 12, QFont::Bold));
mPlot->plotLayout()->insertRow(0);
mPlot->plotLayout()->addElement(0, 0, title);
#endif
mPlot->yAxis->setTickLabels(false);
mPlot->yAxis2->setVisible(true);
mPlot->axisRect()->axis(QCPAxis::atRight, 0)->setPadding(50);
mGraph1 = mPlot->addGraph(mPlot->xAxis, mPlot->axisRect()->axis(QCPAxis::atRight, 0));
mGraph1->setPen(QPen(QColor(250, 120, 0)));
mTag1 = new AxisTag(mGraph1->valueAxis());
mTag1->setPen(mGraph1->pen());
}
//数据刷新
void setupQuadraticDemo()
{
if (mGraph1->dataCount() >= 100) { //只显示最近100条数据
mPlot->clearGraphs();
mGraph1 = mPlot->addGraph(mPlot->xAxis, mPlot->axisRect()->axis(QCPAxis::atRight, 0));
mGraph1->setPen(QPen(QColor(250, 120, 0)));
}
mGraph1->addData(mGraph1->dataCount(), m_vec.back().torque);
// mGraph1->addData(mGraph1->dataCount(), qSin(mGraph1->dataCount()/50.0)+qSin(mGraph1->dataCount()/50.0/0.3843)*0.25);//曲线显示
mPlot->xAxis->rescale();
mGraph1->rescaleValueAxis(false, true);
double graph1Value = mGraph1->dataMainValue(mGraph1->dataCount()-1);
mTag1->updatePosition(graph1Value);
mTag1->setText(QString::number(graph1Value, 'f', 2));
mPlot->yAxis2->setRange(0, 50);
mPlot->replot();
}
如何x轴显示时间
mGraph1->addData(QDateTime::currentMSecsSinceEpoch(), m_vec.back().torque);
QSharedPointer<QCPAxisTickerDateTime> dateTicker(new QCPAxisTickerDateTime);
dateTicker->setDateTimeFormat("mm:ss.zzz");
mPlot->xAxis->setTicker(dateTicker);
//时间显示旋转角度
mPlot->xAxis->setTickLabelRotation(30);
注意:
-
currentMSecsSinceEpoch
获取毫秒级时间戳,必须和("mm:ss.zzz")
对应,如果是秒级则(hh:mm:ss)
-
不设置时间戳则会显示 1970年开始的时间
问题:
为什么显示出来不是曲线? 这让我很纳闷。。。