From 2f3227b668931fa4b7fae4b0f69a6e8e580df802 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Tue, 20 Jun 2023 16:35:56 +0800 Subject: [PATCH] fix: Failed to load the measure information of DSCope on bottom from file --- DSView/pv/mainwindow.cpp | 2 +- DSView/pv/view/viewstatus.cpp | 23 ++++++++++++++++++++--- DSView/pv/view/viewstatus.h | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/DSView/pv/mainwindow.cpp b/DSView/pv/mainwindow.cpp index a126c550..dca9918b 100644 --- a/DSView/pv/mainwindow.cpp +++ b/DSView/pv/mainwindow.cpp @@ -1096,7 +1096,7 @@ namespace pv if (sessionObj.contains("measure")) { auto *bottom_bar = _view->get_viewstatus(); - bottom_bar->load_session(sessionObj["measure"].toArray()); + bottom_bar->load_session(sessionObj["measure"].toArray(), format_ver); } if (gvar_opts != NULL) diff --git a/DSView/pv/view/viewstatus.cpp b/DSView/pv/view/viewstatus.cpp index 0c1eb555..4168b056 100644 --- a/DSView/pv/view/viewstatus.cpp +++ b/DSView/pv/view/viewstatus.cpp @@ -258,7 +258,7 @@ QJsonArray ViewStatus::get_session() return measureVar; } -void ViewStatus::load_session(QJsonArray measure_array) +void ViewStatus::load_session(QJsonArray measure_array, int version) { if (_session->get_device()->get_work_mode() != DSO){ return; @@ -269,11 +269,28 @@ void ViewStatus::load_session(QJsonArray measure_array) std::get<1>(_mrects[i]) = -1; std::get<2>(_mrects[i]) = DSO_MS_BEGIN; } - - for (const QJsonValue &measure_value : measure_array) { + + for (const QJsonValue &measure_value : measure_array) + { QJsonObject m_obj = measure_value.toObject(); int index = m_obj["site"].toInt(); int sig_index = m_obj["index"].toInt(); + + if (version >= 3){ + Signal *trace = NULL; + + for(auto s : _session->get_signals()){ + if (s->get_name().toInt() == sig_index){ + trace = s; + break; + } + } + + if (trace == NULL) + continue; + sig_index = trace->get_index(); + } + enum DSO_MEASURE_TYPE ms_type = DSO_MEASURE_TYPE(m_obj["type"].toInt()); set_measure(index, false, sig_index, ms_type); } diff --git a/DSView/pv/view/viewstatus.h b/DSView/pv/view/viewstatus.h index 67c7c547..87ea2a6f 100644 --- a/DSView/pv/view/viewstatus.h +++ b/DSView/pv/view/viewstatus.h @@ -54,7 +54,7 @@ public: int sig_index, enum DSO_MEASURE_TYPE ms_type); QJsonArray get_session(); - void load_session(QJsonArray meausre_array); + void load_session(QJsonArray meausre_array, int version); void set_capture_status(bool triggered, int progess); public slots: