Recreated device sync, part I.

This commit is contained in:
2025-12-28 14:42:12 +01:00
parent a0bedf254d
commit 94323e7409
5 changed files with 35 additions and 34 deletions

View File

@@ -83,11 +83,16 @@ QTableView* BCDevicePanel::getValueView()
} }
const BCValueList& BCDevicePanel::getValueList()
{
return _valueModel.getValueList();
}
void BCDevicePanel::onValueListReady( BCDevice::ID deviceID, BCValueList valueList ) void BCDevicePanel::onValueListReady( BCDevice::ID deviceID, BCValueList valueList )
{ {
qDebug() << " --- onValueListReady: " << getHeaderText() <<" : " << deviceID << ": " << valueList.size(); qDebug() << " --- onValueListReady: " << getHeaderText() <<" : " << deviceID << ": " << valueList.size();
if(_devideID == deviceID) if(_devideID == deviceID)
_valueModel.setValueList( valueList ); _valueModel.takeValueList( valueList );
} }
/* /*

View File

@@ -50,10 +50,8 @@ public:
void setDeviceID( BCDevice::ID deviceID ); void setDeviceID( BCDevice::ID deviceID );
BCDevice::ID getDeviceID() const; BCDevice::ID getDeviceID() const;
BCValueList& exposeValueList();
QTableView* getValueView(); QTableView* getValueView();
const BCValueList& getValueList();
public slots: public slots:

View File

@@ -162,9 +162,10 @@ void BCMainWindow::initMainWindow()
// C) Aufräumen: Wenn Thread endet, lösche den Runner // C) Aufräumen: Wenn Thread endet, lösche den Runner
connect(&_worker, &QThread::finished, &_transmitter, &QObject::deleteLater); connect(&_worker, &QThread::finished, &_transmitter, &QObject::deleteLater);
// 5. Thread starten // 5. Thread starten
_worker.start(); _worker.start();
_consoleAction->trigger();
} }
@@ -179,7 +180,7 @@ void BCMainWindow::onValueListReady( BCDevice::ID deviceID )
BCValueList& newValueList = _dataManager.getCurrentValueList(); BCValueList& newValueList = _dataManager.getCurrentValueList();
qDebug() << " --- Before: " << victim.size() << " orig:" << newValueList.size(); qDebug() << " --- Before: " << victim.size() << " orig:" << newValueList.size();
victim = std::exchange(newValueList, BCValueList()); victim = std::exchange(newValueList, BCValueList());
//_devicePanels[deviceID]->setValueList( newValueList ); //_devicePanels[deviceID]->exchangeValueList( newValueList );
qDebug() << " ---After: " << victim.size() << " orig:" << newValueList.size(); qDebug() << " ---After: " << victim.size() << " orig:" << newValueList.size();
} }
} }
@@ -230,40 +231,35 @@ void BCMainWindow::onRunnerMessage(const QString &msg)
void BCMainWindow::onSyncFromDevice() void BCMainWindow::onSyncFromDevice()
{ {
qDebug() << " ---Syncing"; qDebug() << " ---Syncing";
/*
if( _currentDeviceID != BCDevice::ID::Invalid ) Q_ASSERT(_currentPanel && "currentpanel ist null!");
const BCValueList& currentList =_currentPanel->getValueList();
// alle einzeln? echt jetzt?
for( const BCDataValue& value : currentList )
{ {
if( _valueModels.contains(_currentDeviceID) ) qDebug() << " --- value: " << value.label;
{
BCValueModel* model = _valueModels[_currentDeviceID]; // statt '_transmitter.enqueueValueCommand( value )' entkoppeln
BCValueList& currentList = model->getValueList(); // wir das eleganter über emit sendValueCommand()
//BCDataValue& value = currentList[4]; //_transmitter.enqueueValueCommand( value );
emit sendValueCommand( BC::OpID::ReadValue, &value);
for( const BCDataValue& value : currentList ) emit valueTouched( value.rowInModel );
{
qDebug() << " --- value: " << value.label;
// statt '_transmitter.enqueueValueCommand( value )' entkoppeln bc::processEventsFor(500);
// wir das eleganter über emit sendValueCommand()
//_transmitter.enqueueValueCommand( value ); //QApplication::processEvents();
emit sendValueCommand( BC::OpID::ReadValue, &value); // Thread schlafen lassen (Simulation einer blockierenden Operation)
//QThread::msleep(500);
emit valueTouched( value.rowInModel );
bc::processEventsFor(500);
//QApplication::processEvents();
// Thread schlafen lassen (Simulation einer blockierenden Operation)
//QThread::msleep(500);
}
} // if contains
} }
*/
} }

View File

@@ -55,10 +55,11 @@ const BCValueList& BCValueModel::getValueList()
} }
void BCValueModel::setValueList(const BCValueList& valueList) void BCValueModel::takeValueList(BCValueList& newValueList)
{ {
beginResetModel(); beginResetModel();
_valueList = valueList; // hier nehmen wir die valueList in Besitz.
_valueList = std::exchange(newValueList, {} );
endResetModel(); endResetModel();
} }

View File

@@ -53,7 +53,8 @@ public:
explicit BCValueModel(QObject *parent = nullptr); explicit BCValueModel(QObject *parent = nullptr);
void addValue(const BCDataValue& val); void addValue(const BCDataValue& val);
void setValueList(const BCValueList& valueList);
void takeValueList(BCValueList& valueList);
const BCValueList& getValueList(); const BCValueList& getValueList();
// Pure Virtual Functions von QAbstractTableModel // Pure Virtual Functions von QAbstractTableModel