aboutsummaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
Diffstat (limited to 'gui')
-rw-r--r--gui/stmdsp.cpp24
-rw-r--r--gui/wxmain.cpp31
-rw-r--r--gui/wxmain.hpp1
3 files changed, 51 insertions, 5 deletions
diff --git a/gui/stmdsp.cpp b/gui/stmdsp.cpp
index 3de3324..2091d48 100644
--- a/gui/stmdsp.cpp
+++ b/gui/stmdsp.cpp
@@ -84,10 +84,26 @@ namespace stmdsp
std::vector<adcsample_t> device::continuous_read() {
if (connected()) {
- m_serial.write("a");
- std::vector<adcsample_t> data (2048);
- m_serial.read(reinterpret_cast<uint8_t *>(data.data()), 2048 * sizeof(adcsample_t));
- return data;
+ m_serial.write("s");
+ unsigned char sizebytes[2];
+ m_serial.read(sizebytes, 2);
+ unsigned int size = sizebytes[0] | (sizebytes[1] << 8);
+ if (size > 0) {
+ std::vector<adcsample_t> data (size);
+ unsigned int total = size * sizeof(adcsample_t);
+ unsigned int offset = 0;
+
+ while (total > 512) {
+ m_serial.read(reinterpret_cast<uint8_t *>(&data[0]) + offset, 512);
+ m_serial.write("n");
+ offset += 512;
+ total -= 512;
+ }
+ m_serial.read(reinterpret_cast<uint8_t *>(&data[0]) + offset, total);
+ m_serial.write("n");
+ return data;
+
+ }
}
return {};
diff --git a/gui/wxmain.cpp b/gui/wxmain.cpp
index 412f775..e92bb00 100644
--- a/gui/wxmain.cpp
+++ b/gui/wxmain.cpp
@@ -143,7 +143,24 @@ void MainFrame::onCloseEvent(wxCloseEvent& event)
void MainFrame::onMeasureTimer([[maybe_unused]] wxTimerEvent&)
{
- if (m_status_bar && m_device) {
+ 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) {
m_status_bar->SetStatusText(wxString::Format(wxT("Execution time: %u cycles"),
m_device->continuous_start_get_measurement()));
}
@@ -392,11 +409,18 @@ 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);
} else {
m_device->continuous_start();
+ m_measure_timer->Start(15);
}
menuItem->SetItemLabel("&Stop");
@@ -407,6 +431,11 @@ 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");
diff --git a/gui/wxmain.hpp b/gui/wxmain.hpp
index c46ed95..01dfc4b 100644
--- a/gui/wxmain.hpp
+++ b/gui/wxmain.hpp
@@ -56,6 +56,7 @@ private:
wxTimer *m_measure_timer = nullptr;
wxStatusBar *m_status_bar = nullptr;
wxMenuBar *m_menu_bar = nullptr;
+ wxFileOutputStream *m_conv_result_log = nullptr;
wxString m_open_file_path;
wxString m_temp_file_name;