用qcustomplot类画实时曲线replot()速度跟不上硬件采集数据的速度怎么办
我现在在做一个界面,实时显示从硬件上采集得到的数据,画成曲线或者散点。最近在论坛中朋友的帮助下有了一点思路:创建一个子线程,在子线程中采集硬件数据,在主线程中用qcustomplot画图,子线程中发送数据信号,触发主线程的槽函数,在主线程的槽函数中画图。但是现在又出现了一个问题,就是在我做的这个界面上实时画图的速度跟不上硬件采集数据的速度。因为我的硬件有一个LCD屏幕,在这个屏幕上已经实现了实时画数据。两个一对比就发现qt界面上画图速度跟不上LCD上的画图速度。我的硬件采集数据的速度大概是每15ms采集一个点,界面上一次画127个点。而且感觉我的画图部分的代码也不多啊。。请问该怎样处理才能提高qcustomplot的画图速度?
下面是我的简略的代码,布局的代码没写,代码写得乱,请各位大神将就着看。。
[code=c++]
Widget.h
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
public slots:
void readData(unsigned int ledinx,int num);
private:
Ui::Widget *ui;
QCustomPlot *myplot;
Thread *myThread;
double key;
double data;
void realtimeDataSlot();
}
Widget.cpp
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui -> setupUi(this);
key = 0;
data = 0;
myplot = new QCustomPlot;
myplot -> addGraph(0);
myThread = new Thread;
connect(myThread,SIGNAL(UpdateSignal(unsigned int ,int)),this,SLOT(readData(unsigned int,int)));
myThread -> start();
}
void Widget::readData(unsigned int ledinx,int num)
{
key = ledinx;
data = num;
realtimeDataSlot();
}
void Widget::realtimeDataSlot()
{
myplot -> graph(0) ->removeData(key);
myplot -> graph(0) -> addData(key,data);
myplot -> replot();
}
[/code]