From c3b50c3ff3e91f45f3795a133cc63e9bfdb628cf Mon Sep 17 00:00:00 2001 From: JBTing Date: Mon, 26 Jun 2023 19:32:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=85=E5=AD=98=E8=B6=8A?= =?UTF-8?q?=E7=95=8C=E5=AF=BC=E8=87=B4=E7=9A=84=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/sinks/sink_plots/dialogplots.cpp | 164 ++++++++++++----------- 1 file changed, 88 insertions(+), 76 deletions(-) diff --git a/modules/sinks/sink_plots/dialogplots.cpp b/modules/sinks/sink_plots/dialogplots.cpp index f7116a8..f85b76b 100644 --- a/modules/sinks/sink_plots/dialogplots.cpp +++ b/modules/sinks/sink_plots/dialogplots.cpp @@ -66,7 +66,7 @@ void DialogPlots::deal_package(QByteArray package) return; const subject_package_header * pheader = (const subject_package_header *) - package.constData(); + package.constData(); if (m_plot_idxes.contains(pheader->subject_id)==false) return; @@ -155,7 +155,7 @@ QVector DialogPlots::flush_data(QByteArray package) return vec_res; const subject_package_header * pheader = (const subject_package_header *) - package.constData(); + package.constData(); if (m_plot_idxes.contains(pheader->subject_id)==false) return vec_res; @@ -173,83 +173,83 @@ QVector DialogPlots::flush_data(QByteArray package) { case 0: pts = pheader->data_length/sizeof(quint8)/channels; - { - const quint8 * ptrRaw = (const quint8 *) rawdata; - for (int i=0;idata_length/sizeof(qint8)/channels; - { - const qint8 * ptrRaw = (const qint8 *) rawdata; - for (int i=0;idata_length/sizeof(quint16)/channels; - { - const quint16 * ptrRaw = (const quint16 *) rawdata; - for (int i=0;idata_length/sizeof(qint16)/channels; - { - const qint16 * ptrRaw = (const qint16 *) rawdata; - for (int i=0;idata_length/sizeof(quint32)/channels; - { - const quint32 * ptrRaw = (const quint32 *) rawdata; - for (int i=0;idata_length/sizeof(qint32)/channels; - { - const qint32 * ptrRaw = (const qint32 *) rawdata; - for (int i=0;idata_length/sizeof(quint64)/channels; - { - const quint64 * ptrRaw = (const quint64 *) rawdata; - for (int i=0;idata_length/sizeof(qint64)/channels; - { - const qint64 * ptrRaw = (const qint64 *) rawdata; - for (int i=0;idata_length/sizeof(float)/channels; - { - const float * ptrRaw = (const float *) rawdata; - for (int i=0;idata_length/sizeof(double)/channels; - { - const double * ptrRaw = (const double *) rawdata; - for (int i=0;i new_min_y * 1.2) new_min_y = min_y,needup_y=true; - + if (max_x >=1e9 || max_x <-1e9 || max_y >1e9 ||max_y < -1e9 || max_x - min_x <1e-8) + needup_x = false,needup_y = false; + if (min_y >=1e9 || min_y <-1e9 || min_x >1e9 ||min_x < -1e9|| max_y - min_y <1e-8) + needup_x = false,needup_y = false; if (needup_x==true) ax->setRange(new_min_x,new_max_x); @@ -367,7 +370,7 @@ void DialogPlots::timerEvent(QTimerEvent *event) for (QList >::iterator pit = avgList.begin();pit!=avgList.end();++pit) { for (int i=0;iat(i)/avgsz; + fdata[i] += pit->at(i)/(avgsz+1e-14); } double max_x = 0, max_y = fdata[0]; @@ -382,7 +385,7 @@ void DialogPlots::timerEvent(QTimerEvent *event) { SpectroWidget * ws = m_chat_spec[subid]; QVector vec_points; - for (int i=0;ireplace(vec_points); - if (ws) + if (!(max_x >=1e9 || max_x <-1e9 || max_y >1e9 ||max_y < -1e9 || max_x - min_x <1e-8)|| + (min_y >=1e9 || min_y <-1e9 || min_x >1e9 ||min_x < -1e9|| max_y - min_y <1e-8)) { - QChart * ca = m_chars[subid]; - QValueAxis * axx = m_char_axis_x[subid]; - QValueAxis * axy = m_char_axis_y[subid]; - double dmin = axx->min(); - double dmax = axx->max(); - QRectF r = ca->plotArea(); - - ws->setMinMaxRange(axy->min(),axy->max()); - - ws->append_data(vec_tmp, - r.left(), - r.right(), - dmin, - dmax - ); - - + serials->replace(vec_points); + if (ws) + { + QChart * ca = m_chars[subid]; + QValueAxis * axx = m_char_axis_x[subid]; + QValueAxis * axy = m_char_axis_y[subid]; + double dmin = axx->min(); + double dmax = axx->max(); + QRectF r = ca->plotArea(); + + ws->setMinMaxRange(axy->min(),axy->max()); + + ws->append_data(vec_tmp, + r.left(), + r.right(), + dmin, + dmax + ); + + + } } @@ -438,8 +445,9 @@ void DialogPlots::timerEvent(QTimerEvent *event) if (yreplace(lstpts); + if (!(max_x >=1e9 || max_x <-1e9 || max_y >1e9 ||max_y < -1e9 || max_x - min_x <1e-8)|| + (min_y >=1e9 || min_y <-1e9 || min_x >1e9 ||min_x < -1e9|| max_y - min_y <1e-8)) + serials->replace(lstpts); } //QChart *chart = m_chars[subid]; @@ -465,6 +473,10 @@ void DialogPlots::timerEvent(QTimerEvent *event) if (min_y < new_min_y) new_min_y = min_y,needup_y=true; if (min_y > new_min_y * 1.2) new_min_y = min_y,needup_y=true; + if (max_x >=1e9 || max_x <-1e9 || max_y >1e9 ||max_y < -1e9 || max_x - min_x <1e-8) + needup_x = false,needup_y = false; + if (min_y >=1e9 || min_y <-1e9 || min_x >1e9 ||min_x < -1e9|| max_y - min_y <1e-8) + needup_x = false,needup_y = false; if (ui->checkBox_auto_reser->isChecked() || needup_x) { -- GitLab