Пример #1
0
/***************************************************************
* handle status events from serial form
* {idle, run, hold, home, alarm, check, door}
* only action on status change
***************************************************************/
        private void processStatus(string msg)
        {
            string lblInfo      = "";
            Color  lblInfoColor = Color.Black;

            if (logPosEvent)
            {
                Logger.Trace("processStatus  Status:{0}", machineStatus.ToString());
            }
            if ((machineStatus != lastMachineStatus) || (grbl.lastMessage.Length > 5))
            {
                // label at DRO
                if (label_status.InvokeRequired)
                {
                    label_status.BeginInvoke((MethodInvoker) delegate() { label_status.Text = grbl.statusToText(machineStatus); });
                }
                else
                {
                    label_status.Text = grbl.statusToText(machineStatus);
                }
                label_status.BackColor = grbl.grblStateColor(machineStatus);

                switch (machineStatus)
                {
                case grblState.idle:
                    if ((lastMachineStatus == grblState.hold) || (lastMachineStatus == grblState.alarm))
                    {
                        statusStripClear(1, 2, "grblState.idle");
                        setInfoLabel(lastInfoText, SystemColors.Control);

                        if (!_serial_form.checkGRBLSettingsOk())       // check 30 kHz limit
                        {
                            statusStripSet(1, grbl.lastMessage, Color.Fuchsia);
                            statusStripSet(2, Localization.getString("statusStripeCheckCOM"), Color.Yellow);
                        }
                    }
                    signalResume        = 0;
                    btnResume.BackColor = SystemColors.Control;
                    cBTool.Checked      = _serial_form.toolInSpindle;
                    if (signalLock > 0)
                    {
                        btnKillAlarm.BackColor = SystemColors.Control; signalLock = 0;
                    }
                    if (!isStreaming)                           // update drawing if G91 is used
                    {
                        updateDrawingPath = true;
                    }
                    statusStripClear(1, 2, "grblState.idle2");
                    grbl.lastMessage = "";
                    break;

                case grblState.run:
                    if (lastMachineStatus == grblState.hold)
                    {
                        //           statusStripClear();
                        setInfoLabel(lastInfoText, SystemColors.Control);
                    }
                    signalResume        = 0;
                    btnResume.BackColor = SystemColors.Control;
                    break;

                case grblState.hold:
                    btnResume.BackColor = Color.Yellow;
                    lastInfoText        = lbInfo.Text;
                    lblInfo             = Localization.getString("mainInfoResume"); //"Press 'Resume' to proceed";

                    if (grbl.lastErrorNr > 0)
                    {
                        lblInfoColor = Color.Fuchsia;
                    }
                    else
                    {
                        lblInfoColor = Color.Yellow;
                    }

                    setInfoLabel(lblInfo, lblInfoColor);
                    //       statusStripClear();
                    statusStripSet(1, grbl.statusToText(machineStatus), grbl.grblStateColor(machineStatus));
                    statusStripSet(2, lblInfo, lblInfoColor);
                    if (signalResume == 0)
                    {
                        signalResume = 1;
                    }
                    break;

                case grblState.home:
                    break;

                case grblState.alarm:
                    signalLock             = 1;
                    btnKillAlarm.BackColor = Color.Yellow;
                    lblInfo = Localization.getString("mainInfoKill");         //"Press 'Kill Alarm' to proceed";
                    setInfoLabel(lblInfo, Color.Yellow);

                    statusStripSet(1, grbl.statusToText(machineStatus) + " " + grbl.lastMessage, grbl.grblStateColor(machineStatus));
                    statusStripSet(2, lblInfo, Color.Yellow);
                    grbl.lastMessage = "";
                    if (_heightmap_form != null)
                    {
                        _heightmap_form.stopScan();
                    }
                    break;

                case grblState.check:
                    break;

                case grblState.door:
                    btnResume.BackColor = Color.Yellow;
                    lastInfoText        = lbInfo.Text;
                    lblInfo             = Localization.getString("mainInfoResume"); //"Press 'Resume' to proceed";
                    setInfoLabel(lblInfo, Color.Yellow);

                    statusStripSet(1, grbl.statusToText(machineStatus), grbl.grblStateColor(machineStatus));
                    statusStripSet(2, lblInfo, Color.Yellow);
                    if (signalResume == 0)
                    {
                        signalResume = 1;
                    }
                    break;

                case grblState.probe:
                    posProbe = _serial_form.posProbe;
                    if (_diyControlPad != null)
                    {
                        if (alternateZ != null)
                        {
                            posProbe.Z = (double)alternateZ;
                        }
                        //_diyControlPad.sendFeedback("Probe: "+posProbe.Z.ToString());
                    }
                    if (_heightmap_form != null)
                    {
                        _heightmap_form.setPosProbe = posProbe;
                    }

                    if (_probing_form != null)
                    {
                        Logger.Info("Update Probing {0}", grbl.displayCoord("PRB"));
                        _probing_form.setPosProbe = grbl.getCoord("PRB");
                    }

                    lastInfoText = lbInfo.Text;
                    setInfoLabel(string.Format("{0}: X:{1:0.00} Y:{2:0.00} Z:{3:0.00}", Localization.getString("mainInfoProbing"), posProbe.X, posProbe.Y, posProbe.Z), Color.Yellow);
                    break;

                case grblState.unknown:
                    //      timerUpdateControlSource = "grblState.unknown";
                    //      updateControls();
                    break;

                case grblState.notConnected:
                    setInfoLabel("No connection", Color.Fuchsia);
                    statusStripSet(1, "No connection", Color.Fuchsia);
                    statusStripSet(2, msg, Color.Fuchsia);
                    break;

                default:
                    break;
                }
                if (_probing_form != null)
                {
                    _probing_form.setGrblSaState = machineStatus;
                }
            }
            lastMachineStatus = machineStatus;
        }
