From b544d5cccd76735e034c8055918a50927b437474 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期二, 10 十一月 2026 08:29:04 +0800
Subject: [PATCH] fix: 维护模式重复进入失败与按钮灰死 + Broker 并发验证用例
---
HMI.Util/Alarm/AlarmUtil.cs | 38 ++++++++++++++++----------------------
1 files changed, 16 insertions(+), 22 deletions(-)
diff --git a/HMI.Util/Alarm/AlarmUtil.cs b/HMI.Util/Alarm/AlarmUtil.cs
index 1044e1e..35ad725 100644
--- a/HMI.Util/Alarm/AlarmUtil.cs
+++ b/HMI.Util/Alarm/AlarmUtil.cs
@@ -2,6 +2,7 @@
using HMI.Core.Entity;
using HMI.Core.Setting;
using HMI.Core.Util;
+using HMI.Simple.Util;
using log4net;
using S7Driver;
using System;
@@ -19,7 +20,7 @@
public event EventHandler<LoadMsg> LoadMessageAppend;
- private static ILog log = LogManager.GetLogger("AlarmHelper");
+ internal static ILog log = LogManager.GetLogger("AlarmHelper");
internal AlarmHelper()
{
@@ -192,7 +193,7 @@
private void RefershAlarm()
{
- alarmRefershToMain.Send("AlarmRefersh", string.Empty);
+ alarmRefershToMain.Send("AlarmRefersh", string.Empty, string.Empty, 0);
List<AlarmText> alarms = new List<AlarmText>();
foreach (AlarmText alarm in currentPLCAlarmCache)
@@ -223,8 +224,8 @@
try
{
mqTimer.Enabled = false;
- alarmQueue.Receive(100, out string MessageID, out string MsgStr);
- if (MessageID != string.Empty)
+ alarmQueue.Receive(100, out string MessageID, out MQAlarm alarm);
+ if (MessageID != string.Empty && alarm != null)
{
switch (MessageID)
{
@@ -251,28 +252,19 @@
//}
break;
default:
- string[] arr = MsgStr.Split(',');
- string source = "PC";
- string info = string.Empty;
- if (arr.Length > 1)
- {
- source = arr[0];
- info = arr[1];
- }
- else
- {
- info = MsgStr;
- }
+ string source = string.IsNullOrEmpty(alarm.Source) ? "PC" : alarm.Source;
+ string info = alarm.Content;
+
AlarmText newAlarm = new AlarmText
{
Source = source,
VirtualId = $"{source}:{info}",
AlarmInfo = info,
- Level = 3,
+ Level = alarm.Level,
Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
};
if (currentMQAlarmCache
- .Find(alarm => alarm.Source == newAlarm.Source && alarm.AlarmInfo == newAlarm.AlarmInfo) == null)
+ .Find(a => a.Source == newAlarm.Source && a.AlarmInfo == newAlarm.AlarmInfo) == null)
{
currentMQAlarmCache.Add(newAlarm);
RefershAlarm();
@@ -297,7 +289,7 @@
BlockReadCache.Clear();
try
{
- BlockSettings = XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(blockFilePath);
+ BlockSettings = HMI.Core.Util.XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(blockFilePath);
}
catch (Exception ex)
{
@@ -321,7 +313,7 @@
{
try
{
- MarkSettings = XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(markFilePath);
+ MarkSettings = HMI.Core.Util.XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(markFilePath);
}
catch (Exception ex)
{
@@ -338,13 +330,13 @@
public void UpdateBlockSettings(IEnumerable<AlarmSetting> settings)
{
- XmlHelper.SerializeToXml(blockFilePath, settings);
+ HMI.Core.Util.XmlHelper.SerializeToXml(blockFilePath, settings);
RefreshBlockSettings();
}
public void UpdateMarkSettings(IEnumerable<AlarmSetting> settings)
{
- XmlHelper.SerializeToXml(markFilePath, settings);
+ HMI.Core.Util.XmlHelper.SerializeToXml(markFilePath, settings);
RefreshMarkSettings();
}
}
@@ -361,10 +353,12 @@
public static void Init()
{
+ AlarmHelper.log.Info("AlarmUtil initing...");
Instance = new AlarmHelper();
Instance.LoadMessageAppend += Instance_LoadMessageAppend; ;
Instance.InitInstance();
Instance.OnAlarm += Instance_OnAlarm;
+ AlarmHelper.log.Info("AlarmUtil inited finished.");
}
private static void Instance_LoadMessageAppend(object sender, LoadMsg e)
--
Gitblit v1.9.1