/*************************************************************** * 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; }
/*************************************************************** * 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; }