123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- using System;
- using System.Collections.Generic;
- using System.Windows.Forms;
- namespace BaseLibRWFile
- {
- public class AlarmManager
- {
- public static event Action<AlarmMsg> TriggerAlarmEvent;
- public static event Action ClearAlarmEvent;
- private static AlarmMsg almTrigTemp = new AlarmMsg();
- private static AlarmMsg almClearTemp = new AlarmMsg();
- public static Dictionary<string, AlarmMsg> dicCurrentAlarm = new Dictionary<string, AlarmMsg>();
- public static bool TriggerAlarm(string strErCode, string strException = "",string strAlarmPos = "")
- {
- if (dicCurrentAlarm.ContainsKey(strErCode))
- {
- return false;
- }
- DateTime dtStart, dtEnd;
- try
- {
- if(GlobalPara.CurrentMachineState != MachineState.EStop)
- {
- GlobalPara.CurrentMachineState = MachineState.Alarming;
- }
- string Content;
- string Solution;
- switch (GlobalPara.CurrentLanguage)
- {
- case Language.English:
- Content = RWAlarmFile.ErrorCodeDic[strErCode].ContentEnglish;
- Solution = RWAlarmFile.ErrorCodeDic[strErCode].SolutionEnglish;
- break;
- case Language.Chinese:
- Content = RWAlarmFile.ErrorCodeDic[strErCode].ContentChinese;
- Solution = RWAlarmFile.ErrorCodeDic[strErCode].SolutionChinese;
- break;
- default:
- Content = RWAlarmFile.ErrorCodeDic[strErCode].ContentChinese;
- Solution = RWAlarmFile.ErrorCodeDic[strErCode].SolutionChinese;
- break;
- }
- almTrigTemp.ErrorCode = strErCode;
- almTrigTemp.Level = Convert.ToInt32(RWAlarmFile.ErrorCodeDic[strErCode].Level);
- almTrigTemp.Enable = RWAlarmFile.ErrorCodeDic[strErCode].Enable == "false" ? false : true;
- almTrigTemp.Content = Content;
- almTrigTemp.Exception = strException;
- almTrigTemp.Solution = Solution;
- almTrigTemp.PictureName = RWAlarmFile.ErrorCodeDic[strErCode].PictureName;
- almTrigTemp.FileName = RWAlarmFile.ErrorCodeDic[strErCode].PDFFileName;
- almTrigTemp.PageNo = RWAlarmFile.ErrorCodeDic[strErCode].PDFPageNo;
- dtStart = DateTime.Now;
- almTrigTemp.StartTime = dtStart.ToString("yyyy-MM-dd HH:mm:ss.fff");
- almTrigTemp.EndTime = string.Empty;
- almTrigTemp.MachineMode = GlobalPara.CurrentMachineMode.ToString();
- almTrigTemp.Operator = GlobalPara.CurrentOperationLevel.ToString();
- almTrigTemp.AlarmPos = strAlarmPos;
- almTrigTemp.CMErrorCode = RWAlarmFile.ErrorCodeDic[strErCode].SpecifiedErrorCode;
- switch (almTrigTemp.Level)
- {
- case 1://Switch to the alarm interface
- almTrigTemp.IsShow = true;
- dicCurrentAlarm.Add(almTrigTemp.ErrorCode, almTrigTemp);
- TriggerAlarmEvent?.Invoke(almTrigTemp);
- return true;
- case 2://Popup prompt
- switch (GlobalPara.CurrentLanguage)
- {
- case Language.English:
- MessageBox.Show($"ErrorCode:{almTrigTemp.ErrorCode}\r\nAlarmContent:{almTrigTemp.Content}\r\n" +
- $"Solution:{almTrigTemp.Solution}\r\nStartingTime:{almTrigTemp.StartTime}\r\n" +
- $"MachineMode:{almTrigTemp.MachineMode}\r\nOperator:{almTrigTemp.Operator}\r\n", "Alarm Tips",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- break;
- case Language.Chinese:
- MessageBox.Show($"报警代码:{almTrigTemp.ErrorCode}\r\n报警内容:{almTrigTemp.Content}\r\n" +
- $"解决方案:{almTrigTemp.Solution}\r\n开始时间:{almTrigTemp.StartTime}\r\n" +
- $"机台模式:{almTrigTemp.MachineMode}\r\n操作员:{almTrigTemp.Operator}\r\n", "报警提示",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- break;
- default:
- MessageBox.Show($"ErrorCode:{almTrigTemp.ErrorCode}\r\nAlarmContent:{almTrigTemp.Content}\r\n" +
- $"Solution:{almTrigTemp.Solution}\r\nStartingTime:{almTrigTemp.StartTime}\r\n" +
- $"MachineMode:{almTrigTemp.MachineMode}\r\nOperator:{almTrigTemp.Operator}\r\n", "Alarm Tips",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- break;
- }
- break;
- case 3://Interface prompt
- almTrigTemp.IsShow = false;
- switch (GlobalPara.CurrentLanguage)
- {
- case Language.English:
- if (MessageBox.Show($"ErrorCode:{almTrigTemp.ErrorCode}\r\nAlarmContent:{almTrigTemp.Content}\r\n" +
- $"Solution:{almTrigTemp.Solution}\r\nStartingTime:{almTrigTemp.StartTime}\r\n" +
- $"MachineMode:{almTrigTemp.MachineMode}\r\nOperator:{almTrigTemp.Operator}\r\n", "Alarm Tips",
- MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
- {
- dtEnd = DateTime.Now;
- almTrigTemp.TimeSpan = (dtEnd - dtStart).TotalSeconds.ToString();
- almTrigTemp.EndTime = dtEnd.ToString("yyyy-MM-dd HH:mm:ss.fff");
- RWAlarmFile.WriteAlarmFile(almTrigTemp);
- TriggerAlarmEvent?.Invoke(almTrigTemp);
- //GlobalPara.CurrentMachineState = GlobalPara.LastMachineState;
- return true;
- }
- break;
- case Language.Chinese:
- if (MessageBox.Show($"报警代码:{almTrigTemp.ErrorCode}\r\n报警内容:{almTrigTemp.Content}\r\n" +
- $"解决方案:{almTrigTemp.Solution}\r\n开始时间:{almTrigTemp.StartTime}\r\n" +
- $"机台模式:{almTrigTemp.MachineMode}\r\n操作员:{almTrigTemp.Operator}\r\n", "报警提示",
- MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
- {
- dtEnd = DateTime.Now;
- almTrigTemp.TimeSpan = (dtEnd - dtStart).TotalSeconds.ToString();
- almTrigTemp.EndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
- RWAlarmFile.WriteAlarmFile(almTrigTemp);
- TriggerAlarmEvent?.Invoke(almTrigTemp);
- //GlobalPara.CurrentMachineState = GlobalPara.LastMachineState;
- return true;
- }
- break;
- }
- break;
- default:
- break;
- }
- }
- catch (Exception ex)
- {
- string str = "触发报警出错:";
- Msg.Show($"{str}\r\n{ex}", $"{str}\r\nError triggering alarm:\r\n{ex}",
- $"{str}\r\nLỗi khi kích hoạt cảnh báo:\r\n{ex}", "Error", msgicon: MessageBoxIcon.Error);
- return false;
- }
- //Level == 2 时执行
- almTrigTemp.IsShow = false;
- dtEnd = DateTime.Now;
- almTrigTemp.TimeSpan = (dtEnd - dtStart).TotalSeconds.ToString();
- almTrigTemp.EndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
- RWAlarmFile.WriteAlarmFile(almTrigTemp);
- TriggerAlarmEvent?.Invoke(almTrigTemp);
- return false;
- }
-
- public static void ClearAlarm()
- {
- if (dicCurrentAlarm.Count <= 0)
- {
- return;
- }
- try
- {
- DateTime dtStart, dtEnd;
- dtEnd = DateTime.Now;
- string[] strCount = new string[dicCurrentAlarm.Count];
- int j = 0;
- foreach (var item in dicCurrentAlarm.Keys)
- {
- strCount[j] = item;
- j++;
- }
- for (int i = 0; i < strCount.Length; i++)
- {
- almClearTemp = dicCurrentAlarm[strCount[i]];
- dtStart = Convert.ToDateTime(almClearTemp.StartTime);
- dtEnd = DateTime.Now;
- almClearTemp.EndTime = dtEnd.ToString("yyyy-MM-dd HH:mm:ss.fff");
- almClearTemp.TimeSpan = (dtEnd - dtStart).TotalSeconds.ToString();
- dicCurrentAlarm.Remove(almClearTemp.ErrorCode);
- dicCurrentAlarm.Add(almClearTemp.ErrorCode, almClearTemp);//更新报警时间等内容
- RWAlarmFile.WriteAlarmFile(almClearTemp);
- }
- ClearAlarmEvent?.Invoke();
- }
- catch (Exception ex)
- {
- MessageBox.Show("清除报警内容出错 err :" + ex.ToString());
- }
- }
- }
- }
|