Пример #2
0
/***************************************************************
* handle status events from serial form
* {idle, run, hold, home, alarm, check, door}
* only action on status change
***************************************************************/
        private void processStatus()
        {
            if (logPosEvent)
            {
                Logger.Trace("processStatus  Status:{0}", machineStatus.ToString());
            }
            if ((machineStatus != lastMachineStatus) || (grbl.lastMessage.Length > 5))
            {
                // label at DRO
                label_status.Text      = grbl.statusToText(machineStatus);
                label_status.BackColor = grbl.grblStateColor(machineStatus);
                switch (machineStatus)
                {
                case grblState.idle:
                    if ((lastMachineStatus == grblState.hold) || (lastMachineStatus == grblState.alarm))
                    {
                        statusStripClear(1, 2);
                        lbInfo.Text      = lastInfoText;
                        lbInfo.BackColor = SystemColors.Control;
                        if (!_serial_form.checkGRBLSettingsOk())       // check 30 kHz limit
                        {
                            statusStripSet(1, grbl.lastMessage, Color.Fuchsia);
                            statusStripSet(2, Localization.getString("statusStripeCheckCOM"), Color.Yellow);
                        }
                    }
                    signalResume        = 0;
                    btnResume.BackColor = SystemColors.Control;
                    cBTool.Checked      = _serial_form.toolInSpindle;
                    if (signalLock > 0)
                    {
                        btnKillAlarm.BackColor = SystemColors.Control; signalLock = 0;
                    }
                    if (!isStreaming)                           // update drawing if G91 is used
                    {
                        updateDrawingPath = true;
                    }
                    //                      statusStripClear(1,2);
                    grbl.lastMessage = "";
                    break;

                case grblState.run:
                    if (lastMachineStatus == grblState.hold)
                    {
                        statusStripClear();
                        lbInfo.Text      = lastInfoText;
                        lbInfo.BackColor = SystemColors.Control;
                    }
                    signalResume        = 0;
                    btnResume.BackColor = SystemColors.Control;
                    break;

                case grblState.hold:
                    btnResume.BackColor = Color.Yellow;
                    lastInfoText        = lbInfo.Text;
                    lbInfo.Text         = Localization.getString("mainInfoResume"); //"Press 'Resume' to proceed";
                    lbInfo.BackColor    = Color.Yellow;
                    statusStripClear();
                    statusStripSet(1, grbl.statusToText(machineStatus), grbl.grblStateColor(machineStatus));
                    statusStripSet(2, lbInfo.Text, lbInfo.BackColor);
                    if (signalResume == 0)
                    {
                        signalResume = 1;
                    }
                    break;

                case grblState.home:
                    break;

                case grblState.alarm:
                    signalLock             = 1;
                    btnKillAlarm.BackColor = Color.Yellow;
                    lbInfo.Text            = Localization.getString("mainInfoKill"); //"Press 'Kill Alarm' to proceed";
                    lbInfo.BackColor       = Color.Yellow;
                    //                  statusStripClear(1,2);
                    statusStripSet(1, grbl.statusToText(machineStatus) + " " + grbl.lastMessage, grbl.grblStateColor(machineStatus));
                    statusStripSet(2, lbInfo.Text, lbInfo.BackColor);
                    grbl.lastMessage = "";
                    if (_heightmap_form != null)
                    {
                        _heightmap_form.stopScan();
                    }
                    break;

                case grblState.check:
                    break;

                case grblState.door:
                    btnResume.BackColor = Color.Yellow;
                    lastInfoText        = lbInfo.Text;
                    lbInfo.Text         = Localization.getString("mainInfoResume"); //"Press 'Resume' to proceed";
                    lbInfo.BackColor    = Color.Yellow;
                    //                statusStripClear(1,2);
                    statusStripSet(1, grbl.statusToText(machineStatus), grbl.grblStateColor(machineStatus));
                    statusStripSet(2, lbInfo.Text, lbInfo.BackColor);
                    if (signalResume == 0)
                    {
                        signalResume = 1;
                    }
                    break;

                case grblState.probe:
                    posProbe = _serial_form.posProbe;
                    if (_diyControlPad != null)
                    {
                        if (alternateZ != null)
                        {
                            posProbe.Z = (double)alternateZ;
                        }
                        //_diyControlPad.sendFeedback("Probe: "+posProbe.Z.ToString());
                    }
                    if (_heightmap_form != null)
                    {
                        _heightmap_form.setPosProbe = posProbe;
                    }

                    if (_probing_form != null)
                    {
                        Logger.Info("Update Probing {0}", grbl.displayCoord("PRB"));
                        _probing_form.setPosProbe = grbl.getCoord("PRB");
                    }

                    lastInfoText     = lbInfo.Text;
                    lbInfo.Text      = string.Format("{0}: X:{1:0.00} Y:{2:0.00} Z:{3:0.00}", Localization.getString("mainInfoProbing"), posProbe.X, posProbe.Y, posProbe.Z);
                    lbInfo.BackColor = Color.Yellow;
                    break;

                case grblState.unknown:
                    timerUpdateControlSource = "grblState.unknown";
                    updateControls();
//                        if (Properties.Settings.Default.serialMinimize && _serial_form.serialPortOpen)
//                            _serial_form.WindowState = FormWindowState.Minimized;
                    break;

                default:
                    break;
                }
                if (_probing_form != null)
                {
                    _probing_form.setGrblSaState = machineStatus;
                }
            }
            lastMachineStatus = machineStatus;
        }