diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fab5d0..cde4a35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,8 @@ else() set(dd_PlatformDir "x64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64") set(dd_PlatformDir "aarch64") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64|ARM64") + set(dd_PlatformDir "arm64") else() set(dd_PlatformDir "x64") endif() diff --git a/diagramCavas/include/diagramCavas.h b/diagramCavas/include/diagramCavas.h index c9659e2..8abbb26 100644 --- a/diagramCavas/include/diagramCavas.h +++ b/diagramCavas/include/diagramCavas.h @@ -33,6 +33,7 @@ public: DrawingPanel* getPanel(QString); EditPanel* getEditPanel(QString); MonitorPanel* getMonitorPanel(QString); + DataAccessor* getDataAccessor() const {return _dataAccessor;} void updateSubPos(); void passRecommmandHttpData(HttpRecommandInfo); //传递推荐列表数据 diff --git a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h index 0aee13d..ba957df 100644 --- a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h +++ b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h @@ -146,6 +146,7 @@ public Q_SLOTS: void onSignal_GetPointData(QString type,QMap map); void onSignal_generateDiagram(const QString&); //生成工程组态信号 void onSignal_openBayManager(); + void onDataTimerOut(); private: void addPortsToItem_json(PortState,QJsonArray,GraphicsProjectModelItem*); //将json格式的port添加到item void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置,将projectName更新到item @@ -178,6 +179,9 @@ private: QList m_lstMonitorRelation; //监控item层级关系 ItemPropertyDlg* m_curPropertyDlg; + QTimer* m_dataTimer; //获取数据的定时器 + QStringList _curRequestLst; //当前请求对象列表 + QMap> _curData; //当前数据 public: static bool _dataInitialised; }; diff --git a/diagramCavas/include/instance/dataAccessor.h b/diagramCavas/include/instance/dataAccessor.h index 32d01a3..6f71f2d 100644 --- a/diagramCavas/include/instance/dataAccessor.h +++ b/diagramCavas/include/instance/dataAccessor.h @@ -16,6 +16,7 @@ public: ~DataAccessor(); void setParent(DiagramCavas* p) {_parentCavas = p;} + QMap> getTargetData(QStringList); //获取指定名称的值 public slots: void onReceiveHttpData(const QString& sType,const QVariant& data); void onReceiveWebsocketData(const QVariant& data); diff --git a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp index 44955d7..f0b607e 100644 --- a/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp +++ b/diagramCavas/source/graphicsDataModel/fixedPortsModel.cpp @@ -48,6 +48,7 @@ #include "monitorPanel.h" #include "designerView.h" #include "uiCommunicationBus.h" +#include "instance/dataAccessor.h" #include "global.h" bool FixedPortsModel::_dataInitialised = false; @@ -61,6 +62,7 @@ FixedPortsModel::FixedPortsModel(PowerEntity* pEntity) ,m_projectIconSettingDlg(nullptr) ,m_pBayManager(nullptr) ,m_curPropertyDlg(nullptr) + ,m_dataTimer(nullptr) { _cavas = nullptr; loadNodeDataFromDataBase(); @@ -71,6 +73,8 @@ FixedPortsModel::FixedPortsModel(PowerEntity* pEntity) _modelDataInfo = DataManager::instance().modelData(); initialPropertyDlg(); connect(_timer,SIGNAL(timeout()),this,SLOT(onTimeOut())); + connect(m_dataTimer,&QTimer::timeout,this,&FixedPortsModel::onDataTimerOut); + m_dataTimer->setInterval(2000); connect(_Interface,&HttpInterface::sendPointData,this,&FixedPortsModel::onSignal_GetPointData); } @@ -1203,6 +1207,16 @@ void FixedPortsModel::onSignal_openBayManager() m_pBayManager->showDlg(); } +void FixedPortsModel::onDataTimerOut() +{ + if(!_curRequestLst.isEmpty()){ + auto pDataAccessor = _cavas->getDataAccessor(); + if(pDataAccessor){ + _curData = pDataAccessor->getTargetData(_curRequestLst); + } + } +} + void FixedPortsModel::startHttpRequest() { if(_timer) @@ -2840,6 +2854,8 @@ void FixedPortsModel::startAcceptData() } UiCommunicationBus::instance()->insertTempRequest(_pageName,requestLst); + _curRequestLst = lstTarget; + m_dataTimer->start(); } void FixedPortsModel::stopAcceptData(QString page) @@ -2870,4 +2886,5 @@ void FixedPortsModel::stopAcceptData(QString page) QVariant variant = doc.toVariant(); UiCommunicationBus::instance()->sendHttpRequest(sPath,variant,"POST"); } + m_dataTimer->stop(); } diff --git a/diagramCavas/source/instance/dataAccessor.cpp b/diagramCavas/source/instance/dataAccessor.cpp index 6f665f5..d878e62 100644 --- a/diagramCavas/source/instance/dataAccessor.cpp +++ b/diagramCavas/source/instance/dataAccessor.cpp @@ -183,6 +183,19 @@ void DataAccessor::onReceiveWebsocketData(const QVariant& data) } } +QMap> DataAccessor::getTargetData(QStringList paraLst) +{ + QMap> mapData; + + QMutexLocker locker(&m_mutex); + for (const QString& key : paraLst) { + if (_realTimeData.contains(key)) { + mapData.insert(key, _realTimeData.value(key)); + } + } + return mapData; +} + QString DataAccessor::removeAfterStreamBySplit(const QString& url) { QStringList parts = url.split('/');