Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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));
        }