#include "P02_ShieldPage.h" #include "ui_P02_ShieldPage.h" #include #include #include #include #include #include P02_ShieldPage::P02_ShieldPage(QWidget *parent) : QWidget(parent), ui(new Ui::P02_ShieldPage) { ui->setupUi(this); m_OpcUaManager = OpcUaManager::instance(); // 全局唯一OPC实例 m_DataCenter = DataCenter::instance(); // 全局唯一DataCenter实例 QTimer::singleShot(1000, this, &P02_ShieldPage::WinInit); } P02_ShieldPage::~P02_ShieldPage() { delete ui; } void P02_ShieldPage::WinInit(){ //所用定时器初始化 QTimer* UIRefresh_Timer = new QTimer(this); connect(UIRefresh_Timer, &QTimer::timeout, this, &P02_ShieldPage::UIRefreshTimeOut); UIRefresh_Timer->setInterval(100); // 设置定时器间隔为 1000 毫秒(1 秒) UIRefresh_Timer->start(); for (int row = 1; row < ShieldConfigFile.size()-1; ++row) { QLabel* Label = findChild(QString("TxtStatus_Shield_%1").arg(row-1)); if (Label) { QString Text = ShieldConfigFile.at(row)[1]; Text.replace("\\n","\n",Qt::CaseInsensitive); Label->setText(Text); } TrueColor.append(getColorStr(ShieldConfigFile.at(row)[2])); FalseColor.append(getColorStr(ShieldConfigFile.at(row)[3])); ShieldText.append(getColorStr(ShieldConfigFile.at(row)[4])); unShieldText.append(getColorStr(ShieldConfigFile.at(row)[5])); } } bool isRefreshBut = true; void SetStyleStr(QLabel *L,bool Status,QString TStr,QString FStr){ if(L == nullptr) return; QString Style = ""; if(Status){ Style = TStr; }else{ Style = FStr; } if(L->styleSheet() != Style) L->setStyleSheet(Style); } void P02_ShieldPage::UIRefreshTimeOut(){ if(gPageIndexStr != "P02") return; Status1 = getNodeValue("But_Shield.DataStatus1") .toUInt(); Status2 = getNodeValue("But_Shield.DataStatus2") .toUInt(); Shield1 = getNodeValue("But_Shield.isShield1") .toUInt(); Shield2 = getNodeValue("But_Shield.isShield2") .toUInt(); uint32_t TmpBool = getNodeValue("PageBOOLS.B0") .toUInt(); // 急停的显示 for (uint8_t i=0;i<12;i++) { QString TextObjName = QString("Led_EStop_%1").arg(i); QLabel* Label = findChild(TextObjName); if (Label) { SetStyleStr(Label,getBitOf32Data(TmpBool, i,false),"color: rgb(255, 0, 0);","color: rgb(0, 255, 0);"); } } // ESR状态显示 SetStyleStr(ui->Status_IESR_1,getBitOf32Data(TmpBool, 12,false),"border-image: url(:/Icos/Icos/LED2_Green.png);","border-image: url(:/Icos/Icos/LED1_Rad.png);"); SetStyleStr(ui->Status_IESR_2,getBitOf32Data(TmpBool, 13,false),"border-image: url(:/Icos/Icos/LED2_Green.png);","border-image: url(:/Icos/Icos/LED1_Rad.png);"); SetStyleStr(ui->Status_QESR_1,getBitOf32Data(TmpBool, 14,false),"border-image: url(:/Icos/Icos/LED2_Green.png);","border-image: url(:/Icos/Icos/LED3_Rad (2).png);"); SetStyleStr(ui->Status_QESR_2,getBitOf32Data(TmpBool, 15,false),"border-image: url(:/Icos/Icos/LED2_Green.png);","border-image: url(:/Icos/Icos/LED3_Rad (2).png);"); for (int i = 0; i < 32; ++i) { QString TextObjName = QString("TxtStatus_Shield_%1").arg(i); QLabel* Label = findChild(TextObjName); if (Label) { QString StyleStr = "border-image: url(:/Frames/null.png);\n"; if(getBitOf32Data(Status1, i,false)){ StyleStr = StyleStr + TrueColor[i]+"\n"; }else{ StyleStr = StyleStr + FalseColor[i]+"\n"; } Label->setStyleSheet(StyleStr); } } for (int i = 0; i < 32; ++i) { QString TextObjName = QString("TxtStatus_Shield_%1").arg(i+32); QLabel* Label = findChild(TextObjName); if (Label) { QString StyleStr = "border-image: url(:/Frames/null.png);\n"; if(getBitOf32Data(Status2, i,false)){ StyleStr = StyleStr + TrueColor[i+32]+"\n"; }else{ StyleStr = StyleStr + FalseColor[i+32]+"\n"; } Label->setStyleSheet(StyleStr); } } if(isRefreshBut){ for (int i = 0; i < 32; ++i) { QString CheckBoxObjName = QString("But_Shield_%1").arg(i); // 在当前窗口中查找指定名称的QCheckBox QCheckBox* checkBox = findChild(CheckBoxObjName); if (checkBox) { if(getBitOf32Data(Shield1, i,false)){ checkBox->setChecked(true); checkBox->setText(ShieldText[i]); }else{ checkBox->setChecked(false); checkBox->setText(unShieldText[i]); } } } for (int i = 0; i < 32; ++i) { QString CheckBoxObjName = QString("But_Shield_%1").arg(i+32); // 在当前窗口中查找指定名称的QCheckBox QCheckBox* checkBox = findChild(CheckBoxObjName); if (checkBox) { if(getBitOf32Data(Shield2, i,false)){ checkBox->setChecked(true); checkBox->setText(ShieldText[i+32]); }else{ checkBox->setChecked(false); checkBox->setText(unShieldText[i+32]); } } } } } void P02_ShieldPage::WriteShield( uint8_t var,uint8_t Index,bool Checked){ isRefreshBut = false; QString TextObjName = QString("But_Shield_%1").arg(var*32+Index); QCheckBox* checkBox = findChild(TextObjName); if (checkBox) { checkBox->setChecked(Checked); } int8_t Count = 0; if(var <2 && Index<32){ QString NodeId = "But_Shield.isShield"+QString::number(var+1); bool isOK = false; if(var == 0) { writeBitOf32Data(Shield1,Index,Checked); while (!m_OpcUaManager->writeNodeValue(NodeId,Shield1) && Count < 10) { Count++; } }else if(var == 1){ writeBitOf32Data(Shield2,Index,Checked); while (!m_OpcUaManager->writeNodeValue(NodeId,Shield2) && Count < 10) { Count++; } } qDebug()<<"屏蔽状态切换,改变后的状态:"<