async Task IEventHandler <UpdateStatusEvent> .HandleAsync(UpdateStatusEvent @event) { if (@event.Target == Target.EntryPoint) { StatusViewModel.Set(@event.Type, @event.Text); } await Task.Yield(); }
private static void CallUpdateStatus(string msg) { UpdateStatusEvent?.Invoke(msg); }
public void UpdateStatus(string text, params object[] args) { UpdateStatusEvent?.Invoke(string.Format(text, args)); }
static public void ThreadScanIOs() { bool bETOP = false; bool bRightETOP = false; bool bDOOR = false; bool bSTART = false; bool bSTOP = false; bool bRESET = false; bool bLaserReady = false; bool bAir = false; bool bLaserFinished = false; Thread.Sleep(5000); if (InputDrivers.drivers.ContainsKey("ESTOP")) { InputDrivers.drivers["ESTOP"].bPreStatus = true; } if (InputDrivers.drivers.ContainsKey("右边急停")) { InputDrivers.drivers["右边急停"].bPreStatus = true; } if (InputDrivers.drivers.ContainsKey("DOOR")) { InputDrivers.drivers["DOOR"].bPreStatus = true; } if (InputDrivers.drivers.ContainsKey("气压信号")) { InputDrivers.drivers["气压信号"].bPreStatus = true; } if (OutputDrivers.drivers.ContainsKey("三色灯黄")) { OUTPUT("三色灯黄").SetOutBit(true); } while (true) { try { #region Estop if (InputDrivers.drivers.ContainsKey("ESTOP")) { bETOP = InputDrivers.drivers["ESTOP"].GetOn(); if (!bETOP) { if (InputDrivers.drivers["ESTOP"].bPreStatus == true) { MainModule.FormMain.bAuto = false; MainModule.FormMain.bEstop = true; MainModule.FormMain.m_formAlarm.SetEstopAlarm(); MainModule.FormMain.SetEtopStatus(true); foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.SuspendMove(); //itemDriver.Value.JogStop(TableAxisName.ALL); itemDriver.Value.bHomingU = false; itemDriver.Value.bHomingX = false; itemDriver.Value.bHomingY = false; itemDriver.Value.bHomingZ = false; } if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(true); } if (OutputDrivers.drivers.ContainsKey("清洗触发")) { OUTPUT("清洗触发").SetOutBit(false); } if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(true); } //if (UpdateStatusEvent!=null) //{ // UpdateStatusEvent(IOType.ESTOP, bETOP); //} //EStopClickEvent.Invoke(); } } else { if (InputDrivers.drivers["ESTOP"].bPreStatus == false) { MainModule.FormMain.m_formAlarm.RstEstopAlarm(); MainModule.FormMain.SetEtopStatus(false); MainModule.FormMain.bEstop = false; if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(false); } if (UpdateStatusEvent != null) { UpdateStatusEvent(IOType.ESTOP, bETOP); } EStopResetEvent?.Invoke(); if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(false); } } } InputDrivers.drivers["ESTOP"].bPreStatus = bETOP; } #endregion #region 右边急停 if (InputDrivers.drivers.ContainsKey("右边急停")) { bRightETOP = InputDrivers.drivers["右边急停"].GetOn(); if (!bRightETOP) { if (InputDrivers.drivers["右边急停"].bPreStatus == true) { MainModule.FormMain.bAuto = false; MainModule.FormMain.bEstop = true; MainModule.FormMain.m_formAlarm.SetEstopAlarm(); MainModule.FormMain.SetEtopStatus(true); foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.SuspendMove(); //itemDriver.Value.JogStop(TableAxisName.ALL); itemDriver.Value.bHomingU = false; itemDriver.Value.bHomingX = false; itemDriver.Value.bHomingY = false; itemDriver.Value.bHomingZ = false; } if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(true); } if (OutputDrivers.drivers.ContainsKey("清洗触发")) { OUTPUT("清洗触发").SetOutBit(false); } if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(true); } } } else { if (InputDrivers.drivers["右边急停"].bPreStatus == false) { MainModule.FormMain.m_formAlarm.RstEstopAlarm(); MainModule.FormMain.SetEtopStatus(false); MainModule.FormMain.bEstop = false; if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(false); } if (UpdateStatusEvent != null) { UpdateStatusEvent(IOType.ESTOP, bRightETOP); } EStopResetEvent?.Invoke(); if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(false); } } } InputDrivers.drivers["右边急停"].bPreStatus = bRightETOP; } #endregion #region DOOR if (InputDrivers.drivers.ContainsKey("DOOR")) { bDOOR = InputDrivers.drivers["DOOR"].GetOn(); if (!bDOOR) { if (InputDrivers.drivers["DOOR"].bPreStatus == true) { MainModule.FormMain.bAuto = false; MainModule.FormMain.bDoorOpen = true; MainModule.FormMain.m_formAlarm.SetDoorOpenAlarm(); MainModule.FormMain.SetDoorStatus(true); foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.SuspendMove(); //itemDriver.Value.JogStop(TableAxisName.ALL); } if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(true); } UpdateStatusEvent?.Invoke(IOType.DOOR, bDOOR); if (OutputDrivers.drivers.ContainsKey("清洗触发")) { OUTPUT("清洗触发").SetOutBit(false); } if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(true); } //HandlerDoorOpenEvent.Invoke(); } } else { if (InputDrivers.drivers["DOOR"].bPreStatus == false) { MainModule.FormMain.m_formAlarm.RstDoorOpenAlarm(); MainModule.FormMain.bDoorOpen = false; MainModule.FormMain.SetDoorStatus(false); if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(false); } UpdateStatusEvent?.Invoke(IOType.DOOR, bDOOR); foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.ResumeMove(); } if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(false); } //HandlerDoorCloseEvent.Invoke(); } } InputDrivers.drivers["DOOR"].bPreStatus = bDOOR; } #endregion #region Start if (InputDrivers.drivers.ContainsKey("START")) { bSTART = InputDrivers.drivers["START"].GetOn(); if (bSTART) { if (InputDrivers.drivers["START"].bPreStatus == false) { if (OutputDrivers.drivers.ContainsKey("START")) { OUTPUT("START").SetOutBit(true); } FormOperator.StartPushed(); } } else { if (InputDrivers.drivers["START"].bPreStatus == true) { if (OutputDrivers.drivers.ContainsKey("START")) { OUTPUT("START").SetOutBit(false); } } } InputDrivers.drivers["START"].bPreStatus = bSTART; } #endregion #region Stop if (InputDrivers.drivers.ContainsKey("STOP")) { bSTOP = InputDrivers.drivers["STOP"].GetOn(); if (bSTOP) { if (InputDrivers.drivers["STOP"].bPreStatus == false) { MainModule.FormMain.bAuto = false; MainModule.FormMain.bStopPress = true; foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.SuspendMove(); //itemDriver.Value.JogStop(TableAxisName.ALL); } if (OutputDrivers.drivers.ContainsKey("STOP")) { OUTPUT("STOP").SetOutBit(true); } if (OutputDrivers.drivers.ContainsKey("清洗触发")) { OUTPUT("清洗触发").SetOutBit(false); } if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(true); } FormOperator.StopPushed(); } } else { if (InputDrivers.drivers["STOP"].bPreStatus == true) { if (OutputDrivers.drivers.ContainsKey("STOP")) { OUTPUT("STOP").SetOutBit(false); } if (OutputDrivers.drivers.ContainsKey("清洗触发")) { OUTPUT("清洗触发").SetOutBit(false); } foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.ResumeMove(); } if (OutputDrivers.drivers.ContainsKey("打标急停")) { OUTPUT("打标急停").SetOutBit(false); } } } InputDrivers.drivers["STOP"].bPreStatus = bSTOP; } #endregion #region RESET if (InputDrivers.drivers.ContainsKey("RESET")) { bRESET = InputDrivers.drivers["RESET"].GetOn(); if (bRESET) { if (InputDrivers.drivers["RESET"].bPreStatus == false) { MainModule.FormMain.bResetPress = true; MainModule.FormMain.m_formAlarm.RstOtherAlarm(); foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.bHomingU = false; itemDriver.Value.bHomingX = false; itemDriver.Value.bHomingY = false; itemDriver.Value.bHomingZ = false; } if (OutputDrivers.drivers.ContainsKey("RESET")) { OUTPUT("RESET").SetOutBit(true); } ResetClickEvent?.Invoke(); } } else { if (InputDrivers.drivers["RESET"].bPreStatus == true) { if (OutputDrivers.drivers.ContainsKey("清洗触发")) { OUTPUT("清洗触发").SetOutBit(false); } MainModule.FormMain.bResetPress = false; foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.ResumeMove(); } ResetReleaseEvent?.Invoke(); if (OutputDrivers.drivers.ContainsKey("RESET")) { OUTPUT("RESET").SetOutBit(false); } } } InputDrivers.drivers["RESET"].bPreStatus = bRESET; } #endregion #region 激光器准备好 if (InputDrivers.drivers.ContainsKey("激光器准备好")) { bLaserReady = InputDrivers.drivers["激光器准备好"].GetOn(); if (bLaserReady) { if (InputDrivers.drivers["激光器准备好"].bPreStatus == false) { if (OutputDrivers.drivers.ContainsKey("激光器准备好")) { OUTPUT("激光器准备好").SetOutBit(true); } MainModule.FormMain.SetLaserStatus(true); //if (UpdateStatusEvent != null) //{ // UpdateStatusEvent(IOType.LaserReady, bLaserReady); //} } } else { if (InputDrivers.drivers["激光器准备好"].bPreStatus == true) { if (OutputDrivers.drivers.ContainsKey("激光器准备好")) { OUTPUT("激光器准备好").SetOutBit(false); } MainModule.FormMain.SetLaserStatus(false); } } InputDrivers.drivers["激光器准备好"].bPreStatus = bLaserReady; } #endregion #region 气压信号 if (InputDrivers.drivers.ContainsKey("气压信号")) { bAir = InputDrivers.drivers["气压信号"].GetOn(); if (!bAir) { if (InputDrivers.drivers["气压信号"].bPreStatus == true) { MainModule.FormMain.bAuto = false; MainModule.FormMain.m_formAlarm.SetAIRAlarm(); foreach (KeyValuePair <string, TableDriver> itemDriver in TableManage.tableDrivers.drivers) { itemDriver.Value.SuspendMove(); //itemDriver.Value.JogStop(TableAxisName.ALL); itemDriver.Value.bHomingU = false; itemDriver.Value.bHomingX = false; itemDriver.Value.bHomingY = false; itemDriver.Value.bHomingZ = false; } if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(true); } if (OutputDrivers.drivers.ContainsKey("清洗触发")) { OUTPUT("清洗触发").SetOutBit(false); } } } else { if (InputDrivers.drivers["气压信号"].bPreStatus == false) { MainModule.FormMain.m_formAlarm.RstAIRAlarm(); if (OutputDrivers.drivers.ContainsKey("BIZZ")) { OUTPUT("BIZZ").SetOutBit(false); } } } InputDrivers.drivers["气压信号"].bPreStatus = bAir; } #endregion } catch (Exception e) { // Global.logger.ErrorFormat("IO 异常:{0}", e.Message); MessageBox.Show(e.Message, "IO异常", MessageBoxButtons.OK, MessageBoxIcon.Error); } Thread.Sleep(1); } }