From 8027708b3ec78058842f90e83ace04c70f3fc860 Mon Sep 17 00:00:00 2001 From: Kizarm Date: Fri, 15 Nov 2024 14:16:56 +0100 Subject: [PATCH] small changes --- V203/usb/scope/README.md | 10 +++++++++- V203/usb/scope/software/displaywidget.cpp | 11 +++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/V203/usb/scope/README.md b/V203/usb/scope/README.md index a76b81f..2b9cf27 100644 --- a/V203/usb/scope/README.md +++ b/V203/usb/scope/README.md @@ -13,13 +13,21 @@ Omezení zde je poměrně malá RAM. Ovládací program je napsán v Qt5. Je třeba modul QSerialPort, jinak na tom není nic extra. Asi by to šlo naportovat i na Windows, ale chce to minimálně změnit název sériového portu. +Ovládání je nepodobné obvyklému GUI osciloskopu, ale pokusy s kulatými knoflíky mě přesvědčili +o tom, že je to blbost. Na PC, kde je možné použít myš, je lépe jí fakt použít a GUI se +může smrsknout na pár položek (Item to move), kterými se vybere čím se má hýbat a kliknutí +myši provede kam. Jemně se to dá dostavit kolečkem myši. + +Rozsahy se vybírají rovněž z Combo Boxu. Počáteční nastavení je fakticky uloženo v hardware, +kromě Markerů a ofsetu zobrazení kanálů, to se dá uložit v programu. V zásadě by šlo uložit +i ostatní v programu a při startu to zpět zapsat do hardware, ale zatím to tak není. ## server Zkusil jsem doplnit ovládání přímo z browseru. Použil jsem balíček v Ubuntu (nebo Debian - např. Malina) nlohmann-json3-dev plus https://github.com/mattgodbolt/seasocks, takže lze komunikovat s klientem tímto mechanizmem. Vypadá to, že webové sokety by to mohly zvládnout, zatím to není -úplně doděláno, ale zobrazení chodí. Funguje to jen na Linuxu. +úplně doděláno, ale zobrazení chodí. Funguje to jen na Linuxu, není to úplné a ani nebude, je to jen pokus. ## bin diff --git a/V203/usb/scope/software/displaywidget.cpp b/V203/usb/scope/software/displaywidget.cpp index 159fd32..42c5c87 100644 --- a/V203/usb/scope/software/displaywidget.cpp +++ b/V203/usb/scope/software/displaywidget.cpp @@ -72,10 +72,11 @@ static constexpr double IMULT = 1.0 / FMULT; void DisplayWidget::wheelEvent(QWheelEvent * event) { if (m_ts == nullptr) return; const QPoint d = event->angleDelta(); - const int increment = d.y() > 0 ? +1 : -1; + const double increment = d.y() > 0 ? +1 : -1; + const double zy = -m_inverse.m22(); switch (m_items) { case MOVE_VALUE: { - m_ts->value += increment * 4; + m_ts->value += uint16_t (increment * zy); emit SettingsChanged (m_items); } break; case MOVE_OFSET: { @@ -84,11 +85,11 @@ void DisplayWidget::wheelEvent(QWheelEvent * event) { } break; case MOVE_MARKERA: { if (marker_type == MARKER_TIME) m_time.a += increment; - else m_volt.a += increment; + else m_volt.a += increment * zy; } break; case MOVE_MARKERB: { if (marker_type == MARKER_TIME) m_time.b += increment; - else m_volt.b += increment; + else m_volt.b += increment * zy; } break; case TIME_ZOOM: { const double mx = FMULT * double (size().width()) / x_lenght; @@ -99,8 +100,10 @@ void DisplayWidget::wheelEvent(QWheelEvent * event) { } } break; case OFSET_A: { + m_offset.a += increment * zy; } break; case OFSET_B: { + m_offset.b += increment * zy; } break; default : { qDebug ("wheelEvent : %d", int (m_items));