public void Close(bool auto) { if (com != null && com.IsOpen) { ComLogger.Log("com", string.Format("Close {0} [{1}]", com.PortName.ToUpper(), auto ? "CORE" : "USER")); Logger.LogMessage("CloseCom", "Close {0} [{1}]", com.PortName.ToUpper(), auto ? "CORE" : "USER"); try { com.DiscardOutBuffer(); } catch { } try { com.DiscardInBuffer(); } catch { } try { com.Close(); } catch { } try { com.Dispose(); } catch { } } com = null; }
public void Open() { if (!IsOpen) { try { Close(true); } catch { } try { com = new MySerial(); com.DataBits = 8; com.Parity = System.IO.Ports.Parity.None; com.StopBits = System.IO.Ports.StopBits.One; com.Handshake = System.IO.Ports.Handshake.None; com.PortName = mPortName; com.BaudRate = mBaudRate; com.NewLine = "\n"; com.WriteTimeout = 1000; //se si blocca in write com.DtrEnable = Settings.GetObject("HardReset Grbl On Connect", false); com.RtsEnable = Settings.GetObject("HardReset Grbl On Connect", false); if (Settings.GetObject("Firmware Type", Firmware.Grbl) == Firmware.Marlin) { com.DtrEnable = true; } ComLogger.Log("com", string.Format("Open {0} @ {1} baud {2}", com.PortName.ToUpper(), com.BaudRate, GetResetDiagnosticString())); Logger.LogMessage("OpenCom", "Open {0} @ {1} baud {2}", com.PortName.ToUpper(), com.BaudRate, GetResetDiagnosticString()); com.Open(); com.DiscardOutBuffer(); com.DiscardInBuffer(); } catch (System.IO.IOException ioex) { if (char.IsDigit(mPortName[mPortName.Length - 1]) && char.IsDigit(mPortName[mPortName.Length - 2])) //two digits port like COM23 { //FIX https://github.com/arkypita/LaserGRBL/issues/31 try { com.PortName = mPortName.Substring(0, mPortName.Length - 1); //remove last digit and try again ComLogger.Log("com", string.Format("Open {0} @ {1} baud {2}", com.PortName.ToUpper(), com.BaudRate, GetResetDiagnosticString())); Logger.LogMessage("OpenCom", "Retry opening {0} as {1} (issue #31)", mPortName.ToUpper(), com.PortName.ToUpper()); com.Open(); com.DiscardOutBuffer(); com.DiscardInBuffer(); } catch { com = null; throw ioex; //throw the original ex - not the new one! } } else { com = null; } } } }