diff --git a/Configuration/ZT.cfg b/Configuration/ZT.cfg index faffee3..fb3f7a6 100644 --- a/Configuration/ZT.cfg +++ b/Configuration/ZT.cfg @@ -81,13 +81,13 @@ ENGLOG=3 #STATION=HONORE_BEAUGRAND #STATION=ANGRIGNON -STATION=HENRI_BOURASSA +#STATION=HENRI_BOURASSA #STATION=COTE_VERTU #STATION=BERRI_UQAM #STATION=LONGUEIL #STATION=SAINT_MICHEL #STATION=SNOWDON_L5 -#STATION=MONTMORENCY +STATION=MONTMORENCY #STATION=MONTMORENCY_10_12 #STATION=MONTMORENCY_10_22 #STATION=DU_COLLEGE diff --git a/sources/GuiElements/ModbusDisplayPage.cpp b/sources/GuiElements/ModbusDisplayPage.cpp index a1fefcf..db7b179 100644 --- a/sources/GuiElements/ModbusDisplayPage.cpp +++ b/sources/GuiElements/ModbusDisplayPage.cpp @@ -4,6 +4,8 @@ #include "ModbusCCDefs.h" #include "ModbusSEIDefs.h" #include "ModbusRepository.h" +#include +#include "ZTData.h" CModbusDisplayPage::CModbusDisplayPage(QGraphicsWidget *parent) { @@ -18,18 +20,35 @@ CModbusDisplayPage::CModbusDisplayPage(QGraphicsWidget *parent) QBrush BackgroundBrush(QColor(245, 245, 255,200)); mBackgroundRect->setBrush(BackgroundBrush); + QGraphicsTextItem *TableTitle = new QGraphicsTextItem("Table Modbus Commande Centralisée",this); + QFont font; + font.setPointSize(18); + TableTitle->setFont(font); + TableTitle->setPos(40,10); + + TableTitle = new QGraphicsTextItem("Table Modbus SEI",this); + TableTitle->setFont(font); + TableTitle->setPos(650,10); + mCloseBtn = new CTextButtonWidget("Fermer"); mCloseBtn->setParentItem(this); - mCloseBtn->setPos(600,600); + mCloseBtn->setPos(600,610); connect(mCloseBtn,SIGNAL(TxtButtonClicked(CTextButtonWidget*)),this,SLOT(ButtonClicked(CTextButtonWidget*))); - mModbusDataTree = new QTreeWidget; + mModbusCCDataTree = new QTreeWidget; QGraphicsProxyWidget *Proxy = new QGraphicsProxyWidget(this); - Proxy->setWidget(mModbusDataTree); + Proxy->setWidget(mModbusCCDataTree); Proxy->setPos(0,0); - mModbusDataTree->resize(750,750); + mModbusCCDataTree->resize(350,750); + + mModbusSEIDataTree = new QTreeWidget; + Proxy = new QGraphicsProxyWidget(this); + Proxy->setWidget(mModbusSEIDataTree); + Proxy->setPos(400,0); + + mModbusSEIDataTree->resize(350,750); mRefreshTimer = new QTimer(); mRefreshTimer->setSingleShot(false); @@ -38,20 +57,21 @@ CModbusDisplayPage::CModbusDisplayPage(QGraphicsWidget *parent) connect(mRefreshTimer,SIGNAL(timeout()),this,SLOT(RefreshTimerExpired())); - QList Items; - mModbusDataTree->setColumnCount(5); - mModbusDataTree->setHeaderItem(new QTreeWidgetItem(QStringList()<<"Flag/Alarme"<<"Valeur CC"<<"Rang CC"<<"Valeur SEI"<<"Rang SEI")); + QList CCTableItems; + mModbusCCDataTree->setColumnCount(3); + mModbusCCDataTree->setHeaderItem(new QTreeWidgetItem(QStringList()<<"Flag/Alarme CC"<<"Valeur CC"<<"Rang / Donnée ")); //Items.append(new QTreeWidgetItem(QStringList(QString().fromUtf8("Pneu De Guidage ZT1 #2") << QString().fromUtf8("Pneu De Guidage ZT1 #2") << QString().fromUtf8("Pneu De Guidage ZT1 #2")))); - Items.append(new QTreeWidgetItem(QStringList()<<"ZT1")); - Items.append(new QTreeWidgetItem(QStringList()<<"ZT2")); - Items.append(new QTreeWidgetItem(QStringList()<<"ZT")); + CCTableItems.append(new QTreeWidgetItem(QStringList()<<"ZT1")); + CCTableItems.append(new QTreeWidgetItem(QStringList()<<"ZT2")); + CCTableItems.append(new QTreeWidgetItem(QStringList()<<"ZT")); + CCTableItems.append(new QTreeWidgetItem(QStringList()<<"CC")); QTreeWidgetItem* Item; // Item = new QTreeWidgetItem(QStringList()<addChild(Item); + // CCTableItems.at(0)->addChild(Item); - Item = Items.at(0); + Item = CCTableItems.at(0); //ZT1 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()<insertTopLevelItems(0,Items); - mModbusDataTree->resizeColumnToContents(1); + mModbusCCDataTree->insertTopLevelItems(0,CCTableItems); + mModbusCCDataTree->resizeColumnToContents(1); - mModbusDataTree->expandAll(); - mModbusDataTree->resizeColumnToContents(0); + mModbusCCDataTree->expandAll(); + mModbusCCDataTree->resizeColumnToContents(0); -} + + + + QList SEITableItems; + + mModbusSEIDataTree->setColumnCount(3); + mModbusSEIDataTree->setHeaderItem(new QTreeWidgetItem(QStringList()<<"Flag/Alarme SEI"<<"Valeur SEI"<<"Rang SEI")); + + + //Items.append(new QTreeWidgetItem(QStringList(QString().fromUtf8("Pneu De Guidage ZT1 #2") << QString().fromUtf8("Pneu De Guidage ZT1 #2") << QString().fromUtf8("Pneu De Guidage ZT1 #2")))); + SEITableItems.append(new QTreeWidgetItem(QStringList()<<"ZT1")); + SEITableItems.append(new QTreeWidgetItem(QStringList()<<"ZT2")); + SEITableItems.append(new QTreeWidgetItem(QStringList()<<"ZT")); + SEITableItems.append(new QTreeWidgetItem(QStringList() << "SEI")); + + // QTreeWidgetItem* Item; + // Item = new QTreeWidgetItem(QStringList()<addChild(Item); + + Item = SEITableItems.at(0); //ZT1 + + 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()<insertTopLevelItems(0,SEITableItems); + mModbusSEIDataTree->resizeColumnToContents(1); + + mModbusSEIDataTree->expandAll(); + mModbusSEIDataTree->resizeColumnToContents(0); + + } void CModbusDisplayPage::resizeEvent(QGraphicsSceneResizeEvent *event) @@ -114,12 +231,14 @@ void CModbusDisplayPage::resizeEvent(QGraphicsSceneResizeEvent *event) Q_UNUSED(event) mBackgroundRect->setRect(boundingRect()); mCloseBtn->setPos(50,boundingRect().height()-50); - mModbusDataTree->resize(boundingRect().width(),boundingRect().height()-50); + mModbusCCDataTree->setGeometry(0,50,((boundingRect().width()/2) - 10),boundingRect().height()-100); + mModbusSEIDataTree->setGeometry((boundingRect().width()/2),50,(boundingRect().width()/2),boundingRect().height()-100); + } CModbusDisplayPage::~CModbusDisplayPage() { - delete mModbusDataTree; + delete mModbusCCDataTree; } void CModbusDisplayPage::ButtonClicked(CTextButtonWidget *button) @@ -133,25 +252,22 @@ void CModbusDisplayPage::ButtonClicked(CTextButtonWidget *button) int CModbusDisplayPage::UpdateTable(int Source) { - CModbusRepository *SourceRepo; + return RET_OK; +} + +void CModbusDisplayPage::UpdateCCModbusTable() +{ + if(mCCRepoHandle == 0 || + mSEIRepoHandle == 0 || + mProgramHandle == 0) + { + return; + } + CZTInfo *DataStruct = new CZTInfo; bool OK = false; - // quint16 data = mCCModbusRepo.GetSingleReg(MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD,&OK); - if(Source == CC_MODBUS_TABLE_SOURCE) - { - SourceRepo = mCCRepoHandle; - } - else if(Source == SEI_MODBUS_TABLE_SOURCE) - { - SourceRepo = mSEIRepoHandle; - } - else - { - return RET_ERROR; - } - - quint16 data = SourceRepo->GetSingleReg(MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD,&OK); + quint16 data = mCCRepoHandle->GetSingleReg(MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD,&OK); if(OK == true) { @@ -177,11 +293,11 @@ int CModbusDisplayPage::UpdateTable(int Source) else { qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD)"); - return RET_ERROR; + return; } QList RankData; - RankData = SourceRepo->GetRegs(MODBUS_ZT1_ALARM_RANKS_BASE_ADD,16,&OK); + RankData = mCCRepoHandle->GetRegs(MODBUS_ZT1_ALARM_RANKS_BASE_ADD,16,&OK); if(OK == true) { DataStruct->mZT1Ranks = RankData; @@ -189,10 +305,10 @@ int CModbusDisplayPage::UpdateTable(int Source) else { qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT1_ALARM_RANKS_BASE_ADD)"); - return RET_ERROR; + return; } - data = SourceRepo->GetSingleReg(MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD,&OK); + data = mCCRepoHandle->GetSingleReg(MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD,&OK); if(OK == true) { DataStruct->mZT2PPIAlarmFlag1 = (data & ZT2_PP_INT_FLAG_MASK_1) != 0; @@ -207,11 +323,11 @@ int CModbusDisplayPage::UpdateTable(int Source) else { qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD)"); - return RET_ERROR; + return; } RankData.clear(); - RankData = SourceRepo->GetRegs(MODBUS_ZT2_ALARM_RANKS_BASE_ADD,8,&OK); + RankData = mCCRepoHandle->GetRegs(MODBUS_ZT2_ALARM_RANKS_BASE_ADD,8,&OK); if(OK == true) { DataStruct->mZT2Ranks = RankData; @@ -219,11 +335,11 @@ int CModbusDisplayPage::UpdateTable(int Source) else { qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT2_ALARM_RANKS_BASE_ADD)"); - return RET_ERROR; + return; } - data = SourceRepo->GetSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,&OK); + data = mCCRepoHandle->GetSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,&OK); if(OK == true) { @@ -237,19 +353,142 @@ int CModbusDisplayPage::UpdateTable(int Source) else { qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_PANNES_DATA_BASE_REG_ADD)"); - return RET_ERROR; + return; } - DataStruct->mWatchdogZT = SourceRepo->GetSingleReg(MODBUS_ZT_WATCHDOG_REG_ADD,&OK); + DataStruct->mWatchdogZT = mCCRepoHandle->GetSingleReg(MODBUS_ZT_WATCHDOG_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT_WATCHDOG_REG_ADD)"); + return; + } + + data = mCCRepoHandle->GetSingleReg(MODBUS_CC_WATCHDOG_BASE_REG_ADD,&OK); + + if(OK == true) + { + DataStruct->mWatchdogRemote = (int)data; + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (SEI_MODBUS_SEI_WATCHDOG_REG)"); + return; + } + + data = mCCRepoHandle->GetSingleReg(MODBUS_CC_AN_BASE_REG_ADD, &OK); + if(OK == true) + { + DataStruct->mAN1 = ((data & MODBUS_CC_FCYCLE_ZT1_FLAG_MASK) != 0); + DataStruct->mAN2 = ((data & MODBUS_CC_FCYCLE_ZT2_FLAG_MASK) != 0); + DataStruct->mInhibitZT1 = ((data & MODBUS_CC_INHIBIT_ZT1_FLAG_MASK) != 0); + DataStruct->mInhibitZT2 = ((data & MODBUS_CC_INHIBIT_ZT2_FLAG_MASK) != 0); + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (SEI_MODBUS_SEI_ALARMS_RESET_REG)"); + return; + } + DataStruct->mZT1TrainType = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT1_TRAIN_TYPE_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT1_TRAIN_TYPE_REG_ADD)"); + return; + } + DataStruct->mZT2TrainType = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD)"); + return; + } + + DataStruct->mZT1TrainID1 = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT1_TRAIN_ID_1_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT1_TRAIN_ID_1_REG_ADD)"); + return; + } + DataStruct->mZT1TrainID2 = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT1_TRAIN_ID_2_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT1_TRAIN_ID_2_REG_ADD)"); + return; + } + DataStruct->mZT1TrainID3 = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT1_TRAIN_ID_3_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT1_TRAIN_ID_3_REG_ADD)"); + return; + } + + DataStruct->mZT2TrainID1 = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT2_TRAIN_ID_1_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT2_TRAIN_ID_1_REG_ADD)"); + return; + } + + DataStruct->mZT2TrainID2 = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT2_TRAIN_ID_2_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT2_TRAIN_ID_2_REG_ADD)"); + return; + } + + DataStruct->mZT2TrainID3 = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT2_TRAIN_ID_3_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT2_TRAIN_ID_3_REG_ADD)"); + return; + } + + DataStruct->mZT2TrainID3 = mCCRepoHandle->GetSingleReg(MODBUS_CC_ZT2_TRAIN_ID_3_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_ZT2_TRAIN_ID_3_REG_ADD)"); + return; + } + + + DataStruct->mUpdateDateTimeFlag = mCCRepoHandle->GetSingleReg(MODBUS_CC_CLK_UPDATE_BASE_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_CC_CLK_UPDATE_BASE_REG_ADD)"); + return; + } + + DataStruct->mNTPSeconds = mCCRepoHandle->GetSingleReg(MODUBS_CC_CLK_SEC_BASE_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODUBS_CC_CLK_SEC_BASE_REG_ADD)"); + return; + } + DataStruct->mNTPHourMinutes = mCCRepoHandle->GetSingleReg(MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD)"); + return; + } + DataStruct->mNTPMonthDay = mCCRepoHandle->GetSingleReg(MODUBS_CC_CLK_MNT_DAY_BASE_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODUBS_CC_CLK_MNT_DAY_BASE_REG_ADD)"); + return; + } + DataStruct->mNTPYear = mCCRepoHandle->GetSingleReg(MODUBS_CC_CLK_YEAR_BASE_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODUBS_CC_CLK_YEAR_BASE_REG_ADD)"); + return; + } QTreeWidgetItem* Item; QString TempStr; //ZT1 - Item = mModbusDataTree->topLevelItem(0); + Item = mModbusCCDataTree->topLevelItem(0); Item->child(0)->setText(1,QString("%1").arg(DataStruct->mZT1PPIAlarmFlag1)); Item->child(1)->setText(1,QString("%1").arg(DataStruct->mZT1PPIAlarmFlag2)); @@ -279,7 +518,8 @@ int CModbusDisplayPage::UpdateTable(int Source) { TempStr = "Secondaire"; } - Item->child(16)->setText(1,TempStr); + Item->child(16)->setText(1,QString("%1").arg(DataStruct->mITI10_12Flag)); + Item->child(16)->setText(2,TempStr); Item->child(17)->setText(1,QString("%1").arg(DataStruct->mZT1V00AlarmFlag)); Item->child(18)->setText(1,QString("%1").arg(DataStruct->mZT1PEQ1AlarmFlag)); @@ -290,7 +530,7 @@ int CModbusDisplayPage::UpdateTable(int Source) } //ZT2 - Item = mModbusDataTree->topLevelItem(1); + Item = mModbusCCDataTree->topLevelItem(1); Item->child(0)->setText(1,QString("%1").arg(DataStruct->mZT2PPIAlarmFlag1)); Item->child(1)->setText(1,QString("%1").arg(DataStruct->mZT2PPIAlarmFlag2)); @@ -311,32 +551,322 @@ int CModbusDisplayPage::UpdateTable(int Source) } //Watchdog - Item = mModbusDataTree->topLevelItem(2); + Item = mModbusCCDataTree->topLevelItem(2); Item->child(0)->setText(1,QString("%1").arg(DataStruct->mWatchdogZT)); + //CC + Item = mModbusCCDataTree->topLevelItem(3); + Item->child(0)->setText(1,QString("%1").arg(DataStruct->mWatchdogRemote)); + Item->child(1)->setText(1,QString("%1").arg(DataStruct->mAN1)); + Item->child(2)->setText(1,QString("%1").arg(DataStruct->mAN2)); + Item->child(3)->setText(1,QString("%1").arg(DataStruct->mInhibitZT1)); + Item->child(4)->setText(1,QString("%1").arg(DataStruct->mInhibitZT2)); + Item->child(5)->setText(1,QString("%1").arg(DataStruct->mZT1TrainType)); + Item->child(5)->setText(2,CZTData::GetModbusTrainTypeString(DataStruct->mZT1TrainType)); + Item->child(6)->setText(1,QString("%1").arg(DataStruct->mZT2TrainType)); + Item->child(6)->setText(2,CZTData::GetModbusTrainTypeString(DataStruct->mZT2TrainType)); + Item->child(7)->setText(1,QString("%1").arg(DataStruct->mZT1TrainID1)); + Item->child(8)->setText(1,QString("%1").arg(DataStruct->mZT1TrainID2)); + Item->child(9)->setText(1,QString("%1").arg(DataStruct->mZT1TrainID3)); + Item->child(10)->setText(1,QString("%1").arg(DataStruct->mZT2TrainID1)); + Item->child(11)->setText(1,QString("%1").arg(DataStruct->mZT2TrainID2)); + Item->child(12)->setText(1,QString("%1").arg(DataStruct->mZT2TrainID3)); + Item->child(13)->setText(1,QString("%1").arg(DataStruct->mUpdateDateTimeFlag)); + Item->child(14)->setText(1,QString("0x%1").arg(DataStruct->mNTPSeconds,0,16)); + Item->child(15)->setText(1,QString("0x%1").arg(DataStruct->mNTPHourMinutes,0,16)); + Item->child(16)->setText(1,QString("0x%1").arg(DataStruct->mNTPMonthDay,0,16)); + Item->child(17)->setText(1,QString("0x%1").arg(DataStruct->mNTPYear,0,16)); + QDateTime NetworkTime; + quint8 Secs, Minutes, Hours, Month, Day; + quint8 temp; + temp = (quint8)(DataStruct->mNTPSeconds >> 8); + Secs = BCDToDecByte(temp); + + temp = (quint8)(DataStruct->mNTPHourMinutes & 0x00FF); + Minutes = BCDToDecByte(temp); + + temp = (qint8)(DataStruct->mNTPHourMinutes >> 8); + Hours = BCDToDecByte(temp); + + temp = (quint8)(DataStruct->mNTPMonthDay & 0x00FF); + Day = BCDToDecByte(temp); + + temp = (quint8)(DataStruct->mNTPMonthDay >> 8); + Month = BCDToDecByte(temp); + + quint16 Year = DataStruct->mNTPYear; + Year = BCDToDecWord(Year); + + NetworkTime.setTimeSpec(Qt::UTC); + NetworkTime.setDate(QDate(Year,Month,Day)); + NetworkTime.setTime(QTime(Hours,Minutes,Secs)); + + Item->child(17)->setText(2,NetworkTime.toLocalTime().toString("yyyy-MM-dd hh:mm:ss")); + + delete DataStruct; - - return RET_OK; -} - -void CModbusDisplayPage::UpdateCCModbusTable() -{ - UpdateTable(CC_MODBUS_TABLE_SOURCE); } void CModbusDisplayPage::UpdateSEIModbusTable() { - UpdateTable(SEI_MODBUS_TABLE_SOURCE); + if(mCCRepoHandle == 0 || + mSEIRepoHandle == 0 || + mProgramHandle == 0) + { + return; + } + + CZTInfo *DataStruct = new CZTInfo; + bool OK = false; + + quint16 data = mSEIRepoHandle->GetSingleReg(MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD,&OK); + + if(OK == true) + { + + DataStruct->mZT1PPIAlarmFlag1 = (data & ZT1_PP_INT_FLAG_MASK_1) != 0; + DataStruct->mZT1PPIAlarmFlag2 = (data & ZT1_PP_INT_FLAG_MASK_2) != 0; + DataStruct->mZT1PPIAlarmFlag3 = (data & ZT1_PP_INT_FLAG_MASK_3) != 0; + DataStruct->mZT1PPIAlarmFlag4 = (data & ZT1_PP_INT_FLAG_MASK_4) != 0; + DataStruct->mZT1PPEAlarmFlag1 = (data & ZT1_PP_EXT_FLAG_MASK_1) != 0; + DataStruct->mZT1PPEAlarmFlag2 = (data & ZT1_PP_EXT_FLAG_MASK_2) != 0; + DataStruct->mZT1PPEAlarmFlag3 = (data & ZT1_PP_EXT_FLAG_MASK_3) != 0; + DataStruct->mZT1PPEAlarmFlag4 = (data & ZT1_PP_EXT_FLAG_MASK_4) != 0; + DataStruct->mZT1PGAlarmFlag1 = (data & ZT1_PG_FLAG_MASK_1) != 0; + DataStruct->mZT1PGAlarmFlag2 = (data & ZT1_PG_FLAG_MASK_2) != 0; + DataStruct->mZT1PGAlarmFlag3 = (data & ZT1_PG_FLAG_MASK_3) != 0; + DataStruct->mZT1PGAlarmFlag4 = (data & ZT1_PG_FLAG_MASK_4) != 0; + DataStruct->mZT1FNAlarmFlag1 = (data & ZT1_FN_FLAG_MASK_1) != 0; + DataStruct->mZT1FNAlarmFlag2 = (data & ZT1_FN_FLAG_MASK_2) != 0; + DataStruct->mZT1FNAlarmFlag3 = (data & ZT1_FN_FLAG_MASK_3) != 0; + DataStruct->mZT1FNAlarmFlag4 = (data & ZT1_FN_FLAG_MASK_4) != 0; + + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD)"); + return; + } + + QList RankData; + RankData = mSEIRepoHandle->GetRegs(MODBUS_ZT1_ALARM_RANKS_BASE_ADD,16,&OK); + if(OK == true) + { + DataStruct->mZT1Ranks = RankData; + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT1_ALARM_RANKS_BASE_ADD)"); + return; + } + + data = mSEIRepoHandle->GetSingleReg(MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD,&OK); + if(OK == true) + { + DataStruct->mZT2PPIAlarmFlag1 = (data & ZT2_PP_INT_FLAG_MASK_1) != 0; + DataStruct->mZT2PPIAlarmFlag2 = (data & ZT2_PP_INT_FLAG_MASK_2) != 0; + DataStruct->mZT2PPIAlarmFlag3 = (data & ZT2_PP_INT_FLAG_MASK_3) != 0; + DataStruct->mZT2PPIAlarmFlag4 = (data & ZT2_PP_INT_FLAG_MASK_4) != 0; + DataStruct->mZT2PPEAlarmFlag1 = (data & ZT2_PP_EXT_FLAG_MASK_1) != 0; + DataStruct->mZT2PPEAlarmFlag2 = (data & ZT2_PP_EXT_FLAG_MASK_2) != 0; + DataStruct->mZT2PPEAlarmFlag3 = (data & ZT2_PP_EXT_FLAG_MASK_3) != 0; + DataStruct->mZT2PPEAlarmFlag4 = (data & ZT2_PP_EXT_FLAG_MASK_4) != 0; + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD)"); + return; + } + + RankData.clear(); + RankData = mSEIRepoHandle->GetRegs(MODBUS_ZT2_ALARM_RANKS_BASE_ADD,8,&OK); + if(OK == true) + { + DataStruct->mZT2Ranks = RankData; + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT2_ALARM_RANKS_BASE_ADD)"); + return; + } + + + data = mSEIRepoHandle->GetSingleReg(MODBUS_MISC_DATA_BASE_REG_ADD,&OK); + + if(OK == true) + { + + DataStruct->mZT1V00AlarmFlag = (data & ZT1_V00_ALARM_FLAG_MASK) != 0; + DataStruct->mZT1PEQ1AlarmFlag = (data & ZT1_PEQ1_ALARM_FLAG_MASK) != 0; + DataStruct->mZT2V02AlarmFlag = (data & ZT2_V02_ALARM_FLAG_MASK) != 0; + DataStruct->mZT2PEQ2AlarmFlag = (data & ZT2_PEQ2_ALARM_FLAG_MASK) != 0; + DataStruct->mITI10_12Flag = (data & ZT1_ALARM_ITI_FLAG_MASK) != 0; + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_PANNES_DATA_BASE_REG_ADD)"); + return; + } + + DataStruct->mWatchdogZT = mSEIRepoHandle->GetSingleReg(MODBUS_ZT_WATCHDOG_REG_ADD,&OK); + if(OK == false) + { + qDebug("GetSingleReg failed in UpdateZTInfo (MODBUS_ZT_WATCHDOG_REG_ADD)"); + return; + } + + data = mSEIRepoHandle->GetSingleReg(SEI_MODBUS_SEI_WATCHDOG_REG,&OK); + + if(OK == true) + { + DataStruct->mWatchdogRemote = (int)data; + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (SEI_MODBUS_SEI_WATCHDOG_REG)"); + return; + } + + data = mSEIRepoHandle->GetSingleReg(SEI_MODBUS_SEI_ALARMS_RESET_REG, &OK); + if(OK == true) + { + DataStruct->mAN1 = ((data & SEI_MODBUS_SEI_ZT1_ALARM_RESET_MASK) != 0); + DataStruct->mAN2 = ((data & SEI_MODBUS_SEI_ZT2_ALARM_RESET_MASK) != 0); + } + else + { + qDebug("GetSingleReg failed in UpdateZTInfo (SEI_MODBUS_SEI_ALARMS_RESET_REG)"); + return; + } + + + QTreeWidgetItem* Item; + QString TempStr; + + //ZT1 + Item = mModbusSEIDataTree->topLevelItem(0); + + Item->child(0)->setText(1,QString("%1").arg(DataStruct->mZT1PPIAlarmFlag1)); + Item->child(1)->setText(1,QString("%1").arg(DataStruct->mZT1PPIAlarmFlag2)); + Item->child(2)->setText(1,QString("%1").arg(DataStruct->mZT1PPIAlarmFlag3)); + Item->child(3)->setText(1,QString("%1").arg(DataStruct->mZT1PPIAlarmFlag4)); + + Item->child(4)->setText(1,QString("%1").arg(DataStruct->mZT1PPEAlarmFlag1)); + Item->child(5)->setText(1,QString("%1").arg(DataStruct->mZT1PPEAlarmFlag2)); + Item->child(6)->setText(1,QString("%1").arg(DataStruct->mZT1PPEAlarmFlag3)); + Item->child(7)->setText(1,QString("%1").arg(DataStruct->mZT1PPEAlarmFlag4)); + + Item->child(8)->setText(1,QString("%1").arg(DataStruct->mZT1PGAlarmFlag1)); + Item->child(9)->setText(1,QString("%1").arg(DataStruct->mZT1PGAlarmFlag2)); + Item->child(10)->setText(1,QString("%1").arg(DataStruct->mZT1PGAlarmFlag3)); + Item->child(11)->setText(1,QString("%1").arg(DataStruct->mZT1PGAlarmFlag4)); + + Item->child(12)->setText(1,QString("%1").arg(DataStruct->mZT1FNAlarmFlag1)); + Item->child(13)->setText(1,QString("%1").arg(DataStruct->mZT1FNAlarmFlag2)); + Item->child(14)->setText(1,QString("%1").arg(DataStruct->mZT1FNAlarmFlag3)); + Item->child(15)->setText(1,QString("%1").arg(DataStruct->mZT1FNAlarmFlag4)); + + if(DataStruct->mITI10_12Flag == 0) + { + TempStr = "Principal"; + } + else + { + TempStr = "Secondaire"; + } + Item->child(16)->setText(1,QString("%1").arg(DataStruct->mITI10_12Flag)); + Item->child(16)->setText(2,TempStr); + + Item->child(17)->setText(1,QString("%1").arg(DataStruct->mZT1V00AlarmFlag)); + Item->child(18)->setText(1,QString("%1").arg(DataStruct->mZT1PEQ1AlarmFlag)); + + for(int i = 0; i < 16; i++) + { + Item->child(i)->setText(2,QString("%1").arg(DataStruct->mZT1Ranks.at(i))); + } + + //ZT2 + Item = mModbusSEIDataTree->topLevelItem(1); + + Item->child(0)->setText(1,QString("%1").arg(DataStruct->mZT2PPIAlarmFlag1)); + Item->child(1)->setText(1,QString("%1").arg(DataStruct->mZT2PPIAlarmFlag2)); + Item->child(2)->setText(1,QString("%1").arg(DataStruct->mZT2PPIAlarmFlag3)); + Item->child(3)->setText(1,QString("%1").arg(DataStruct->mZT2PPIAlarmFlag4)); + + Item->child(4)->setText(1,QString("%1").arg(DataStruct->mZT2PPEAlarmFlag1)); + Item->child(5)->setText(1,QString("%1").arg(DataStruct->mZT2PPEAlarmFlag2)); + Item->child(6)->setText(1,QString("%1").arg(DataStruct->mZT2PPEAlarmFlag3)); + Item->child(7)->setText(1,QString("%1").arg(DataStruct->mZT2PPEAlarmFlag4)); + + Item->child(8)->setText(1,QString("%1").arg(DataStruct->mZT2V02AlarmFlag)); + Item->child(9)->setText(1,QString("%1").arg(DataStruct->mZT2PEQ2AlarmFlag)); + + for(int i = 0; i < 8; i++) + { + Item->child(i)->setText(2,QString("%1").arg(DataStruct->mZT2Ranks.at(i))); + } + + //Watchdog + Item = mModbusSEIDataTree->topLevelItem(2); + Item->child(0)->setText(1,QString("%1").arg(DataStruct->mWatchdogZT)); + + Item = mModbusSEIDataTree->topLevelItem(3); //SEI + Item->child(0)->setText(1,QString("%1").arg(DataStruct->mWatchdogRemote)); + Item->child(1)->setText(1,QString("%1").arg(DataStruct->mAN1)); + Item->child(2)->setText(1,QString("%1").arg(DataStruct->mAN2)); + + delete DataStruct; } void CModbusDisplayPage::RefreshTimerExpired() { - UpdateTable(CC_MODBUS_TABLE_SOURCE); - UpdateTable(SEI_MODBUS_TABLE_SOURCE); + UpdateCCModbusTable(); + UpdateSEIModbusTable(); +// UpdateTable(CC_MODBUS_TABLE_SOURCE); +// UpdateTable(SEI_MODBUS_TABLE_SOURCE); } void CModbusDisplayPage::showEvent(QShowEvent *event) { + if(mCCRepoHandle == 0 || + mSEIRepoHandle == 0 || + mProgramHandle == 0) + { + return; + } + + mRefreshTimer->start(); } + + +quint8 CModbusDisplayPage::BCDToDecByte(const quint8 byte) +{ + quint8 out = 0; + quint8 temp = 0; + + out += byte & 0x0F; + temp = (byte >> 4) & 0x0F; + out += (temp * 10); + + return out; + +} + +quint16 CModbusDisplayPage::BCDToDecWord(const quint16 word) +{ + quint16 out = 0; + quint16 temp = 0; + + out += word & 0x000F; + temp = (word >> 4) & 0x000F; + out += (temp * 10); + temp = (word >> 8) & 0x000F; + out += (temp * 100); + temp = (word >> 12) & 0x000F; + out += (temp * 1000); + + return out; + +} diff --git a/sources/GuiElements/ModbusDisplayPage.h b/sources/GuiElements/ModbusDisplayPage.h index 04638dc..1313ee4 100644 --- a/sources/GuiElements/ModbusDisplayPage.h +++ b/sources/GuiElements/ModbusDisplayPage.h @@ -30,13 +30,15 @@ public: CZoneTest *mProgramHandle; QGraphicsRectItem *mBackgroundRect; CTextButtonWidget *mCloseBtn; - QTreeWidget *mModbusDataTree; + QTreeWidget *mModbusCCDataTree, *mModbusSEIDataTree; CModbusRepository *mCCRepoHandle, *mSEIRepoHandle; QTimer *mRefreshTimer; private: int UpdateTable(int source); + quint8 BCDToDecByte(const quint8 byte); + quint16 BCDToDecWord(const quint16 word); signals: @@ -92,6 +94,20 @@ public: int mWatchdogZT; + int mWatchdogRemote; + int mAN1; + int mAN2; + int mInhibitZT1; + int mInhibitZT2; + int mZT1TrainType; + int mZT2TrainType; + int mZT1TrainID1, mZT1TrainID2, mZT1TrainID3; + int mZT2TrainID1, mZT2TrainID2, mZT2TrainID3; + + int mUpdateDateTimeFlag; + int mNTPSeconds, mNTPHourMinutes, mNTPMonthDay, mNTPYear; + + CZTInfo(){;} }; diff --git a/sources/Modbus/ModbusSEIMgr.cpp b/sources/Modbus/ModbusSEIMgr.cpp index 1c4c76e..0723676 100644 --- a/sources/Modbus/ModbusSEIMgr.cpp +++ b/sources/Modbus/ModbusSEIMgr.cpp @@ -216,6 +216,7 @@ void CModbusSEIMgr::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Lengt qint16 WD = mModbusRepo->GetSingleReg(SEI_MODBUS_SEI_WATCHDOG_REG); WD = (WD & SEI_MODBUS_SEI_WATCHDOG_MASK); +// qDebug("WD = %d",WD); if(FirstUpdate) { mSEIWatchdogState = WD; diff --git a/sources/Zonetest.cpp b/sources/Zonetest.cpp index 9d9ea5d..334a21b 100644 --- a/sources/Zonetest.cpp +++ b/sources/Zonetest.cpp @@ -929,6 +929,20 @@ bool CZoneTest::eventFilter(QObject *obj, QEvent *event) } return true; //keep the keystroke } + else if(KeyEvent->key() == Qt::Key_F4) //F4 Key toggles the Modbus data display page + { + if(mZTSettings->mUseModbusCC == true) + { + if(panel.mModbusDisplayPage->isVisible()) + { + panel.mModbusDisplayPage->hide(); + } + else + { + panel.mModbusDisplayPage->show(); + } + } + } } }