diff --git a/gui/wxmain.cpp b/gui/wxmain.cpp index e92bb00..8089911 100644 --- a/gui/wxmain.cpp +++ b/gui/wxmain.cpp @@ -26,6 +26,7 @@ enum Id { MRunConnect, MRunStart, MRunMeasure, + MRunLogResults, MRunUpload, MRunUnload, MRunEditBSize, @@ -100,6 +101,8 @@ MainFrame::MainFrame() : wxFrame(nullptr, wxID_ANY, "stmdspgui", wxPoint(50, 50) Bind(wxEVT_MENU, &MainFrame::onRunStart, this, Id::MRunStart, wxID_ANY, menuRun->Append(MRunStart, "&Start")); m_run_measure = menuRun->AppendCheckItem(MRunMeasure, "&Measure code time"); + Bind(wxEVT_MENU, &MainFrame::onRunLogResults, this, Id::MRunLogResults, wxID_ANY, + menuRun->AppendCheckItem(MRunLogResults, "&Log results...")); menuRun->AppendSeparator(); Bind(wxEVT_MENU, &MainFrame::onRunUpload, this, Id::MRunUpload, wxID_ANY, menuRun->Append(MRunUpload, "&Upload code")); @@ -144,23 +147,13 @@ void MainFrame::onCloseEvent(wxCloseEvent& event) void MainFrame::onMeasureTimer([[maybe_unused]] wxTimerEvent&) { if (m_conv_result_log != nullptr) { - static unsigned int counter = 0; if (auto samples = m_device->continuous_read(); samples.size() > 0) { for (auto& s : samples) { auto str = wxString::Format("%u\n", s); m_conv_result_log->Write(str.ToAscii(), str.Len()); } - - counter++; } - - //if (counter == 20) { - // m_conv_result_log->Close(); - // delete m_conv_result_log; - // m_conv_result_log = nullptr; - // counter = 0; - //} - } else if (m_status_bar && m_device) { + } else if (m_status_bar && m_run_measure && m_run_measure->IsChecked()) { m_status_bar->SetStatusText(wxString::Format(wxT("Execution time: %u cycles"), m_device->continuous_start_get_measurement())); } @@ -409,12 +402,6 @@ void MainFrame::onRunStart(wxCommandEvent& ce) if (!m_is_running) { if (m_device != nullptr && m_device->connected()) { - if (m_conv_result_log != nullptr) { - m_conv_result_log->Close(); - delete m_conv_result_log; - } - m_conv_result_log = new wxFileOutputStream("results.csv"); - if (m_run_measure && m_run_measure->IsChecked()) { m_device->continuous_start_measure(); m_measure_timer->StartOnce(1000); @@ -431,11 +418,6 @@ void MainFrame::onRunStart(wxCommandEvent& ce) m_status_bar->SetStatusText("Please connect."); } } else { - if (m_conv_result_log != nullptr) { - m_conv_result_log->Close(); - delete m_conv_result_log; - m_conv_result_log = nullptr; - } m_device->continuous_stop(); menuItem->SetItemLabel("&Start"); @@ -444,6 +426,31 @@ void MainFrame::onRunStart(wxCommandEvent& ce) } } +void MainFrame::onRunLogResults(wxCommandEvent& ce) +{ + auto menuItem = dynamic_cast(ce.GetEventUserData()); + if (menuItem->IsChecked()) { + wxFileDialog dialog (this, "Choose log file", "", "", "*.csv", + wxFD_SAVE | wxFD_OVERWRITE_PROMPT); + + if (dialog.ShowModal() != wxID_CANCEL) { + if (m_conv_result_log != nullptr) { + m_conv_result_log->Close(); + delete m_conv_result_log; + m_conv_result_log = nullptr; + } + + m_conv_result_log = new wxFileOutputStream(dialog.GetPath()); + } + + m_status_bar->SetStatusText("Ready."); + } else if (m_conv_result_log != nullptr) { + m_conv_result_log->Close(); + delete m_conv_result_log; + m_conv_result_log = nullptr; + } +} + void MainFrame::onRunEditBSize([[maybe_unused]] wxCommandEvent&) { if (m_device != nullptr && m_device->connected()) { diff --git a/gui/wxmain.hpp b/gui/wxmain.hpp index 01dfc4b..d4d24de 100644 --- a/gui/wxmain.hpp +++ b/gui/wxmain.hpp @@ -34,6 +34,7 @@ public: void onRunConnect(wxCommandEvent&); void onRunStart(wxCommandEvent&); + void onRunLogResults(wxCommandEvent&); void onRunUpload(wxCommandEvent&); void onRunUnload(wxCommandEvent&); void onRunEditBSize(wxCommandEvent&); diff --git a/source/dac.cpp b/source/dac.cpp index eada21b..1a7254a 100644 --- a/source/dac.cpp +++ b/source/dac.cpp @@ -30,7 +30,7 @@ constexpr static const DACConversionGroup dac_group_config = { }; constexpr static const GPTConfig gpt_config = { - .frequency = 1440000, + .frequency = 14400000, .callback = nullptr, .cr2 = TIM_CR2_MMS_1, /* TRGO */ .dier = 0