#include "ModbusDisplayPage.h" #include "Zonetest.h" #include #include "ModbusCCDefs.h" #include "ModbusSEIDefs.h" #include "ModbusRepository.h" CModbusDisplayPage::CModbusDisplayPage(QGraphicsWidget *parent) { setParentItem(parent); mProgramHandle = 0; mCCRepoHandle = 0; mSEIRepoHandle = 0; mBackgroundRect = new QGraphicsRectItem(boundingRect(), this); QBrush BackgroundBrush(QColor(245, 245, 255,200)); mBackgroundRect->setBrush(BackgroundBrush); mCloseBtn = new CTextButtonWidget("Fermer"); mCloseBtn->setParentItem(this); mCloseBtn->setPos(600,600); connect(mCloseBtn,SIGNAL(TxtButtonClicked(CTextButtonWidget*)),this,SLOT(ButtonClicked(CTextButtonWidget*))); mModbusDataTree = new QTreeWidget; QGraphicsProxyWidget *Proxy = new QGraphicsProxyWidget(this); Proxy->setWidget(mModbusDataTree); Proxy->setPos(0,0); mModbusDataTree->resize(750,750); mRefreshTimer = new QTimer(); mRefreshTimer->setSingleShot(false); mRefreshTimer->setInterval(300); mRefreshTimer->stop(); 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")); //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")); QTreeWidgetItem* Item; // Item = new QTreeWidgetItem(QStringList()<addChild(Item); Item = Items.at(0); 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()<insertTopLevelItems(0,Items); mModbusDataTree->resizeColumnToContents(1); mModbusDataTree->expandAll(); mModbusDataTree->resizeColumnToContents(0); } void CModbusDisplayPage::resizeEvent(QGraphicsSceneResizeEvent *event) { Q_UNUSED(event) mBackgroundRect->setRect(boundingRect()); mCloseBtn->setPos(50,boundingRect().height()-50); mModbusDataTree->resize(boundingRect().width(),boundingRect().height()-50); } CModbusDisplayPage::~CModbusDisplayPage() { delete mModbusDataTree; } void CModbusDisplayPage::ButtonClicked(CTextButtonWidget *button) { if(button == mCloseBtn) { mRefreshTimer->stop(); mProgramHandle->CloseModbusDataPageRequest(); } } int CModbusDisplayPage::UpdateTable(int Source) { CModbusRepository *SourceRepo; 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); 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 RET_ERROR; } QList RankData; RankData = SourceRepo->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 RET_ERROR; } data = SourceRepo->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 RET_ERROR; } RankData.clear(); RankData = SourceRepo->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 RET_ERROR; } data = SourceRepo->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 RET_ERROR; } DataStruct->mWatchdogZT = SourceRepo->GetSingleReg(MODBUS_ZT_WATCHDOG_REG_ADD,&OK); QTreeWidgetItem* Item; QString TempStr; //ZT1 Item = mModbusDataTree->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,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 = mModbusDataTree->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 = mModbusDataTree->topLevelItem(2); Item->child(0)->setText(1,QString("%1").arg(DataStruct->mWatchdogZT)); delete DataStruct; return RET_OK; } void CModbusDisplayPage::UpdateCCModbusTable() { UpdateTable(CC_MODBUS_TABLE_SOURCE); } void CModbusDisplayPage::UpdateSEIModbusTable() { UpdateTable(SEI_MODBUS_TABLE_SOURCE); } void CModbusDisplayPage::RefreshTimerExpired() { UpdateTable(CC_MODBUS_TABLE_SOURCE); UpdateTable(SEI_MODBUS_TABLE_SOURCE); } void CModbusDisplayPage::showEvent(QShowEvent *event) { mRefreshTimer->start(); }