diff --git a/ZT.pro b/ZT.pro index 428d32f..1aab6b3 100644 --- a/ZT.pro +++ b/ZT.pro @@ -124,7 +124,9 @@ SOURCES += \ sources/NetDriveMgr.cpp \ sources/SFTPServerManager.cpp \ sources/Modbus/PIHistorianManager.cpp \ - sources/Modbus/PIHistorianSession.cpp + sources/Modbus/PIHistorianSession.cpp \ + sources/GuiElements/HistorienDisplayPage.cpp \ + sources/Modbus/HistorienData.cpp HEADERS += \ sources/MainPanel.h \ @@ -250,7 +252,9 @@ HEADERS += \ sources/SFTPServerManager.h \ sources/Modbus/PIHistorianManager.h \ sources/Modbus/PIHistorianSession.h \ - sources/Modbus/PIHistorianDefs.h + sources/Modbus/PIHistorianDefs.h \ + sources/GuiElements/HistorienDisplayPage.h \ + sources/Modbus/HistorienData.h #QMAKE_LIBDIR += ./ExtLib diff --git a/sftpbatch b/sftpbatch index e2f6df7..cb7e2b7 100644 --- a/sftpbatch +++ b/sftpbatch @@ -1,3 +1,3 @@ -put ./Trains/LOGZT1_2024-07-11-13-46-13-519.bin CVRT-D-LOGZT1_2024-07-11-13-46-13-519.bin +put ./Trains/LOGZT1_2024-07-12-11-29-37-014.bin CVRT-D-LOGZT1_2024-07-12-11-29-37-014.bin put ./LOG/LogZT.txt CVRT-LogZT.txt put ./ING/IngLog.txt CVRT-IngLog.txt \ No newline at end of file diff --git a/sources/GuiElements/HistorienDisplayPage.cpp b/sources/GuiElements/HistorienDisplayPage.cpp new file mode 100644 index 0000000..5b74f0c --- /dev/null +++ b/sources/GuiElements/HistorienDisplayPage.cpp @@ -0,0 +1,303 @@ +#include "HistorienDisplayPage.h" +#include "Zonetest.h" +#include +#include "ModbusCCDefs.h" +#include "ModbusSEIDefs.h" +#include "ModbusRepository.h" +#include +#include "HistorienData.h" +#include "PIHistorianDefs.h" + +CHistorienDisplayPage::CHistorienDisplayPage(QGraphicsWidget *parent) +{ + setParentItem(parent); + + mProgramHandle = 0; + mHistorienRepoHandle = 0; + + + mBackgroundRect = new QGraphicsRectItem(boundingRect(), this); + QBrush BackgroundBrush(QColor(245, 245, 255,200)); + mBackgroundRect->setBrush(BackgroundBrush); + + QGraphicsTextItem *TableTitle = new QGraphicsTextItem("Table Modbus Historien",this); + QFont font; + font.setPointSize(18); + TableTitle->setFont(font); + TableTitle->setPos(40,10); + + mCloseBtn = new CTextButtonWidget("Fermer"); + // mCloseBtn->setParentItem(this); + mCloseBtn->setPos(775,610); + connect(mCloseBtn,SIGNAL(TxtButtonClicked(CTextButtonWidget*)),this,SLOT(ButtonClicked(CTextButtonWidget*))); + + mHistorienDataTree = new QTreeWidget; + QGraphicsProxyWidget *Proxy = new QGraphicsProxyWidget(this); + Proxy->setWidget(mHistorienDataTree); + Proxy->setPos(0,0); + + + + QTreeWidgetItem *Item = new QTreeWidgetItem(QStringList()<<"ZT"); + mHistorienDataTree->setColumnCount(3); + mHistorienDataTree->setHeaderItem(new QTreeWidgetItem(QStringList()<<"Registre"<<"Description"<<"Valeur")); + + Item->addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<addChild(new QTreeWidgetItem(QStringList()<insertTopLevelItem(0,Item); + mHistorienDataTree->expandAll(); + mHistorienDataTree->resizeColumnToContents(0); + mHistorienDataTree->resizeColumnToContents(1); + mHistorienDataTree->resizeColumnToContents(2); + + + + + + mHistorienDataTree->resize(750,750); + + + mRefreshTimer = new QTimer(); + mRefreshTimer->setSingleShot(false); + mRefreshTimer->setInterval(500); + mRefreshTimer->stop(); + connect(mRefreshTimer,SIGNAL(timeout()),this,SLOT(RefreshTimerExpired())); +} + +void CHistorienDisplayPage::UpdateHistorienTable() +{ + if(mHistorienRepoHandle == 0) + return; + + CHistorienData NewData; + bool OK; + mHistorienRepoHandle->GetSingleReg(HISTORIAN_ZT_STATUS_FLAGS_REG_ADD,&OK); + + NewData.mFNEnabled = 0; + NewData.mPPEnabled = 0; + NewData.mPGEnabled = 0; + NewData.mPPZT2Enabled = 0; + NewData.mMaintenanceMode = 0; + NewData.mHPCHealth = 0; + NewData.mSEIHealth = 0; + NewData.mZT1Enabled = 0; + NewData.mZT2Enabled = 0; + NewData.mCalibPG = 0; + + + + quint16 reg = mHistorienRepoHandle->GetSingleReg(HISTORIAN_ZT_STATUS_FLAGS_REG_ADD,&OK); + NewData.mFNEnabled = ((reg & HISTORIAN_ZT1_FN_ENABLED_FLAG_MASK) != 0); + NewData.mPPEnabled = ((reg & HISTORIAN_ZT1_PP_ENABLED_FLAG_MASK) != 0); + NewData.mPGEnabled = ((reg & HISTORIAN_ZT1_PG_ENABLED_FLAG_MASK) != 0); + NewData.mPPZT2Enabled = ((reg & HISTORIAN_ZT2_PP_ENABLED_FLAG_MASK) != 0); + NewData.mMaintenanceMode = ((reg & HISTORIAN_ZT_MAINTENANCE_MODE_FLAG_MASK) != 0); + NewData.mHPCHealth = ((reg & HISTORIAN_ZT_HPC_COMM_HEALTH_FLAG_MASK) != 0); + NewData.mSEIHealth = ((reg & HISTORIAN_ZT_SEI_COMM_FLAG_MASK) != 0); + NewData.mZT1Enabled = ((reg & HISTORIAN_ZT_ZT1_ENABLED_FLAG_MASK) != 0); + NewData.mZT2Enabled = ((reg & HISTORIAN_ZT_ZT2_ENABLED_FLAG_MASK) != 0); + NewData.mCalibPG = ((reg & HISTORIAN_PG_CALIBRATION_REG_ADD) != 0); + + + + NewData.mBootDateYr = mHistorienRepoHandle->GetSingleReg(HISTORIAN_BOOT_DATE_YEAR_REG_ADD,&OK); + NewData.mBootDateMonth = mHistorienRepoHandle->GetSingleReg(HISTORIAN_BOOT_DATE_MONTH_REG_ADD,&OK); + NewData.mBootDateDay = mHistorienRepoHandle->GetSingleReg(HISTORIAN_BOOT_DATE_DAY_REG_ADD,&OK); + NewData.mBootDateHour = mHistorienRepoHandle->GetSingleReg(HISTORIAN_BOOT_DATE_HOUR_REG_ADD,&OK); + NewData.mBootDateMinutes = mHistorienRepoHandle->GetSingleReg(HISTORIAN_BOOT_DATE_MINUTES_REG_ADD,&OK); + NewData.mBootDateSeconds = mHistorienRepoHandle->GetSingleReg(HISTORIAN_BOOT_DATE_SECONDS_REG_ADD,&OK); + NewData.mTotalTrains = mHistorienRepoHandle->GetSingleReg(HISTORIAN_TRAINS_TOTAL_REG_ADD,&OK); + NewData.mTotalDetections = mHistorienRepoHandle->GetSingleReg(HISTORIAN_DETECTIONS_TOTAL_REG_ADD,&OK); + NewData.mTrainsToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_TRAINS_TODAY_REG_ADD ,&OK); + NewData.mDetectToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_DETECTIONS_TODAY_REG_ADD ,&OK); + NewData.mFNDetectToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_FN_DETECTS_TODAY_REG_ADD,&OK); + NewData.mPPIDetectToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_PPI_ZT1_DETECTS_TODAY_REG_ADD,&OK); + NewData.mPPEDetectToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_PPE_ZT1_DETECTS_TODAY_REG_ADD,&OK); + NewData.mPGDetectToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_PG_DETECTS_TODAY_REG_ADD,&OK); + NewData.mPPIZT2DetectToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_PPI_ZT2_DETECTS_TODAY_REG_ADD,&OK); + NewData.mPPEZT2DetectToday = mHistorienRepoHandle->GetSingleReg(HISTORIAN_PPE_ZT2_DETECTS_TODAY_REG_ADD,&OK); + NewData.mLastTrainYear = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_YEAR_REG_ADD,&OK); + NewData.mLastTrainMonth = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_MONTH_REG_ADD,&OK); + NewData.mLastTrainDay = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_DAY_REG_ADD,&OK); + NewData.mLastTrainHour = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_HOUR_REG_ADD,&OK); + NewData.mLastTrainMinutes = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_MINUTE_REG_ADD,&OK); + NewData.mLastTrainSeconds = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_SECONDS_REG_ADD,&OK); + NewData.mLastZone = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_ZONE_REG_ADD ,&OK); + NewData.mNbDetectLasTrain = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_NB_DETECTS_REG_ADD ,&OK); + NewData.mLastTrainPPI1 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPI_RK_1_REG_ADD,&OK); + NewData.mLastTrainPPI2 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPI_RK_2_REG_ADD,&OK); + NewData.mLastTrainPPI3 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPI_RK_3_REG_ADD,&OK); + NewData.mLastTrainPPI4 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPI_RK_4_REG_ADD,&OK); + NewData.mLastTrainPPE1 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPE_RK_1_REG_ADD,&OK); + NewData.mLastTrainPPE2 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPE_RK_2_REG_ADD,&OK); + NewData.mLastTrainPPE3 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPE_RK_3_REG_ADD,&OK); + NewData.mLastTrainPPE4 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PPE_RK_4_REG_ADD,&OK); + NewData.mLastTrainPG1 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PG_RK_1_REG_ADD,&OK); + NewData.mLastTrainPG2 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PG_RK_2_REG_ADD,&OK); + NewData.mLastTrainPG3 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PG_RK_3_REG_ADD,&OK); + NewData.mLastTrainPG4 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PG_RK_4_REG_ADD,&OK); + NewData.mLastTrainFN1 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_FN_RK_1_REG_ADD,&OK); + NewData.mLastTrainFN2 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_FN_RK_2_REG_ADD,&OK); + NewData.mLastTrainFN3 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_FN_RK_3_REG_ADD,&OK); + NewData.mLastTrainFN4 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_FN_RK_4_REG_ADD,&OK); + NewData.mLastTrainCountErr = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_COMPTAGE_DET_REG_ADD,&OK); + NewData.mLastTrainPEQ = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_PEQ_REG_ADD,&OK); + NewData.mLastTrainType = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_TYPE_REG_ADD,&OK); + NewData.mLastTrainCompo1 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_ID1_REG_ADD,&OK); + NewData.mLastTrainCompo2 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_ID2_REG_ADD,&OK); + NewData.mLastTrainCompo3 = mHistorienRepoHandle->GetSingleReg(HISTORIAN_LAST_TRAIN_ID3_REG_ADD,&OK); + + + + QTreeWidgetItem* Item = mHistorienDataTree->topLevelItem(0); + + Item->child(0)->setText(2,QString("%1").arg(NewData.mFNEnabled)); + Item->child(1)->setText(2,QString("%1").arg(NewData.mPPEnabled)); + Item->child(2)->setText(2,QString("%1").arg(NewData.mPGEnabled)); + Item->child(3)->setText(2,QString("%1").arg(NewData.mPPZT2Enabled)); + Item->child(4)->setText(2,QString("%1").arg(NewData.mMaintenanceMode)); + Item->child(5)->setText(2,QString("%1").arg(NewData.mHPCHealth)); + Item->child(6)->setText(2,QString("%1").arg(NewData.mSEIHealth)); + Item->child(7)->setText(2,QString("%1").arg(NewData.mZT1Enabled)); + Item->child(8)->setText(2,QString("%1").arg(NewData.mZT2Enabled)); + Item->child(9)->setText(2,QString("%1").arg(NewData.mCalibPG)); + Item->child(10)->setText(2,QString("%1").arg(NewData.mBootDateYr)); + Item->child(11)->setText(2,QString("%1").arg(NewData.mBootDateMonth)); + Item->child(12)->setText(2,QString("%1").arg(NewData.mBootDateDay)); + Item->child(13)->setText(2,QString("%1").arg(NewData.mBootDateHour)); + Item->child(14)->setText(2,QString("%1").arg(NewData.mBootDateMinutes)); + Item->child(15)->setText(2,QString("%1").arg(NewData.mBootDateSeconds)); + Item->child(16)->setText(2,QString("%1").arg(NewData.mTotalTrains)); + Item->child(17)->setText(2,QString("%1").arg(NewData.mTotalDetections)); + Item->child(18)->setText(2,QString("%1").arg(NewData.mTrainsToday)); + Item->child(19)->setText(2,QString("%1").arg(NewData.mDetectToday)); + Item->child(20)->setText(2,QString("%1").arg(NewData.mFNDetectToday)); + Item->child(21)->setText(2,QString("%1").arg(NewData.mPPIDetectToday)); + Item->child(22)->setText(2,QString("%1").arg(NewData.mPPEDetectToday)); + Item->child(23)->setText(2,QString("%1").arg(NewData.mPGDetectToday)); + Item->child(24)->setText(2,QString("%1").arg(NewData.mPPIZT2DetectToday)); + Item->child(25)->setText(2,QString("%1").arg(NewData.mPPEZT2DetectToday)); + Item->child(26)->setText(2,QString("%1").arg(NewData.mLastTrainYear)); + Item->child(27)->setText(2,QString("%1").arg(NewData.mLastTrainMonth)); + Item->child(28)->setText(2,QString("%1").arg(NewData.mLastTrainDay)); + Item->child(29)->setText(2,QString("%1").arg(NewData.mLastTrainHour)); + Item->child(30)->setText(2,QString("%1").arg(NewData.mLastTrainMinutes)); + Item->child(31)->setText(2,QString("%1").arg(NewData.mLastTrainSeconds)); + Item->child(32)->setText(2,QString("%1").arg(NewData.mLastZone)); + Item->child(33)->setText(2,QString("%1").arg(NewData.mNbDetectLasTrain)); + Item->child(34)->setText(2,QString("%1").arg(NewData.mLastTrainPPI1)); + Item->child(35)->setText(2,QString("%1").arg(NewData.mLastTrainPPI2)); + Item->child(36)->setText(2,QString("%1").arg(NewData.mLastTrainPPI3)); + Item->child(37)->setText(2,QString("%1").arg(NewData.mLastTrainPPI4)); + Item->child(38)->setText(2,QString("%1").arg(NewData.mLastTrainPPE1)); + Item->child(39)->setText(2,QString("%1").arg(NewData.mLastTrainPPE2)); + Item->child(40)->setText(2,QString("%1").arg(NewData.mLastTrainPPE3)); + Item->child(41)->setText(2,QString("%1").arg(NewData.mLastTrainPPE4)); + Item->child(42)->setText(2,QString("%1").arg(NewData.mLastTrainPG1)); + Item->child(43)->setText(2,QString("%1").arg(NewData.mLastTrainPG2)); + Item->child(44)->setText(2,QString("%1").arg(NewData.mLastTrainPG3)); + Item->child(45)->setText(2,QString("%1").arg(NewData.mLastTrainPG4)); + Item->child(46)->setText(2,QString("%1").arg(NewData.mLastTrainFN1)); + Item->child(47)->setText(2,QString("%1").arg(NewData.mLastTrainFN2)); + Item->child(48)->setText(2,QString("%1").arg(NewData.mLastTrainFN3)); + Item->child(49)->setText(2,QString("%1").arg(NewData.mLastTrainFN4)); + Item->child(50)->setText(2,QString("%1").arg(NewData.mLastTrainCountErr)); + Item->child(51)->setText(2,QString("%1").arg(NewData.mLastTrainPEQ)); + Item->child(52)->setText(2,QString("%1").arg(NewData.mLastTrainType)); + Item->child(53)->setText(2,QString("%1").arg(NewData.mLastTrainCompo1)); + Item->child(54)->setText(2,QString("%1").arg(NewData.mLastTrainCompo2)); + Item->child(55)->setText(2,QString("%1").arg(NewData.mLastTrainCompo3)); +} + +void CHistorienDisplayPage::ButtonClicked(CTextButtonWidget *) +{ + +} + +void CHistorienDisplayPage::RefreshTimerExpired() +{ + UpdateHistorienTable(); +} + +void CHistorienDisplayPage::showEvent(QShowEvent *event) +{ + if(mHistorienRepoHandle == 0 || + mProgramHandle == 0) + { + return; + } + + + mRefreshTimer->start(); +} + +void CHistorienDisplayPage::HideHistorienPage() +{ + mRefreshTimer->stop(); + this->hide(); +} + +void CHistorienDisplayPage::resizeEvent(QGraphicsSceneResizeEvent *event) +{ + Q_UNUSED(event) + mBackgroundRect->setRect(boundingRect()); + mHistorienDataTree->setGeometry(0,50,((boundingRect().width()) - 10),boundingRect().height()-100); + +} diff --git a/sources/GuiElements/HistorienDisplayPage.h b/sources/GuiElements/HistorienDisplayPage.h new file mode 100644 index 0000000..3308cdb --- /dev/null +++ b/sources/GuiElements/HistorienDisplayPage.h @@ -0,0 +1,39 @@ +#ifndef HISTORIENDISPLAYPAGE_H +#define HISTORIENDISPLAYPAGE_H + +#include +#include "TextButtonWidget.h" +#include +#include +#include "Guipage.h" + +class CZoneTest; +class CModbusRepository; + +class CHistorienDisplayPage : public CGuiPage +{ + Q_OBJECT + +public: + CHistorienDisplayPage(QGraphicsWidget *parent = 0); + + CZoneTest *mProgramHandle; + QGraphicsRectItem *mBackgroundRect; + CTextButtonWidget *mCloseBtn; + QTreeWidget *mHistorienDataTree; + CModbusRepository *mHistorienRepoHandle; + QTimer *mRefreshTimer; + + virtual void showEvent(QShowEvent *event); + void HideHistorienPage(); + void resizeEvent(QGraphicsSceneResizeEvent *event); + +public slots: + void ButtonClicked(CTextButtonWidget*); + void UpdateHistorienTable(); + void RefreshTimerExpired(); + + +}; + +#endif // HISTORIENDISPLAYPAGE_H diff --git a/sources/MainPanel.cpp b/sources/MainPanel.cpp index 75de6f1..9647088 100644 --- a/sources/MainPanel.cpp +++ b/sources/MainPanel.cpp @@ -104,6 +104,7 @@ Panel::Panel() mModbusSettingsPage = new CModbusSettingsPage(); mSEISettingsPage = new CSEISettingsPage(); mModbusDisplayPage = new CModbusDisplayPage(); + mHistorienDisplayPage = new CHistorienDisplayPage(); scene->addItem(mWelcomePage); scene->addItem(mZTMainPage); @@ -118,6 +119,7 @@ Panel::Panel() scene->addItem(mSEISettingsPage); scene->addItem(mZTLogViewerPage); scene->addItem(mModbusDisplayPage); + scene->addItem(mHistorienDisplayPage); mZTMainPage->setPos(0,0); mZTMainPage->hide(); @@ -184,6 +186,12 @@ Panel::Panel() mModbusDisplayPage->setZValue(1); mModbusDisplayPage->hide(); + mHistorienDisplayPage->setPos(10,10); + mHistorienDisplayPage->resize(SCREEN_RES_WIDTH-20,SCREEN_RES_HEIGHT-20); + mHistorienDisplayPage->setZValue(1); + mHistorienDisplayPage->hide(); + + installEventFilter(mLogViewPage); diff --git a/sources/MainPanel.h b/sources/MainPanel.h index 2b49647..9c93d53 100644 --- a/sources/MainPanel.h +++ b/sources/MainPanel.h @@ -47,6 +47,7 @@ #include "ModbusSettingsPage.h" #include "SEISettingsPage.h" #include "ModbusDisplayPage.h" +#include "HistorienDisplayPage.h" class CZoneTest; @@ -90,6 +91,7 @@ public: CModbusSettingsPage *mModbusSettingsPage; CSEISettingsPage *mSEISettingsPage; CModbusDisplayPage *mModbusDisplayPage; + CHistorienDisplayPage *mHistorienDisplayPage; }; #endif // PANEL_H diff --git a/sources/Modbus/HistorienData.cpp b/sources/Modbus/HistorienData.cpp new file mode 100644 index 0000000..d820006 --- /dev/null +++ b/sources/Modbus/HistorienData.cpp @@ -0,0 +1,6 @@ +#include "HistorienData.h" + +CHistorienData::CHistorienData() +{ + +} diff --git a/sources/Modbus/HistorienData.h b/sources/Modbus/HistorienData.h new file mode 100644 index 0000000..c013e92 --- /dev/null +++ b/sources/Modbus/HistorienData.h @@ -0,0 +1,70 @@ +#ifndef HISTORIENDATA_H +#define HISTORIENDATA_H + +class CHistorienData +{ +public: + CHistorienData(); + + int mFNEnabled; + int mPPEnabled; + int mPGEnabled; + int mPPZT2Enabled; + int mMaintenanceMode; + int mHPCHealth; + int mSEIHealth; + int mZT1Enabled; + int mZT2Enabled; + int mCalibPG; + int mBootDateYr; + int mBootDateMonth; + int mBootDateDay; + int mBootDateHour; + int mBootDateMinutes; + int mBootDateSeconds; + int mTotalTrains; + int mTotalDetections; + int mTrainsToday; + int mDetectToday; + int mFNDetectToday; + int mPPIDetectToday; + int mPPEDetectToday; + int mPGDetectToday; + int mPPIZT2DetectToday; + int mPPEZT2DetectToday; + int mLastTrainYear; + int mLastTrainMonth; + int mLastTrainDay; + int mLastTrainHour; + int mLastTrainMinutes; + int mLastTrainSeconds; + int mLastZone; + int mNbDetectLasTrain; + int mLastTrainPPI1; + int mLastTrainPPI2; + int mLastTrainPPI3; + int mLastTrainPPI4; + int mLastTrainPPE1; + int mLastTrainPPE2; + int mLastTrainPPE3; + int mLastTrainPPE4; + int mLastTrainPG1; + int mLastTrainPG2; + int mLastTrainPG3; + int mLastTrainPG4; + int mLastTrainFN1; + int mLastTrainFN2; + int mLastTrainFN3; + int mLastTrainFN4; + int mLastTrainCountErr; + int mLastTrainPEQ; + int mLastTrainType; + int mLastTrainCompo1; + int mLastTrainCompo2; + int mLastTrainCompo3; + +}; + + + +#endif // HISTORIENDATA_H diff --git a/sources/Modbus/PIHistorianManager.cpp b/sources/Modbus/PIHistorianManager.cpp index 376a179..e90e019 100644 --- a/sources/Modbus/PIHistorianManager.cpp +++ b/sources/Modbus/PIHistorianManager.cpp @@ -2,6 +2,7 @@ #include "ZTLog.h" #include "ModbusRepository.h" #include "PIHistorianDefs.h" +#include "EngLog.h" CPIHistorianManager::CPIHistorianManager(CModbusRepository *PIHistorianRepo, int ModbusPort, int ModbusDevID) { @@ -300,7 +301,6 @@ int CPIHistorianManager::NewZT1Passage(CZTPassageInfo ZT1PassageInfo) quint16 NbDecl = ZT1PassageInfo.mDetections->size(); quint16 NbDeclFN = 0, NbDeclPG = 0, NbDeclPPI = 0, NbDeclPPE = 0; - quint16 PEQ = 0, ErrComptage = 0; mPIHistorianRepo->WriteSingleReg(HISTORIAN_LAST_TRAIN_NB_DETECTS_REG_ADD,NbDecl); if(NbDecl != 0) { @@ -433,12 +433,12 @@ int CPIHistorianManager::NewZT1Passage(CZTPassageInfo ZT1PassageInfo) mNbPPIZT1Today += NbDeclPPI; mNbPPEZT1Today += NbDeclPPE; - mPIHistorianRepo->WriteSingleReg(HISTORIAN_DETECTIONS_TODAY_REG_ADD,mNbDeclToday); - mPIHistorianRepo->WriteSingleReg(HISTORIAN_DETECTIONS_TOTAL_REG_ADD,ZT1PassageInfo.mNbDeclenchements); - mPIHistorianRepo->WriteSingleReg(HISTORIAN_FN_DETECTS_TODAY_REG_ADD,mNbFNToday); - mPIHistorianRepo->WriteSingleReg(HISTORIAN_PPI_ZT1_DETECTS_TODAY_REG_ADD,mNbPPIZT1Today); - mPIHistorianRepo->WriteSingleReg(HISTORIAN_PPE_ZT1_DETECTS_TODAY_REG_ADD,mNbPPEZT1Today); - mPIHistorianRepo->WriteSingleReg(HISTORIAN_PG_DETECTS_TODAY_REG_ADD,mNbPGToday); + mPIHistorianRepo->WriteSingleReg(HISTORIAN_DETECTIONS_TODAY_REG_ADD,mNbDeclToday); + mPIHistorianRepo->WriteSingleReg(HISTORIAN_DETECTIONS_TOTAL_REG_ADD,ZT1PassageInfo.mNbDeclenchements); + mPIHistorianRepo->WriteSingleReg(HISTORIAN_FN_DETECTS_TODAY_REG_ADD,mNbFNToday); + mPIHistorianRepo->WriteSingleReg(HISTORIAN_PPI_ZT1_DETECTS_TODAY_REG_ADD,mNbPPIZT1Today); + mPIHistorianRepo->WriteSingleReg(HISTORIAN_PPE_ZT1_DETECTS_TODAY_REG_ADD,mNbPPEZT1Today); + mPIHistorianRepo->WriteSingleReg(HISTORIAN_PG_DETECTS_TODAY_REG_ADD,mNbPGToday); } @@ -593,4 +593,6 @@ void CPIHistorianManager::HistorianTimerExpired() StartHistorianTimer(); + CEngLog::instance()->AddLogString("Reset des stats historien du jour",2); + } diff --git a/sources/ZTVersion.h b/sources/ZTVersion.h index 5473443..e79b802 100755 --- a/sources/ZTVersion.h +++ b/sources/ZTVersion.h @@ -37,6 +37,8 @@ //-Correction du Nb de déclenchements aujourd'hui qui n'est pas remis à zéro //-Correction du Nb de passages aujourd'hui qui ne se met pas à jour //-Changement du calcul du Nb de ms avant minuit à la ms près (plutôt qu'à la seconde) +//-Ajout de l'icône de connexion du client historien dans la page principale +//-Ajout de la visualisation de la TE historien (touche F3) //Version 1.27 //-Ajout du flag pour ignorer la clef RSA lors du transfert FTP. Suite aux problemes diff --git a/sources/Zonetest.cpp b/sources/Zonetest.cpp index fcf69e0..cd33c41 100644 --- a/sources/Zonetest.cpp +++ b/sources/Zonetest.cpp @@ -278,6 +278,7 @@ unsigned int CZoneTest::Start() panel.mSEISettingsPage->mProgramHandle = this; panel.mZTLogViewerPage->mProgramHandle = this; panel.mModbusDisplayPage->mProgramHandle = this; + panel.mHistorienDisplayPage->mProgramHandle = this; panel.mEngineeringPage->mDisablePassword = mDisablePassword; mInternalWatchdog = new CWatchdogCtrl(mUseWatchdog); @@ -605,6 +606,9 @@ unsigned int CZoneTest::InitZT() mPIHistorianRepository->AddHRDataMap(HISTORIAN_ZT_DATA_BASE_REG,HISTORIAN_MODBUS_ZT_TABLE_DATA_SIZE); //Add the ZT data map mPIHistorianManager = new CPIHistorianManager(mPIHistorianRepository,PIHistorianPort,PIHistorianDevID); + panel.mHistorienDisplayPage->mHistorienRepoHandle = mPIHistorianRepository; + + if(UseModbusInterface) { connect(mModbusCCMgr,SIGNAL(ModbusCCConnected(qint32,qint32)),mPIHistorianManager,SLOT(HPCConnected(qint32,qint32))); @@ -911,6 +915,22 @@ bool CZoneTest::eventFilter(QObject *obj, QEvent *event) panel.mModbusDisplayPage->show(); } } + } + else if(KeyEvent->key() == Qt::Key_F3) //F3 Key toggles the Historien data display page + { + if(CZTConfigMgr::instance()->GetPIHistorianEnabled()) + { + if(panel.mHistorienDisplayPage->isVisible()) + { + panel.mHistorienDisplayPage->HideHistorienPage(); + } + else + { + panel.mHistorienDisplayPage->show(); + } + + } + } } } @@ -1280,6 +1300,18 @@ void CZoneTest::CloseModbusDataPageRequest() panel.mEngineeringPage->show(); } +void CZoneTest::OpenHistorienDataPageRequest() +{ + panel.mModbusDisplayPage->hide(); + panel.mHistorienDisplayPage->show(); +} + +void CZoneTest::CloseHistorienDataPageRequest() +{ + panel.mHistorienDisplayPage->hide(); + panel.mEngineeringPage->show(); +} + void CZoneTest::CheckAndCreateDirectories() { QDir dir("./Trains"); diff --git a/sources/Zonetest.h b/sources/Zonetest.h index 280340a..296ad0b 100644 --- a/sources/Zonetest.h +++ b/sources/Zonetest.h @@ -147,6 +147,9 @@ public: void OpenModbusDataPageRequest(); void CloseModbusDataPageRequest(); + void OpenHistorienDataPageRequest(); + void CloseHistorienDataPageRequest(); + void LogZTSettingsRequest(bool LogStationName = false); void ApplicationQuit(int Reason);