Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        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;
                    }
                }
            }
        }