private static void CallUpdateStatus(string msg) { UpdateStatusEvent?.Invoke(msg); }
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); } }
public void UpdateStatus(string text, params object[] args) { UpdateStatusEvent?.Invoke(string.Format(text, args)); }
public MapViewPanel() { selection = new Selection(screenWidth, screenHeight, selectionCursor); this.BackColor = Color.FromArgb(0, 0, 0, 0); this.ResetSelection(startX, startY); this.MouseDown += delegate(object o, MouseEventArgs mouse) { mouseDownX = mouse.X; mouseDownY = mouse.Y; if (mouse.Button == MouseButtons.Right || mouse.Button == MouseButtons.Middle) { origStartX = startX; origStartY = startY; panning = true; } else if (mouse.Button == MouseButtons.Left) { selectionInProgress = true; selectionStart = new Point(mouse.X / screenWidth + startX, mouse.Y / screenHeight + startY); lastSelection = new Rectangle(selectionStart.X, selectionStart.Y, 1, 1); this.Refresh(); } }; this.MouseUp += delegate { panning = false; if (selectionInProgress) { if (ModifierKeys == Keys.Control) { selection.Remove(lastSelection); } else { if (ModifierKeys != Keys.Shift) { selection.Clear(); } selection.Add(lastSelection); } selectionInProgress = false; this.Refresh(); } }; this.DoubleClick += delegate(object o, EventArgs e) { if (updateScreen == null) { return; } updateScreen(mouseDownX / screenWidth + startX, mouseDownY / screenHeight + startY); DrawMap(); }; this.MouseMove += delegate(object o, MouseEventArgs mouse) { //this.Focus(); if (panning) { int deltaX = mouse.X - mouseDownX; int deltaY = mouse.Y - mouseDownY; startX = origStartX - deltaX / screenWidth; startY = origStartY - deltaY / screenHeight; DrawMap(); } else if (selectionInProgress) { int x = (int)(mouse.X / screenWidth) + startX; int y = (int)(mouse.Y / screenHeight) + startY; lastSelection.X = Math.Min(x, selectionStart.X); lastSelection.Y = Math.Min(y, selectionStart.Y); lastSelection.Width = Math.Abs(x - selectionStart.X) + 1; lastSelection.Height = Math.Abs(y - selectionStart.Y) + 1; this.Refresh(); } int hoverX = startX + mouse.X / screenWidth; int hoverY = startY + mouse.Y / screenHeight; updateStatus?.Invoke(hoverX, hoverY); }; this.MouseWheel += delegate(object o, MouseEventArgs mouse) { int d = mouse.Delta / 120; while (d != 0) { if (d < 0) { if (screenHeight == 10) { break; // Reached minimum zoom level. } screenHeight /= 2; screenWidth /= 2; d++; } else { if (screenHeight == 80) { break; // Reached maximum zoom level. } screenHeight *= 2; screenWidth *= 2; d--; } } // Find the center screen. int centerX = startX + mapWidth / 2; int centerY = startY + mapHeight / 2; mapWidth = this.Width / screenWidth; mapHeight = this.Height / screenHeight; this.CenterScreen(centerX, centerY); selection.ChangeCellSize(screenWidth, screenHeight); DrawGridLines(); }; this.Paint += delegate(object sender, PaintEventArgs e) { if (story == null) { return; } e.Graphics.DrawImage(selection.Borders, new Rectangle( (selection.MinX - startX) * screenWidth, (selection.MinY - startY) * screenHeight, selection.Borders.Width, selection.Borders.Height ), new Rectangle(0, 0, selection.Borders.Width, selection.Borders.Height), GraphicsUnit.Pixel); e.Graphics.DrawRectangle(activeScreenOutline, new Rectangle((story.ActiveScreen.X - startX) * screenWidth, (story.ActiveScreen.Y - startY) * screenHeight, screenWidth - 1, screenHeight - 1)); if (selectionInProgress) { e.Graphics.DrawRectangle(newSelectionCursor, (lastSelection.X - startX) * screenWidth, (lastSelection.Y - startY) * screenHeight, lastSelection.Width * screenWidth - 1, lastSelection.Height * screenHeight - 1); } }; }