Files
EJM_Display/Pages/P02_ShieldPage.cpp
2025-09-28 17:14:34 +08:00

246 lines
12 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "P02_ShieldPage.h"
#include "ui_P02_ShieldPage.h"
#include <QDebug>
#include <GlobalDefinitions/Variable.h>
#include <QCheckBox>
#include <QLabel>
#include <PublicFunctions/Basic.h>
#include <FileOperation/ConfigFiles.h>
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实例
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();
QList<QStringList> FileData = ConfigFiles().ReadFile_Csv("./ProgramConfig/UI_屏蔽界面文本_配置.csv");
//qDebug()<<FileData.size();
for (int row = 1; row < FileData.size()-1; ++row)
{
QString TextObjName = QString("TxtStatus_Shield_%1").arg(row-1);
QLabel* Label = findChild<QLabel*>(TextObjName);
if (Label) {
QString Text = FileData.at(row)[1];
Text.replace("\\n","\n",Qt::CaseInsensitive);
Label->setText(Text);
}
TrueColor.append(FileData.at(row)[2]);
FalseColor.append(FileData.at(row)[3]);
ShieldText.append(FileData.at(row)[4]);
unShieldText.append(FileData.at(row)[5]);
//qDebug()<<row<<FileData.at(row)[1]<<TrueColor[row-1]<<FalseColor[row-1]<<ShieldText[row-1]<<unShieldText[row-1];
}
}
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(this->isHidden())
return;
Status1 = gOPC_NodeValue["ns=6;s=::AsGlobalPV:But_Shield.DataStatus1"] .toUInt();
Status2 = gOPC_NodeValue["ns=6;s=::AsGlobalPV:But_Shield.DataStatus2"] .toUInt();
Shield1 = gOPC_NodeValue["ns=6;s=::AsGlobalPV:But_Shield.isShield1"] .toUInt();
Shield2 = gOPC_NodeValue["ns=6;s=::AsGlobalPV:But_Shield.isShield2"] .toUInt();
uint32_t TmpBool = gOPC_NodeValue["ns=6;s=::AsGlobalPV:PageBOOLS.B0"] .toUInt();
// 急停的显示
for (uint8_t i=0;i<12;i++) {
QString TextObjName = QString("Led_EStop_%1").arg(i);
QLabel* Label = findChild<QLabel*>(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<QLabel*>(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);
}
}
if(isRefreshBut){
for (int i = 0; i < 32; ++i)
{
QString CheckBoxObjName = QString("But_Shield_%1").arg(i);
// 在当前窗口中查找指定名称的QCheckBox
QCheckBox* checkBox = findChild<QCheckBox*>(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<QCheckBox*>(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);
}
}
}
}
for (int i = 0; i < 32; ++i) {
QString TextObjName = QString("TxtStatus_Shield_%1").arg(i+32);
QLabel* Label = findChild<QLabel*>(TextObjName);
if (Label) {
QString StyleStr = "border-image: url(:/Frames/null.png);\n";
if(getBitOf32Data(Status1, i,false)){
StyleStr = StyleStr + TrueColor[i+32]+"\n";
}else{
StyleStr = StyleStr + FalseColor[i+32]+"\n";
}
Label->setStyleSheet(StyleStr);
}
}
}
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<QCheckBox*>(TextObjName);
if (checkBox) {
checkBox->setChecked(Checked);
}
int8_t Count = 0;
if(var <2 && Index<32){
QString NodeId = "ns=6;s=::AsGlobalPV: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()<<"屏蔽状态切换,改变后的状态:"<<Checked << " 是否写入成功:" << isOK <<NodeId;
}
isRefreshBut = true;
}
void P02_ShieldPage::on_But_Shield_0_clicked(bool checked){WriteShield(0,0,checked);}
void P02_ShieldPage::on_But_Shield_1_clicked(bool checked){WriteShield(0,1,checked);}
void P02_ShieldPage::on_But_Shield_2_clicked(bool checked){WriteShield(0,2,checked);}
void P02_ShieldPage::on_But_Shield_3_clicked(bool checked){;WriteShield(0,3,checked);}
void P02_ShieldPage::on_But_Shield_4_clicked(bool checked){WriteShield(0,4,checked);}
void P02_ShieldPage::on_But_Shield_5_clicked(bool checked){WriteShield(0,5,checked);}
void P02_ShieldPage::on_But_Shield_6_clicked(bool checked){WriteShield(0,6,checked);}
void P02_ShieldPage::on_But_Shield_7_clicked(bool checked){WriteShield(0,7,checked);}
void P02_ShieldPage::on_But_Shield_8_clicked(bool checked){WriteShield(0,8,checked);}
void P02_ShieldPage::on_But_Shield_9_clicked(bool checked){WriteShield(0,9,checked);}
void P02_ShieldPage::on_But_Shield_10_clicked(bool checked){WriteShield(0,10,checked);}
void P02_ShieldPage::on_But_Shield_11_clicked(bool checked){WriteShield(0,11,checked);}
void P02_ShieldPage::on_But_Shield_12_clicked(bool checked){WriteShield(0,12,checked);}
void P02_ShieldPage::on_But_Shield_13_clicked(bool checked){WriteShield(0,13,checked);}
void P02_ShieldPage::on_But_Shield_14_clicked(bool checked){WriteShield(0,14,checked);}
void P02_ShieldPage::on_But_Shield_15_clicked(bool checked){WriteShield(0,15,checked);}
void P02_ShieldPage::on_But_Shield_16_clicked(bool checked){WriteShield(0,16,checked);}
void P02_ShieldPage::on_But_Shield_17_clicked(bool checked){WriteShield(0,17,checked);}
void P02_ShieldPage::on_But_Shield_18_clicked(bool checked){WriteShield(0,18,checked);}
void P02_ShieldPage::on_But_Shield_19_clicked(bool checked){WriteShield(0,19,checked);}
void P02_ShieldPage::on_But_Shield_20_clicked(bool checked){WriteShield(0,20,checked);}
void P02_ShieldPage::on_But_Shield_21_clicked(bool checked){WriteShield(0,21,checked);}
void P02_ShieldPage::on_But_Shield_22_clicked(bool checked){WriteShield(0,22,checked);}
void P02_ShieldPage::on_But_Shield_23_clicked(bool checked){WriteShield(0,23,checked);}
void P02_ShieldPage::on_But_Shield_24_clicked(bool checked){WriteShield(0,24,checked);}
void P02_ShieldPage::on_But_Shield_25_clicked(bool checked){WriteShield(0,25,checked);}
void P02_ShieldPage::on_But_Shield_26_clicked(bool checked){WriteShield(0,26,checked);}
void P02_ShieldPage::on_But_Shield_27_clicked(bool checked){WriteShield(0,27,checked);}
void P02_ShieldPage::on_But_Shield_28_clicked(bool checked){WriteShield(0,28,checked);}
void P02_ShieldPage::on_But_Shield_29_clicked(bool checked){WriteShield(0,29,checked);}
void P02_ShieldPage::on_But_Shield_30_clicked(bool checked){WriteShield(0,30,checked);}
void P02_ShieldPage::on_But_Shield_31_clicked(bool checked){WriteShield(0,31,checked);}
void P02_ShieldPage::on_But_Shield_32_clicked(bool checked){WriteShield(1,0,checked);}
void P02_ShieldPage::on_But_Shield_33_clicked(bool checked){WriteShield(1,1,checked);}
void P02_ShieldPage::on_But_Shield_34_clicked(bool checked){WriteShield(1,2,checked);}
void P02_ShieldPage::on_But_Shield_35_clicked(bool checked){WriteShield(1,3,checked);}
void P02_ShieldPage::on_But_Shield_36_clicked(bool checked){WriteShield(1,4,checked);}
void P02_ShieldPage::on_But_Shield_37_clicked(bool checked){WriteShield(1,5,checked);}
void P02_ShieldPage::on_But_Shield_38_clicked(bool checked){WriteShield(1,6,checked);}
void P02_ShieldPage::on_But_Shield_39_clicked(bool checked){WriteShield(1,7,checked);}
void P02_ShieldPage::on_But_Shield_40_clicked(bool checked){WriteShield(1,8,checked);}
void P02_ShieldPage::on_But_Shield_41_clicked(bool checked){WriteShield(1,9,checked);}
void P02_ShieldPage::on_But_Shield_42_clicked(bool checked){WriteShield(1,10,checked);}
void P02_ShieldPage::on_But_Shield_43_clicked(bool checked){WriteShield(1,11,checked);}
void P02_ShieldPage::on_But_Shield_44_clicked(bool checked){WriteShield(1,12,checked);}
void P02_ShieldPage::on_But_Shield_45_clicked(bool checked){WriteShield(1,13,checked);}
void P02_ShieldPage::on_But_Shield_46_clicked(bool checked){WriteShield(1,14,checked);}
void P02_ShieldPage::on_But_Shield_47_clicked(bool checked){WriteShield(1,15,checked);}
void P02_ShieldPage::on_But_Shield_48_clicked(bool checked){WriteShield(1,16,checked);}
void P02_ShieldPage::on_But_Shield_49_clicked(bool checked){WriteShield(1,17,checked);}
void P02_ShieldPage::on_But_Shield_50_clicked(bool checked){WriteShield(1,18,checked);}
void P02_ShieldPage::on_But_Shield_51_clicked(bool checked){WriteShield(1,19,checked);}
void P02_ShieldPage::on_But_Shield_52_clicked(bool checked){WriteShield(1,20,checked);}
void P02_ShieldPage::on_But_Shield_53_clicked(bool checked){WriteShield(1,21,checked);}
void P02_ShieldPage::on_But_Shield_54_clicked(bool checked){WriteShield(1,22,checked);}
void P02_ShieldPage::on_But_Shield_55_clicked(bool checked){WriteShield(1,23,checked);}
void P02_ShieldPage::on_But_Shield_56_clicked(bool checked){WriteShield(1,24,checked);}
void P02_ShieldPage::on_But_Shield_57_clicked(bool checked){WriteShield(1,25,checked);}
void P02_ShieldPage::on_But_Shield_58_clicked(bool checked){WriteShield(1,26,checked);}
void P02_ShieldPage::on_But_Shield_59_clicked(bool checked){WriteShield(1,27,checked);}
void P02_ShieldPage::on_But_Shield_60_clicked(bool checked){WriteShield(1,28,checked);}
void P02_ShieldPage::on_But_Shield_61_clicked(bool checked){WriteShield(1,29,checked);}
void P02_ShieldPage::on_But_Shield_62_clicked(bool checked){WriteShield(1,30,checked);}
void P02_ShieldPage::on_But_Shield_63_clicked(bool checked){WriteShield(1,31,checked);}