private void OpenPort() { Log.Log("Opening port..."); _port.Open(); Log.Log("Port was opened OK"); //_port.ClearRtsControlToggle(); //_port.SetRtsControlToggle(); _port.DiscardInBuffer(); _port.DiscardOutBuffer(); SNetId = RetrieveSNetId(_openingTimeout); Log.Log("SNetId retreived"); }
public void DiscardInBuffer() { using (SerialPortStream serialSource = new SerialPortStream(SourcePort, 115200, 8, Parity.None, StopBits.One)) { serialSource.Open(); serialSource.DiscardInBuffer(); } }
public async Task Disconnect() { await Task.Run(() => { if (IoPort.IsOpen) { State = ConnectionState.Disconnecting; try { //IoPort.DataReceived -= serialPort_DataReceived; IoPort.DiscardInBuffer(); IoPort.DiscardOutBuffer(); IoPort.Close(); Console.Out.WriteLine("Closed serialport."); } catch (Exception) { Console.Out.WriteLine("Failed to close serialport."); } State = ConnectionState.Disconnected; } }); }
public override void CommClrBuff() { try { serial?.DiscardInBuffer(); serial?.DiscardOutBuffer(); } catch (Exception ex) { throw new Bsl430NetException(771, ex); } }
public void Open(string port, int baud) { IsOpen = true; _arduinoPort.PortName = port; _arduinoPort.BaudRate = baud; _arduinoPort.DtrEnable = true; _arduinoPort.ReadTimeout = 1; _arduinoPort.WriteTimeout = 1; _arduinoPort.Open(); _arduinoPort.DiscardInBuffer(); _arduinoPort.DiscardOutBuffer(); _arduinoPort.DataReceived += DataRecieved; }
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 async override Task ConnectAsync() { await _semaphoreSlimConnect.WaitAsync(); // already connected if (Connected) return; serialPort.Open(); // make sure we're in a halfway known state... var dxCommand = new StopDataAcquisitionCommand(); await serialPort.WriteAsync(dxCommand.Command.Select(x => (byte)x).ToArray(), 0, dxCommand.Command.Length); await Task.Delay(100); serialPort.DiscardInBuffer(); await WaitForStabilizedMotorSpeedAsync(TimeSpan.FromSeconds(10), throwOnFail: true); await UpdateDeviceInfoAsync(); _semaphoreSlimConnect.Release(); }
public override async Task Send(string data) { await Task.Run(() => { _serialStream.DiscardInBuffer(); _serialStream.DiscardOutBuffer(); var content = new List <byte>(); content.AddRange(Encoding.ASCII.GetBytes(data)); var buffer = content.ToArray(); _serialStream.Write(buffer, 0, buffer.Length); DataSentObservable.OnNext(data); }); }
public string ExecCommand(string command, int responseTimeout, string errorMessage) { try { port.DiscardOutBuffer(); port.DiscardInBuffer(); receiveNow.Reset(); port.Write(command + "\r"); string input = ReadResponse(responseTimeout); if ((input.Length == 0) || ((!input.EndsWith("\r\n> ")) && (!input.EndsWith("\r\nOK\r\n")))) { throw new ApplicationException("No success message was received."); } return(input); } catch (Exception ex) { Log.Trace(ex.Message, ex.StackTrace, configuration.Verbose); } return(""); }
public SerialPortStream OpenPort(string portName) { SerialPortStream serialPort = null; var retries = 3; while (retries > 0) { try { serialPort = new SerialPortStream(portName, 9600, 8, Parity.None, StopBits.One); serialPort.DiscardInBuffer(); serialPort.DiscardOutBuffer(); serialPort.ReadTimeout = 1000; serialPort.Open(); break; } catch (Exception e) { if (serialPort != null) { if (serialPort.IsOpen) { serialPort.Close(); } serialPort.Dispose(); serialPort = null; } Console.WriteLine("Exception in OpenPort " + e.Message); retries--; } } return(serialPort); }
private bool DeviceAction(Action <SerialPortStream, CancellationToken> action) { CancellationToken token = new CancellationToken(); DateTime start = DateTime.Now; var task = Task.Factory.StartNew(() => { try { if (serialPort == null || !serialPort.IsOpen) { if (serialPort != null && serialPort.IsOpen) { performClose(); } serialPort = new SerialPortStream(this.portName); serialPort.Open(); Start(serialPort); } // discard the input buffer after if (serialPort.ReadBufferSize > 0) { try { serialPort.DiscardInBuffer(); } catch (Exception exp) { logger.Warn(exp, "Failed to clear in buffer for NTI XL2 on port {0}", portName); } } if (serialPort.WriteBufferSize > 0) { try { serialPort.DiscardOutBuffer(); } catch (Exception exp) { logger.Warn(exp, "Failed to clear in buffer for NTI XL2 on port {0}", portName); } } action(serialPort, token); OnConnectionStatus(true); } catch (Exception exp) { OnConnectionStatus(false); logger.Error(exp, "Failed to execute NTI XL2 action on port {0}.", portName); performClose(); return(false); } return(true); }, token); if (!task.Wait(this.TimeToTimeOut, token)) { timeouts++; logger.Error("NTI XL2 device communication timed out after {0} ms.", (DateTime.Now - start).TotalMilliseconds); OnConnectionStatus(false); token = new CancellationToken(); if (timeouts >= 2) { timeouts = 0; var closeTask = Task.Factory.StartNew(() => { performClose(true); }, token); if (!closeTask.Wait(this.TimeToTimeOut, token)) { logger.Trace("Time out trying to close the connection after a time out."); } } return(false); } return(task.Result); }
public void ClearInputBuffer() { myserial.DiscardInBuffer(); }
public void Open() { if (!IsOpen) { try { Close(true); } catch { } try { com = new SerialPortStream(); com.PortName = mPortName; com.BaudRate = mBaudRate; com.DataBits = 8; com.Parity = Parity.None; com.StopBits = StopBits.One; com.Handshake = Handshake.None; 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; } } } }
protected override Task <MBusFrame> ReadFrame() { _stream.DiscardInBuffer(); return(ReadFrameInternal()); }