|
|
@@ -31,8 +31,8 @@ namespace BPASmartClient.CustomResource.Pages.Model |
|
|
|
private AlarmHelper() { } |
|
|
|
|
|
|
|
|
|
|
|
public static ObservableCollection<Alarm> Alarms { get; set; } = new ObservableCollection<Alarm>(); |
|
|
|
public static List<Alarm> HistoryAlarms { get; set; } = new List<Alarm>(); |
|
|
|
public static ObservableCollection<BPASmartClient.Model.Alarm> Alarms { get; set; } = new ObservableCollection<BPASmartClient.Model.Alarm>(); |
|
|
|
public static List<BPASmartClient.Model.Alarm> HistoryAlarms { get; set; } = new List<BPASmartClient.Model.Alarm>(); |
|
|
|
static ConcurrentDictionary<string, bool> flagbit = new ConcurrentDictionary<string, bool>(); |
|
|
|
static ConcurrentDictionary<string, Delay> delays = new ConcurrentDictionary<string, Delay>(); |
|
|
|
public static Action<string> AddAction { get; set; } |
|
|
@@ -97,7 +97,7 @@ namespace BPASmartClient.CustomResource.Pages.Model |
|
|
|
/// <param name="AlarmInfo">报警信息</param> |
|
|
|
private static void AddAlarm(object value, string AlarmInfo, AlarmLevel alarmLevel) |
|
|
|
{ |
|
|
|
Alarm tempAlarm = new Alarm() |
|
|
|
BPASmartClient.Model.Alarm tempAlarm = new BPASmartClient.Model.Alarm() |
|
|
|
{ |
|
|
|
NumId = Alarms.Count + 1, |
|
|
|
Date = DateTime.Now.ToString("yyyy/MM/dd"), |
|
|
@@ -107,8 +107,8 @@ namespace BPASmartClient.CustomResource.Pages.Model |
|
|
|
Time = DateTime.Now.ToString("HH:mm:ss"), |
|
|
|
}; |
|
|
|
|
|
|
|
var res = Sqlite<Alarm>.GetInstance.Base.Add(tempAlarm); |
|
|
|
Sqlite<Alarm>.GetInstance.Save(); |
|
|
|
var res = Sqlite<BPASmartClient.Model.Alarm>.GetInstance.Base.Add(tempAlarm); |
|
|
|
Sqlite<BPASmartClient.Model.Alarm>.GetInstance.Save(); |
|
|
|
|
|
|
|
if (Alarms.FirstOrDefault(p => p.Info == AlarmInfo) == null) |
|
|
|
{ |
|
|
@@ -145,134 +145,4 @@ namespace BPASmartClient.CustomResource.Pages.Model |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//public class AlarmHelper<AlarmT> where AlarmT : class, new() |
|
|
|
//{ |
|
|
|
|
|
|
|
|
|
|
|
// //private volatile static ConcurrentDictionary<string, AlarmT> _Instance; |
|
|
|
// //public static AlarmT GetInstance(string name) |
|
|
|
// //{ |
|
|
|
// // if (_Instance == null) _Instance = new ConcurrentDictionary<string, AlarmT>(); |
|
|
|
// // if (!_Instance.ContainsKey(name)) _Instance.TryAdd(name, new AlarmT()); |
|
|
|
// // return _Instance[name]; |
|
|
|
// //} |
|
|
|
// //private AlarmHelper() { } |
|
|
|
|
|
|
|
|
|
|
|
// public static ObservableCollection<Alarm> Alarms { get; set; } = new ObservableCollection<Alarm>(); |
|
|
|
// public static List<Alarm> HistoryAlarms { get; set; } = new List<Alarm>(); |
|
|
|
// static ConcurrentDictionary<string, bool> flagbit = new ConcurrentDictionary<string, bool>(); |
|
|
|
// static ConcurrentDictionary<string, Delay> delays = new ConcurrentDictionary<string, Delay>(); |
|
|
|
// public static Action<string> AddAction { get; set; } |
|
|
|
// public static Action<string> RemoveAction { get; set; } |
|
|
|
// public static Action ChangeAction { get; set; } |
|
|
|
|
|
|
|
// public static AlarmT Alarm { get; set; } = new AlarmT(); |
|
|
|
|
|
|
|
// public static void Init() |
|
|
|
// { |
|
|
|
// AlarmViewModel.AlarmInfos = Alarms; |
|
|
|
// ThreadManage.GetInstance().StartLong(new Action(() => |
|
|
|
// { |
|
|
|
// foreach (var item in Alarm.GetType().GetProperties()) |
|
|
|
// { |
|
|
|
// if (item.CustomAttributes.Count() > 0) |
|
|
|
// { |
|
|
|
// var AlarmModel = item.GetCustomAttribute<AlarmAttribute>(); |
|
|
|
// if (AlarmModel != null) |
|
|
|
// { |
|
|
|
// bool value = Convert.ToBoolean(Alarm.GetType().GetProperty(item.Name)?.GetValue(Alarm)); |
|
|
|
// EdgeAlarm(value, AlarmModel.AlarmInfo, 1, AlarmModel.AlarmLevel, AlarmModel.AlarmType); |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
// Thread.Sleep(100); |
|
|
|
// }), $"{typeof(AlarmT).Name},报警通用模块监听"); |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// //public static void AnalogAlarm(dynamic Trigger, string info, dynamic HH = null, dynamic H = 0, dynamic L = 0, dynamic LL = 0) |
|
|
|
// //{ |
|
|
|
|
|
|
|
// //} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
// /// 沿报警检测 |
|
|
|
// /// </summary> |
|
|
|
// /// <param name="Trigger">触发变量</param> |
|
|
|
// /// <param name="text">报警信息</param> |
|
|
|
// /// <param name="edgeType">触发类型,上升沿 或 下降沿</param> |
|
|
|
// private static void EdgeAlarm(bool Trigger, string text, int delay = 2, AlarmLevel alarmLevel = AlarmLevel.一般报警, AlarmTriggerType edgeType = AlarmTriggerType.Rising) |
|
|
|
// { |
|
|
|
// if (!flagbit.ContainsKey(text)) flagbit.TryAdd(text, false); |
|
|
|
// if (!delays.ContainsKey(text)) delays.TryAdd(text, Delay.GetInstance(text)); |
|
|
|
// if (edgeType == AlarmTriggerType.Rising ? delays[text].Start(Trigger, delay) : delays[text].Start(!Trigger, delay)) |
|
|
|
// { |
|
|
|
// if (edgeType == AlarmTriggerType.Rising ? !flagbit[text] : flagbit[text]) |
|
|
|
// { |
|
|
|
// AddAlarm(Trigger, text, alarmLevel); |
|
|
|
// flagbit[text] = edgeType == AlarmTriggerType.Rising ? true : false; |
|
|
|
// } |
|
|
|
// } |
|
|
|
// else RemoveAlarm(text); |
|
|
|
// if (edgeType == AlarmTriggerType.Rising ? flagbit[text] : !flagbit[text]) flagbit[text] = Trigger; |
|
|
|
// } |
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
// /// 添加报警信息 |
|
|
|
// /// </summary> |
|
|
|
// /// <param name="AlarmInfo">报警信息</param> |
|
|
|
// private static void AddAlarm(object value, string AlarmInfo, AlarmLevel alarmLevel) |
|
|
|
// { |
|
|
|
// Alarm tempAlarm = new Alarm() |
|
|
|
// { |
|
|
|
// NumId = Alarms.Count + 1, |
|
|
|
// Date = DateTime.Now.ToString("yyyy/MM/dd"), |
|
|
|
// Grade = alarmLevel.ToString(), |
|
|
|
// Info = AlarmInfo, |
|
|
|
// Value = value.ToString(), |
|
|
|
// Time = DateTime.Now.ToString("HH:mm:ss"), |
|
|
|
// }; |
|
|
|
|
|
|
|
// var res = Sqlite<Alarm>.GetInstance.Base.Add(tempAlarm); |
|
|
|
// Sqlite<Alarm>.GetInstance.Save(); |
|
|
|
|
|
|
|
// if (Alarms.FirstOrDefault(p => p.Info == AlarmInfo) == null) |
|
|
|
// { |
|
|
|
// Application.Current.Dispatcher.Invoke(new Action(() => |
|
|
|
// { |
|
|
|
// Alarms.Insert(0, tempAlarm); |
|
|
|
// for (int i = 0; i < Alarms.Count; i++) { Alarms.ElementAt(i).NumId = i + 1; } |
|
|
|
// })); |
|
|
|
|
|
|
|
// AddAction?.Invoke(AlarmInfo);//添加报警通知 |
|
|
|
// ChangeAction?.Invoke();//更改报警通知 |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
// /// 移除报警信息 |
|
|
|
// /// </summary> |
|
|
|
// /// <param name="AlarmInfo">报警信息</param> |
|
|
|
// private static void RemoveAlarm(string AlarmInfo) |
|
|
|
// { |
|
|
|
// var result = Alarms.FirstOrDefault(p => p.Info == AlarmInfo); |
|
|
|
// if (result != null) |
|
|
|
// { |
|
|
|
// Application.Current.Dispatcher.Invoke(new Action(() => |
|
|
|
// { |
|
|
|
// Alarms.Remove(result); |
|
|
|
// for (int i = 0; i < Alarms.Count; i++) { Alarms.ElementAt(i).NumId = i + 1; } |
|
|
|
// })); |
|
|
|
|
|
|
|
// if (RemoveAction != null) RemoveAction(AlarmInfo); |
|
|
|
// if (ChangeAction != null) ChangeAction(); |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
//} |
|
|
|
} |