Added setFromDouble

This commit is contained in:
Christoph Holzheuer
2026-01-13 16:29:02 +01:00
parent beae1c1b3d
commit 95dd9d18e6
4 changed files with 40 additions and 11 deletions

View File

@@ -341,7 +341,7 @@ void BCMainWindow::onSyncDeviceView()
for( const BCValuePtr& value : currentList ) for( const BCValuePtr& value : currentList )
{ {
// wir setzen auf 'lesen' // wir setzen auf 'lesen'
value->getValueFlags().setFlag( BCValue::Flag::ReadMe ); value->setFlag( BCValue::Flag::ReadMe );
// statt '_transmitter.onUpdateValue( value )' müssen wir hier // statt '_transmitter.onUpdateValue( value )' müssen wir hier
// über emit requestValueUpdate() zur Thread sysnchronisation // über emit requestValueUpdate() zur Thread sysnchronisation

View File

@@ -151,14 +151,15 @@ void BCTransmitter::onUpdateValue( BCValuePtrConst valuePtr)
uint32_t newValue = value.getRawValue(); uint32_t newValue = value.getRawValue();
BCValue::Flag newState = BCValue::Flag::Failed; BCValue::Flag newState = BCValue::Flag::Failed;
if(value.getValueFlags().testFlag( BCValue::Flag::WriteMe ) )
if(value.testFlag( BCValue::Flag::WriteMe ) )
{ {
} }
// oder sollen wir hier beides erlauben ? readFlag & writeFlag ? // oder sollen wir hier beides erlauben ? readFlag & writeFlag ?
// Was kommt dann zuerst? Schreiben und lesen als verify ? // Was kommt dann zuerst? Schreiben und lesen als verify ?
else if( value.getValueFlags().testFlag( BCValue::Flag::ReadMe ) ) else if( value.testFlag( BCValue::Flag::ReadMe ) )
{ {
// wir sind hier im anderen thread! nicht einfach so reinschreiben, nur lesen // wir sind hier im anderen thread! nicht einfach so reinschreiben, nur lesen
TransmitResult result = value.isWord() ? readWordValue( devID, regID ) : readByteValue( devID, regID ); TransmitResult result = value.isWord() ? readWordValue( devID, regID ) : readByteValue( devID, regID );

View File

@@ -63,8 +63,33 @@ bool BCValue::isReadOnly() const
return _valueFlags.testFlag(BCValue::Flag::ReadOnly); return _valueFlags.testFlag(BCValue::Flag::ReadOnly);
} }
bool BCValue::testFlag( BCValue::Flag flag ) const
{
return _valueFlags.testFlag( flag );
}
void BCValue::setFlag( BCValue::Flag flag, bool state) const
{
_valueFlags.setFlag( flag, state );
}
void BCValue::setFromDouble( double value ) void BCValue::setFromDouble( double value )
{ {
//if( _isReadOnly)
switch(_valueType)
{
// wir betrachten plain
case ValueType::Bool :
_rawValue = value >0 ? 1 : 0;
break;
case ValueType::Plain :
case ValueType::Number:
case ValueType::Float:
if( _optMin.has_value() && _optMax.has_value() ) if( _optMin.has_value() && _optMax.has_value() )
{ {
@@ -73,9 +98,12 @@ void BCValue::setFromDouble( double value )
value = qBound( min,value,max); value = qBound( min,value,max);
} }
_rawValue = value / _factor; _rawValue = value / _factor;
default :
break;
}
} }

View File

@@ -104,8 +104,8 @@ public:
bool isWord() const; bool isWord() const;
bool isReadOnly() const; bool isReadOnly() const;
Flags& getValueFlags() const noexcept { return _valueFlags; } bool testFlag( Flag flag ) const;
void setValueFlags(Flags newFlags) { _valueFlags = newFlags; } void setFlag( Flag flag, bool state=true ) const;
BCDevice::ID getDeviceID() const noexcept { return _deviceID; } BCDevice::ID getDeviceID() const noexcept { return _deviceID; }
BC::ID getRegisterID() const noexcept { return _registerID; } BC::ID getRegisterID() const noexcept { return _registerID; }