From f3fd03b79216e876599277230578387b6c81e979 Mon Sep 17 00:00:00 2001 From: AKMaily Date: Thu, 17 Oct 2024 10:32:59 +0200 Subject: [PATCH] Axis still in testing, FFT menu structure corrected --- src/handler.cpp | 57 ++++++++++++++++++++++++++--------------------- src/languages.hpp | 9 +++++--- src/style.cpp | 4 ++-- 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/handler.cpp b/src/handler.cpp index 26598e8d..08fa8c7f 100644 --- a/src/handler.cpp +++ b/src/handler.cpp @@ -23,7 +23,7 @@ static std::vector plotAxes; static std::vector getDeviceInfos() { std::vector axisInfos; std::vector samplerDvcs; // store live devices - std::vector> assignedEgus; + std::vector> assignedEgus; if (sampler.has_value()) for (auto const &device : sampler->sampleDevices) { std::string egu = @@ -32,34 +32,39 @@ static std::vector getDeviceInfos() { auto deviceId = id.value(); samplerDvcs.push_back(deviceId); if (captureData.contains(deviceId)) { - if (!std::ranges::contains(assignedEgus, egu, - &std::pair::first)){ - const int maxAxes = 3; // Maximale Anzahl der Achsen (hier 3) - if (assignedEgus.size() < maxAxes) { - static_assert((ImAxis_Y1 + 1) == ImAxis_Y2, "Achsenwerte haben sich geändert"); - - ImAxis_ nextYAxis = static_cast(ImAxis_Y1 + assignedEgus.size()); - - if (assignedEgus.size() < maxAxes) { - assignedEgus.emplace_back(egu, nextYAxis); - fmt::print("Achse hinzugefügt. Neue EGU-Achse für: {}\nDevice id: {}", egu, id.value()); - } else { - fmt::print("Zu viele Achsen hinzugefügt. Keine weitere EGU-Achse für: {}\nDevice id: {}", egu, id.value()); - } - } - else { - //Error print if more than 3 axis are used - fmt::print("Maximale Anzahl an Achsen (3) erreicht. Keine weitere Achse hinzugefügt für: " - "{}\nDevice id: {}", egu, id.value()); - } - } - axisInfos.push_back({{deviceId, std::ref(captureData[deviceId])}, - assignedEgus.back(), - std::to_string(deviceId.sampleRate)}); - } + const int maxAxes = 3; // Maximale Anzahl der Achsen (hier 3) + + auto deviceIdExists = std::find_if(assignedEgus.begin(), assignedEgus.end(), + [&deviceId](const auto& pair) { + return pair.first == deviceId; + }) != assignedEgus.end(); + + if (!deviceIdExists && assignedEgus.size() < maxAxes) { + static_assert((ImAxis_Y1 + 1) == ImAxis_Y2, "Achsenwerte haben sich geändert"); + + ImAxis_ nextYAxis = static_cast(ImAxis_Y1 + assignedEgus.size()); + + // Zuweisen einer neuen Achse, wenn noch weniger als maxAxes vorhanden sind + if (assignedEgus.size() < maxAxes) { + assignedEgus.emplace_back(std::make_pair(deviceId, nextYAxis)); + fmt::print("Achse hinzugefügt. Neue EGU-Achse für: {}\nDevice id: {}", egu, deviceId.serial); + } else { + fmt::print("Zu viele Achsen hinzugefügt. Keine weitere EGU-Achse für: {}\nDevice id: {}", egu, deviceId.serial); + } + } else { + // Fehlermeldung, wenn zu viele Achsen verwendet werden oder das Gerät schon eine Achse hat + fmt::print("Maximale Anzahl an Achsen (3) erreicht oder Achse bereits vorhanden. " + "Keine weitere Achse hinzugefügt für: {}\nDevice id: {}", egu, deviceId.serial); + } + + // Speichern der Achse in axisInfos + axisInfos.push_back({{deviceId, std::ref(captureData[deviceId])}, + {egu, assignedEgus.back().second}, + std::to_string(deviceId.sampleRate)}); } else fmt::println("Error no device id found"); } + } // also get loaded files info for (auto &[device, values] : captureData) if (std::ranges::find(samplerDvcs, device.serial, &Omniscope::Id::serial) == diff --git a/src/languages.hpp b/src/languages.hpp index ac061066..7788e47d 100644 --- a/src/languages.hpp +++ b/src/languages.hpp @@ -93,7 +93,8 @@ enum class Key { Path, FFT_Analyze, Analyse_Answer_Text, - SeeAnalyzeResults + SeeAnalyzeResults, + MathematicalAnalysis }; inline const std::map englishLan{ @@ -185,7 +186,8 @@ inline const std::map englishLan{ {Key::ADC_counts, "ADC counts"}, {Key::FFT_Analyze, "FFT Analysis"}, {Key::Analyse_Answer_Text, "Your analysis results are ready! \n They are saved in the /analyze folder."}, - {Key::SeeAnalyzeResults, "Load results"}}; + {Key::SeeAnalyzeResults, "Load results"}, + {Key::MathematicalAnalysis, "Mathematical Analysis"}}; inline const std::map germanLan{ {Key::Known_Car, "Fahrzeugauswahl"}, @@ -277,7 +279,8 @@ inline const std::map germanLan{ {Key::ADC_counts, "ADC Zählungen"}, {Key::FFT_Analyze, "FFT Analyse"}, {Key::Analyse_Answer_Text, "Deine Analyseergebnisse sind da ! \n Sie befinden sich im /analyze Ordner"}, - {Key::SeeAnalyzeResults, "Lade Ergebnisse"}}; + {Key::SeeAnalyzeResults, "Lade Ergebnisse"}, + {Key::MathematicalAnalysis, "Mathematische Analysen"}}; inline auto appLanguage = englishLan; namespace fs = std::filesystem; diff --git a/src/style.cpp b/src/style.cpp index 14b0f8a6..ee25a45d 100644 --- a/src/style.cpp +++ b/src/style.cpp @@ -329,9 +329,9 @@ void set_side_menu(const nlohmann::json &config, bool &open_settings, if (showDiag && !showDiagPrev) ImGui::SetNextItemOpen(false); - if (showDiag && ImGui::TreeNode(appLanguage[Key::FFT_Analyze])) { + if (showDiag && ImGui::TreeNode(appLanguage[Key::MathematicalAnalysis])) { ImGui::PushStyleColor(ImGuiCol_Text, inctColStyle); - if (ImGui::Button(appLanguage[Key::Anlyz_crnt_waveform])){ + if (ImGui::Button(appLanguage[Key::FFT_Analyze])){ open_analyze_menu = true; showDiag = false; }