From 8a73aa8069b2f21c4f18d25a28a24c120cb9495c Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Fri, 28 Sep 2018 17:53:46 +0200 Subject: [PATCH] fixes --- DataService.pro | 6 ++++-- chart.cpp | 2 +- chart.h | 2 +- conversionqueue.h | 1 + databuffer.cpp | 16 ++++++++++++++-- databuffer.h | 8 ++++++-- mainwindow.cpp | 6 +++--- multichartview.cpp | 20 ++++++++++---------- multichartview.h | 5 +++-- 9 files changed, 43 insertions(+), 23 deletions(-) diff --git a/DataService.pro b/DataService.pro index df1f653..0ad4fb5 100644 --- a/DataService.pro +++ b/DataService.pro @@ -26,24 +26,26 @@ DEFINES += QT_DEPRECATED_WARNINGS SOURCES += \ main.cpp \ mainwindow.cpp \ + databuffer.cpp \ dataservice.cpp \ dataqueue.cpp \ dataloader.cpp \ dataresult1d.cpp \ datarequest.cpp \ - converttoseries.cpp \ + conversionqueue.cpp \ chart.cpp \ chartview.cpp \ multichartview.cpp HEADERS += \ mainwindow.h \ + databuffer.h \ dataservice.h \ dataqueue.h \ dataloader.h \ dataresult1d.h \ datarequest.h \ - converttoseries.h \ + conversionqueue.h \ chart.h \ chartview.h \ multichartview.h diff --git a/chart.cpp b/chart.cpp index 5dd0e0c..89c093d 100644 --- a/chart.cpp +++ b/chart.cpp @@ -59,7 +59,7 @@ void Chart::XRangeChanged(qreal min, qreal max) { if (series().at(0)->type() == QtCharts::QAbstractSeries::SeriesTypeLine) { QLineSeries *s = static_cast(series().at(0)); if (max > s->at(s->count()-1).x()) { - emit newDataRequest(this->entityId, max); + emit newDataRequest(this->entityId, min, max); } } } diff --git a/chart.h b/chart.h index 193152c..95eb7d5 100644 --- a/chart.h +++ b/chart.h @@ -27,6 +27,6 @@ public slots: void XRangeChanged(qreal min, qreal max); signals: - void newDataRequest(const std::string &entityId, qreal max); + void newDataRequest(const std::string &entityId, qreal min, qreal max); }; #endif // CHART_H diff --git a/conversionqueue.h b/conversionqueue.h index 5950023..2528e99 100644 --- a/conversionqueue.h +++ b/conversionqueue.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "dataresult1d.h" diff --git a/databuffer.cpp b/databuffer.cpp index 280d924..1163ca2 100644 --- a/databuffer.cpp +++ b/databuffer.cpp @@ -1,6 +1,6 @@ #include "databuffer.h" -DataBuffer::DataBuffer(const nix::DataArray &array) : arrayId(array.id()), minRange(0.0), maxRange(0.0) +DataBuffer::DataBuffer(const nix::DataArray &array) : arrayId(array.id()), rangeMin(0.0), rangeMax(0.0) { buffer = new QVector; } @@ -9,7 +9,19 @@ DataBuffer::~DataBuffer() { delete buffer; } -double DataBuffer::rangeMaximum() { +QVector * DataBuffer::getBuffer() { + return buffer; +} + +double DataBuffer::rangeMinimum() const { + return rangeMin; +} + +void DataBuffer::rangeMinimum(double min) { + rangeMin = min; +} + +double DataBuffer::rangeMaximum() const { return rangeMax; } diff --git a/databuffer.h b/databuffer.h index 7a14115..897e732 100644 --- a/databuffer.h +++ b/databuffer.h @@ -2,6 +2,8 @@ #define DATABUFFER_H #include +#include +#include class DataBuffer { @@ -14,12 +16,14 @@ private: QVector *buffer; double rangeMin, rangeMax; - double rangeMaximum(); +public: + double rangeMaximum() const; void rangeMaximum(double max); - double rangeMinimum(); + double rangeMinimum() const; void rangeMinimum(double min); + QVector * getBuffer(); }; diff --git a/mainwindow.cpp b/mainwindow.cpp index 1554eca..6afba0a 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,6 +1,5 @@ #include "mainwindow.h" #include "ui_mainwindow.h" -#include "converttoseries.h" #include #include "chart.h" #include "chartview.h" @@ -27,12 +26,13 @@ MainWindow::MainWindow(QWidget *parent) : dataQueue.start(); conversionQueue.start(); - /* + file = nix::File::open("/home/grewe/zwischenlager/2017-08-17-af-invivo-1/2017-08-17-af-invivo-1.nix", nix::FileMode::ReadOnly); -*/ + /* file = nix::File::open("/Users/jan/zwischenlager/threading_test/dataservice/data/2017-08-17-af-invivo-1.nix", nix::FileMode::ReadOnly); + */ nix::Block b = file.getBlock(0); this->voltage = b.getDataArray("V-1"); this->eod = b.getDataArray("EOD"); diff --git a/multichartview.cpp b/multichartview.cpp index d7197a8..935e7fc 100644 --- a/multichartview.cpp +++ b/multichartview.cpp @@ -1,6 +1,5 @@ #include "multichartview.h" #include "ui_multichartview.h" -#include "converttoseries.h" using namespace QtCharts; @@ -29,7 +28,7 @@ MultiChartView::~MultiChartView() for (vit = viewMap.begin(); vit != viewMap.end(); vit++) { delete vit->second; } - std::map*>::iterator ait; + std::map::iterator ait; for (ait = data_buffer.begin(); ait != data_buffer.end(); ait++) { delete ait->second; } @@ -44,8 +43,9 @@ void MultiChartView::addArray(const nix::DataArray &array) { this->arrayMap.insert(std::pair(array.id(), array)); ArrayInfo ai(array); this->infoMap.insert(std::pair(ai.arrayid, &ai)); - QVector *buffer = new QVector(); - this->data_buffer.insert(std::pair*>(ai.arrayid, buffer)); + + DataBuffer *buff = new DataBuffer(array); + this->data_buffer.insert(std::pair(ai.arrayid, buff)); Chart* chart = createChart(ai); ChartView *view = createChartView(chart, ai); @@ -91,7 +91,7 @@ Chart* MultiChartView::createChart(const ArrayInfo &info) { chart->setAxisX(axisX); connect(axisX, SIGNAL(rangeChanged(qreal,qreal)), chart, SLOT(XRangeChanged(qreal,qreal))); - connect(chart, SIGNAL(newDataRequest(std::string,qreal)), this, SLOT(newDataRequest(std::string, qreal))); + connect(chart, SIGNAL(newDataRequest(std::string, qreal, qreal)), this, SLOT(newDataRequest(std::string, qreal, qreal))); this->chartMap.insert(std::pair(info.arrayid, chart)); return chart; } @@ -115,10 +115,10 @@ void MultiChartView::loadData(const ArrayInfo &info) { } -void MultiChartView::newDataRequest(const std::string &entity_id, qreal max) { +void MultiChartView::newDataRequest(const std::string &entity_id, qreal min, qreal max) { std::cerr << "request new data from: "<< entity_id << " with max: "<< max << std::endl; - nix::NDSize offset(1, data_buffer[entity_id]->size()); + nix::NDSize offset(1, data_buffer[entity_id]->getBuffer()->size()); nix::NDSize count(1, 100000); std::string request_id; std::cerr << offset << count; @@ -133,7 +133,7 @@ void MultiChartView::dataReady(QString requestId){ if (data.id.empty()) { return; } - conversionQueue->requestConversion(data_buffer[data.entityId], data); + conversionQueue->requestConversion(data_buffer[data.entityId]->getBuffer(), data); } void MultiChartView::dataConverted(QString entityId, double ymin, double ymax) { @@ -142,7 +142,7 @@ void MultiChartView::dataConverted(QString entityId, double ymin, double ymax) { bool newSeries = false; if (chart->series().size() == 0) { series = new QLineSeries(); - series->replace(*data_buffer[entityId.toStdString()]); + series->replace(*data_buffer[entityId.toStdString()]->getBuffer()); series->setUseOpenGL(true); chart->addSeries(series); QPen pen = series->pen(); @@ -151,7 +151,7 @@ void MultiChartView::dataConverted(QString entityId, double ymin, double ymax) { newSeries = true; } else { series = static_cast(chart->series().at(0)); - series->replace(*data_buffer[entityId.toStdString()]); + series->replace(*data_buffer[entityId.toStdString()]->getBuffer()); } if (chart->axisX()->type() == QAbstractAxis::AxisTypeValue) { diff --git a/multichartview.h b/multichartview.h index c4f159f..deabfaf 100644 --- a/multichartview.h +++ b/multichartview.h @@ -7,6 +7,7 @@ #include #include "dataqueue.h" +#include "databuffer.h" #include "conversionqueue.h" #include "chart.h" #include "chartview.h" @@ -115,7 +116,7 @@ private: std::map chartMap; std::map viewMap; std::map infoMap; - std::map*> data_buffer; + std::map data_buffer; QFont labelFont, tickLabelFont; Chart* createChart(const ArrayInfo &info); @@ -124,7 +125,7 @@ private: public slots: void dataReady(QString requestId); void dataConverted(QString entityId, double ymin, double ymax); - void newDataRequest(const std::string &entity_id, qreal max); + void newDataRequest(const std::string &entity_id, qreal min, qreal max); }; #endif // MULTICHARTVIEW_H