private static void CallUpdateStatus(string msg)
 {
     UpdateStatusEvent?.Invoke(msg);
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
 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);
                }
            };
        }