diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/stmdsp.cpp | 10 | ||||
-rw-r--r-- | gui/stmdsp.hpp | 1 | ||||
-rw-r--r-- | gui/wxmain.cpp | 30 | ||||
-rw-r--r-- | gui/wxmain.hpp | 1 |
4 files changed, 42 insertions, 0 deletions
diff --git a/gui/stmdsp.cpp b/gui/stmdsp.cpp index 633c61a..3de3324 100644 --- a/gui/stmdsp.cpp +++ b/gui/stmdsp.cpp @@ -52,6 +52,16 @@ namespace stmdsp } } + void device::set_sample_rate(unsigned int id) { + if (connected()) { + uint8_t request[2] = { + 'r', + static_cast<uint8_t>(id) + }; + m_serial.write(request, 2); + } + } + void device::continuous_start() { if (connected()) m_serial.write("R"); diff --git a/gui/stmdsp.hpp b/gui/stmdsp.hpp index 46113bf..25c6a8c 100644 --- a/gui/stmdsp.hpp +++ b/gui/stmdsp.hpp @@ -44,6 +44,7 @@ namespace stmdsp //std::vector<adcsample_t> sample(unsigned long int count = 1); void continuous_set_buffer_size(unsigned int size); + void set_sample_rate(unsigned int id); void continuous_start(); void continuous_start_measure(); uint32_t continuous_start_get_measurement(); diff --git a/gui/wxmain.cpp b/gui/wxmain.cpp index c9e8b3d..412f775 100644 --- a/gui/wxmain.cpp +++ b/gui/wxmain.cpp @@ -29,6 +29,7 @@ enum Id { MRunUpload, MRunUnload, MRunEditBSize, + MRunEditSRate, MRunGenUpload, MRunGenStart, MCodeCompile, @@ -106,6 +107,8 @@ MainFrame::MainFrame() : wxFrame(nullptr, wxID_ANY, "stmdspgui", wxPoint(50, 50) menuRun->Append(MRunUnload, "U&nload code")); Bind(wxEVT_MENU, &MainFrame::onRunEditBSize, this, Id::MRunEditBSize, wxID_ANY, menuRun->Append(MRunEditBSize, "Set &buffer size...")); + Bind(wxEVT_MENU, &MainFrame::onRunEditSRate, this, Id::MRunEditSRate, wxID_ANY, + menuRun->Append(MRunEditSRate, "Set sample &rate...")); menuRun->AppendSeparator(); Bind(wxEVT_MENU, &MainFrame::onRunGenUpload, this, Id::MRunGenUpload, wxID_ANY, @@ -439,6 +442,33 @@ void MainFrame::onRunEditBSize([[maybe_unused]] wxCommandEvent&) } } +void MainFrame::onRunEditSRate([[maybe_unused]] wxCommandEvent&) +{ + if (m_device != nullptr && m_device->connected()) { + wxTextEntryDialog dialog (this, "Enter new sample rate id:", "Set Sample Rate"); + if (dialog.ShowModal() == wxID_OK) { + if (wxString value = dialog.GetValue(); !value.IsEmpty()) { + if (unsigned long n; value.ToULong(&n)) { + if (n < 20) { + m_device->set_sample_rate(n); + } else { + m_status_bar->SetStatusText("Error: Invalid sample rate."); + } + } else { + m_status_bar->SetStatusText("Error: Invalid sample rate."); + } + } else { + m_status_bar->SetStatusText("Ready."); + } + } else { + m_status_bar->SetStatusText("Ready."); + } + } else { + wxMessageBox("No device connected!", "Run", wxICON_WARNING); + m_status_bar->SetStatusText("Please connect."); + } +} + void MainFrame::onRunGenUpload([[maybe_unused]] wxCommandEvent&) { if (m_device != nullptr && m_device->connected()) { diff --git a/gui/wxmain.hpp b/gui/wxmain.hpp index 60c3ee1..c46ed95 100644 --- a/gui/wxmain.hpp +++ b/gui/wxmain.hpp @@ -37,6 +37,7 @@ public: void onRunUpload(wxCommandEvent&); void onRunUnload(wxCommandEvent&); void onRunEditBSize(wxCommandEvent&); + void onRunEditSRate(wxCommandEvent&); void onRunGenUpload(wxCommandEvent&); void onRunGenStart(wxCommandEvent&); |