單片機每秒傳500個點 但是chart畫圖每秒可能只有20個點 而且還延時 問下怎么回事啊 畫圖時我是逐點更新的
void MainWidget::updateData(float value)///////更新資料函式
{
int i;
QVector<QPointF> oldData = SplineSeries->pointsVector();
QVector<QPointF> oldData3 =scatterSeries->pointsVector();
QVector<QPointF> data;///////////新的資料變數
QVector<QPointF> data3;///////////新的資料變數
if (oldData.size() < 250) {
data=https://bbs.csdn.net/topics/SplineSeries->pointsVector();//////////////把之前資料點量大小沒超過97的復制到新的資料變數data里面
data3=scatterSeries->pointsVector();
} else {
/* 添加之前老的資料到新的vector中,不復制最前的資料,即每次替換前面的資料
* 由于這里每次只添加1個資料,所以為1,使用時根據實際情況修改
*/
/*
for (i = 1; i < oldData.size(); ++i) {
data.append(QPointF(i - 1 , oldData.at(i ).y()));
data3.append(QPointF(i - 1 , oldData.at(i ).y()));
}
}
qint64 size = data.size();
for(i = 0; i < 1; ++i)
{
data.append(QPointF(i + size, value));///////////到時我這里是單片機給他的
data3.append(QPointF(i + size, value));
}
SplineSeries->replace(data);///重新替換整個資料//////也相當于加載坐標點集
scatterSeries->replace(data3);
count++;
}
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
電影放映的標準是每秒放映24幀,每秒遮擋24次,重繪率是每秒48次。這里的幀就是畫面,也就是說電影每秒放映24幅畫面,以達到影片的效果。研究表明,人眼承受的極限為每秒55幀,還有研究表明,每秒60幀以上可以明顯提升觀眾的觀影感受。每秒120幀是每秒24幀的5倍,采用這樣的拍攝技術可以讓畫面更加栩栩如生,讓觀眾仿佛置身其中,給人一種似真似幻的感覺。
所以,采用每秒24幀的畫面頻率符合這一規律,可以使我們察覺不到畫面的中斷。
所以你可以對收到的資料暫時不畫, 每1000/24 ,約40毫秒才畫一次否則來點就畫忙不過來,并且可以對40ms中的畫法做優化,這樣可以提高畫圖效率了。
另外收資料和畫圖放在兩個執行緒里。
uj5u.com熱心網友回復:
這個波形看起來是心電波形,所以給你建議如下:1)每40ms畫一次,每秒畫25次;
2)如果效率還不夠高則要對對收上來的原始資料進行分析,在不損傷圖形前提下根據規則簡化資料,減少畫線次數。
3)把接收資料與畫圖部分分在兩個執行緒里完成。
uj5u.com熱心網友回復:
每秒畫1000/24個點,這樣看起來不是連續的的曲線延伸,而是一蹦一蹦的出現出現,一次出現一截,如果仔細看的畫
uj5u.com熱心網友回復:
自己繪制,用ScrollDC卷動顯示區域,每次只繪制新增的點uj5u.com熱心網友回復:
你這個函式,每次只更新一個點嗎??那效率太差了,傳入陣列,批量更新比較好哦。。uj5u.com熱心網友回復:
怎么在曲線上顯示數值呢轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/11023.html
標籤:基礎類
下一篇:編程
