public static void GatherAlarmData(SAlarmEvent almEV, short clientNo) { AlarmData alm = new AlarmData(); alm.time = DateTime.Now; alm.isOnOff = almEV.begin; alm.alarmNo = almEV.alarmNo; alm.alarmTxt = System.Text.Encoding.Default.GetString(almEV.alarmText).Trim('\0'); LineDevice.CNC result = MainForm.cnclist.Find( delegate(LineDevice.CNC temp) { return(temp.HCNCShareData.sysData.clientNo == clientNo); } ); if (result != null) { if (MainForm.m_CheckHander != null && MainForm.m_CheckHander.AlarmSendDataEvenHandle != null) { EquipmentCheck.AlarmSendData SendMeg = new EquipmentCheck.AlarmSendData(); // SendMeg.alardat = new ScadaHncData.AlarmData(); SendMeg.NeedFindTeX = false; SendMeg.BujianID = result.BujianID; SendMeg.alardat = alm; MainForm.m_CheckHander.AlarmSendDataEvenHandle.BeginInvoke(null, SendMeg, null, null); } if (result.HCNCShareData.alarmList.Count == result.HCNCShareData.AlmLstLen) { result.HCNCShareData.alarmList.RemoveRange(0, result.HCNCShareData.AlmLstLen / 2); } UpdateCurrentAlarmLst(result.HCNCShareData, alm); } else if (PLCDataShare.m_plclist != null && PLCDataShare.m_plclist.Count > 0 && PLCDataShare.m_plclist[0].m_hncPLCCollector != null && clientNo == Collector.CollectHNCPLC.m_clientNo)//HNC8 PLC报警 { if (MainForm.m_CheckHander != null && MainForm.m_CheckHander.AlarmSendDataEvenHandle != null) { EquipmentCheck.AlarmSendData SendMeg = new EquipmentCheck.AlarmSendData(); // SendMeg.alardat = new ScadaHncData.AlarmData(); SendMeg.NeedFindTeX = false; SendMeg.BujianID = PLCDataShare.m_plclist[0].m_hncPLCCollector.EQUIP_CODE; SendMeg.alardat = alm; MainForm.m_CheckHander.AlarmSendDataEvenHandle.BeginInvoke(null, SendMeg, null, null); } } }
private static void OnEventAvailable(HNCAPI.SEventElement e, Int16 clientNo) { SAlarmEvent almEV = new SAlarmEvent(); switch (e.code) { case EVENTDEF.ncEvtAlarmChg: //告警上报、消除 almEV = CGlbFunc.ByteToStructure <SAlarmEvent>(e.buf, 4); //从4开始偏移 GatherAlarmData(almEV, clientNo); break; case EVENTDEF.ncEvtPrgStart: UpdateLastProgStartTime(clientNo); break; default: break; } // monitor.Process(e); System.Threading.Tasks.Task.Run(() => monitor.Process(e)); }