From 4309d2231e24e19ce8f32e3bd73fae56c9d0b5a8 Mon Sep 17 00:00:00 2001 From: "DIASPORA\\chris" Date: Sun, 18 Jan 2026 22:47:26 +0100 Subject: [PATCH] Changed setRaw Value --- bctransmitter.cpp | 3 +-- bcvalue.cpp | 22 +++++++++++++++++++++- bcvaluedelegate.cpp | 5 ++--- bcvaluedelegate.h | 2 ++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/bctransmitter.cpp b/bctransmitter.cpp index af0d367..90d95d8 100644 --- a/bctransmitter.cpp +++ b/bctransmitter.cpp @@ -166,8 +166,7 @@ void BCTransmitter::onUpdateValue( BCValuePtrConst valuePtr) if( result.has_value() ) { newState = BCValue::Flag::InSync; - newValue = result.value(); - //qDebug() << " ---- " << BCTimeStamp << " DevID: " << devID << " RegID: " << regID << " Value: " << newValue; + newValue = result.value(); } } diff --git a/bcvalue.cpp b/bcvalue.cpp index c9ddff5..1ed0673 100644 --- a/bcvalue.cpp +++ b/bcvalue.cpp @@ -90,9 +90,29 @@ uint32_t BCValue::getRawValue() const noexcept return _rawValue; } +/** + * @brief Speichert einen via CAN-Bus gelesenen Wert in + * der BCValue Struktur. + */ + void BCValue::setRawValue(uint32_t newRawValue) const { - _rawValue = newRawValue; + // die per Zufallsgenerator erzeugten Werte des Dummy-Treibers + // können beliebigen Unsinn enthalten, also müssen wir sie + // auch skalieren. + + double value = newRawValue * _factor; + + if( _optMin.has_value() && _optMax.has_value() ) + { + + double min = _optMin.value(); + double max = _optMax.value(); + + value = (int) qBound( min,value, max); + } + + _rawValue = value / _factor; } diff --git a/bcvaluedelegate.cpp b/bcvaluedelegate.cpp index 3a5610a..6e15392 100644 --- a/bcvaluedelegate.cpp +++ b/bcvaluedelegate.cpp @@ -60,10 +60,9 @@ QWidget* BCValueDelegate::createEditor(QWidget *parent, const QStyleOptionViewIt Q_UNUSED(option) Q_UNUSED(index) - const BCValue& bcValue = *(_valueList[ index.row()].get()); + const BCValue& bcValue = *(_valueList[ index.row()].get()); - - qDebug() << " --- upsy: " << bcValue.getLabel() << " ratio: " << bcValue.calcMinMaxRatio() << " raw: " << bcValue.getRawValue() << " scaled: " << bcValue.getScaledValue(); + qDebug() << " --- Create Editor: " << bcValue.getLabel() << " ratio: " << bcValue.calcMinMaxRatio() << " raw: " << bcValue.getRawValue() << " scaled: " << bcValue.getScaledValue(); auto* valueEditor = new BCValueEditor(bcValue.getScaledValue(), parent); diff --git a/bcvaluedelegate.h b/bcvaluedelegate.h index 95a9741..6856a2e 100644 --- a/bcvaluedelegate.h +++ b/bcvaluedelegate.h @@ -59,6 +59,8 @@ public: void clearAllHighlights(); +signals: + public slots: void onHighlightRow(int row);