static public void Scan(bool connect = false) { foundport = false; portinterface = null; lock (runlock) { run = 0; running = 0; } CommsSerialScan.connect = connect; List<MAVLinkInterface> scanports = new List<MAVLinkInterface>(); string[] portlist = SerialPort.GetPortNames(); foreach (string port in portlist) { scanports.Add(new MAVLinkInterface() { BaseStream = new SerialPort() { PortName = port, BaudRate = bauds[0] } }); } foreach (MAVLinkInterface inter in scanports) { System.Threading.ThreadPool.QueueUserWorkItem(doread, inter); } }
public string doCommand(ICommsSerial comPort, string cmd, bool multiLineResponce = false, int level = 0) { if (!comPort.IsOpen) { return(""); } comPort.DiscardInBuffer(); comLog("Doing Command " + cmd, 1); comPort.Write(cmd + "\r\n"); comPort.ReadTimeout = 1000; // command echo var cmdecho = Serial_ReadLine(comPort); if (cmdecho.Contains(cmd)) { var value = ""; if (multiLineResponce) { DateTime deadline = DateTime.Now.AddMilliseconds(1000); while (comPort.BytesToRead > 0 || DateTime.Now < deadline) { try { value = value + trimResponse(Serial_ReadLine(comPort)); } catch { value = value + trimResponse(comPort.ReadExisting()); } } } else { value = trimResponse(Serial_ReadLine(comPort)); if (value == "" && level == 0) { return(trimResponse(doCommand(comPort, cmd, multiLineResponce, 1))); } } char[] ends = { '\r', '\n' }; comLog(value.TrimEnd(ends), 1); History.AppendText(cmd.Trim() + " " + value.TrimEnd(ends) + Environment.NewLine); return(value); } comPort.DiscardInBuffer(); // try again if (level == 0) { return(trimResponse(doCommand(comPort, cmd, multiLineResponce, 1))); } return(""); }
static public void Scan(bool connect = false) { foundport = false; portinterface = null; lock (runlock) { run = 0; running = 0; } CommsSerialScan.connect = connect; List <MAVLinkInterface> scanports = new List <MAVLinkInterface>(); string[] portlist = SerialPort.GetPortNames(); foreach (string port in portlist) { scanports.Add(new MAVLinkInterface() { BaseStream = new SerialPort() { PortName = port, BaudRate = bauds[0] } }); } foreach (MAVLinkInterface inter in scanports) { System.Threading.ThreadPool.QueueUserWorkItem(doread, inter); } }
public string doCommand(ICommsSerial comPort, string cmd, int level = 0) { if (!comPort.IsOpen) return ""; comPort.ReadTimeout = 1000; // setup to known state comPort.Write("\r\n"); // alow some time to gather thoughts Sleep(100); // ignore all existing data comPort.DiscardInBuffer(); lbl_status.Text = "Doing Command " + cmd; log.Info("Doing Command " + cmd); // write command comPort.Write(cmd + "\r\n"); // read echoed line or existing data string temp; try { temp = Serial_ReadLine(comPort); } catch { temp = comPort.ReadExisting(); } log.Info("cmd " + cmd + " echo " + temp); // delay for command Sleep(500); // get responce string ans = ""; while (comPort.BytesToRead > 0) { try { ans = ans + Serial_ReadLine(comPort) + "\n"; } catch { ans = ans + comPort.ReadExisting() + "\n"; } Sleep(50); if (ans.Length > 500) { break; } } log.Info("responce " + level + " " + ans.Replace('\0', ' ')); Regex pattern = new Regex(@"^\[([0-9+])\]\s+",RegexOptions.Multiline); if (pattern.IsMatch(ans)) { Match mat = pattern.Match(ans); ans = pattern.Replace(ans,""); } // try again if (ans == "" && level == 0) return doCommand(comPort, cmd, 1); return ans; }
public Uploader(ICommsSerial port) { self = this; this.port = port; this.port.ReadTimeout = 50; this.port.WriteTimeout = 50; try { this.port.Open(); } catch (Exception ex) { try { this.port.Close(); } catch { } try { this.Dispose(); GC.Collect(); } catch { } throw ex; } }
public string doCommand(ICommsSerial comPort, string cmd, bool multiLineResponce = false, int level = 0) { if (!comPort.IsOpen) { return(""); } comPort.DiscardInBuffer(); lbl_status.Text = "Doing Command " + cmd; log.Info("Doing Command " + cmd); comPort.Write(cmd + "\r\n"); comPort.ReadTimeout = 1000; // command echo var cmdecho = Serial_ReadLine(comPort); if (cmdecho.Contains(cmd)) { var value = ""; if (multiLineResponce) { DateTime deadline = DateTime.Now.AddMilliseconds(1000); while (comPort.BytesToRead > 0 || DateTime.Now < deadline) { try { value = value + Serial_ReadLine(comPort); } catch { value = value + comPort.ReadExisting(); } } } else { value = Serial_ReadLine(comPort); if (value == "" && level == 0) { return(doCommand(comPort, cmd, multiLineResponce, 1)); } } log.Info(value.Replace('\0', ' ')); return(value); } comPort.DiscardInBuffer(); // try again if (level == 0) { return(doCommand(comPort, cmd, multiLineResponce, 1)); } return(""); }
public Uploader(ICommsSerial port) { self = this; this.port = port; this.port.ReadTimeout = 50; this.port.WriteTimeout = 50; try { Console.Write("open"); this.port.Open(); this.port.Write("reboot -b\r"); Console.WriteLine("..done"); } catch (Exception ex) { try { this.port.Close(); } catch { } try { this.Dispose(); GC.Collect(); } catch { } throw ex; } }
void getTelemPortWithRadio(ref ICommsSerial comPort) { // try telem1 comPort = new MAVLinkSerialPort(MainV2.comPort, (int)MAVLink.SERIAL_CONTROL_DEV.TELEM1); comPort.ReadTimeout = 4000; comPort.Open(); if (doConnect(comPort)) { return; } comPort.Close(); // try telem2 comPort = new MAVLinkSerialPort(MainV2.comPort, (int)MAVLink.SERIAL_CONTROL_DEV.TELEM2); comPort.ReadTimeout = 4000; comPort.Open(); if (doConnect(comPort)) { return; } comPort.Close(); }
public void SetupBasePos(ICommsSerial port, PointLatLngAlt basepos, int surveyindur = 0, double surveyinacc = 0, bool disable = false) { System.Threading.Thread.Sleep(100); System.Threading.Thread.Sleep(100); if (surveyindur == 0) { surveyindur = 60; } if (surveyinacc == 0) { surveyinacc = 2; } if (disable) { var packet = generate(0x6, 0x71, ubx_cfg_tmode3.Disable); port.Write(packet, 0, packet.Length); return; } if (basepos == PointLatLngAlt.Zero) { // survey in config var packet = generate(0x6, 0x71, new ubx_cfg_tmode3((uint)surveyindur, surveyinacc)); port.Write(packet, 0, packet.Length); } else { byte[] data = new ubx_cfg_tmode3(basepos.Lat, basepos.Lng, basepos.Alt); var packet = generate(0x6, 0x71, data); port.Write(packet, 0, packet.Length); } }
private void Log_Load(object sender, EventArgs e) { status = serialstatus.Connecting; comPort = MainV2.comPort.BaseStream; //comPort.ReceivedBytesThreshold = 50; //comPort.ReadBufferSize = 1024 * 1024; try { comPort.toggleDTR(); //comPort.Open(); } catch (Exception) { MessageBox.Show("Error opening comport"); } System.Threading.Thread t11 = new System.Threading.Thread(delegate() { DateTime start = DateTime.Now; threadrun = true; System.Threading.Thread.Sleep(2000); try { comPort.Write("\n\n\n\n"); } catch { } while (threadrun) { try { updateDisplay(); System.Threading.Thread.Sleep(10); if (!comPort.IsOpen) { break; } while (comPort.BytesToRead >= 4) { comPort_DataReceived((object)null, (SerialDataReceivedEventArgs)null); } } catch (Exception ex) { Console.WriteLine("crash in comport reader " + ex.ToString()); } // cant exit unless told to } Console.WriteLine("Comport thread close"); }); t11.Name = "comport reader"; t11.Start(); MainV2.threads.Add(t11); // doesnt seem to work on mac //comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); }
bool upload_xmodem(ICommsSerial comPort) { // try xmodem mode // xmodem - short cts to ground try { uploader_LogEvent("Trying XModem Mode"); //comPort.BaudRate = 57600; comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; comPort.ReadTimeout = 1000; Thread.Sleep(2000); var tempd = comPort.ReadExisting(); Console.WriteLine(tempd); comPort.Write("U"); Thread.Sleep(1000); var resp1 = Serial_ReadLine(comPort); // echo var resp2 = Serial_ReadLine(comPort); // echo 2 var tempd2 = comPort.ReadExisting(); // posibly bootloader info / use to sync // identify comPort.Write("i"); // responce is rfd900.... var resp3 = Serial_ReadLine(comPort); //echo var resp4 = Serial_ReadLine(comPort); // newline var resp5 = Serial_ReadLine(comPort); // bootloader info uploader_LogEvent(resp5); if (resp5.Contains("RFD900")) { // start upload comPort.Write("u"); var resp6 = Serial_ReadLine(comPort); // echo var resp7 = Serial_ReadLine(comPort); // Ready if (resp7.Contains("Ready")) { comPort.ReadTimeout = 3500; // responce is C var isC = comPort.ReadByte(); var temp = comPort.ReadExisting(); if (isC == 'C') { XModem.LogEvent += uploader_LogEvent; XModem.ProgressEvent += uploader_ProgressEvent; // start file send XModem.Upload(@"SiK900x.bin", comPort); XModem.LogEvent -= uploader_LogEvent; XModem.ProgressEvent -= uploader_ProgressEvent; return(true); } } } } catch (Exception ex2) { log.Error(ex2); } return(false); }
public void turnon_off(ICommsSerial port, byte clas, byte subclass, byte every_xsamples) { byte[] datastruct1 = { clas, subclass, 0, every_xsamples, 0, every_xsamples, 0, 0 }; var packet = generate(0x6, 0x1, datastruct1); port.Write(packet, 0, packet.Length); }
public static (string status, string reply, TimeSpan elapsed) AT(ICommsSerial port, string cmd = "AT", double timeout = 10, string success = "OK", string failure = "+CME ERROR") { // clear the buffer Console.WriteLine("Existing: " + port.ReadExisting()); port.Write(cmd + "\r\n"); Console.WriteLine("TX: " + cmd); DateTime start = DateTime.Now; var reply = ""; var echo = false; while (true) { if (port.BytesToRead > 0) { var line = ""; try { line = port.ReadLine(); } catch { line = port.ReadExisting(); } Console.WriteLine(line); if (!echo) { echo = line.EndsWith(cmd); } if (line != "\r\n" && !echo) // blank line or echo'd command { reply += "\t" + line.TrimEnd(); if (line.StartsWith(success)) { Console.WriteLine("RX: Success"); Thread.Sleep(50); return("Success", reply, DateTime.Now - start); } if (line.StartsWith(failure)) { Console.WriteLine("RX: Error"); Thread.Sleep(50); return("Error", reply, DateTime.Now - start); } } } if ((DateTime.Now - start).TotalSeconds > timeout) { Console.WriteLine("RX: Timeout"); return("Timeout", reply, DateTime.Now - start); } Thread.Sleep(20); } }
void getTelemPortWithRadio(ref ICommsSerial comPort) { // try telem1 comPort = new MAVLinkSerialPort(MainV2.comPort, (int)MAVLink.SERIAL_CONTROL_DEV.TELEM1); comPort.ReadTimeout = 4000; comPort.Open(); }
public void poll_msg(ICommsSerial port, byte clas, byte subclass) { byte[] datastruct1 = { }; var packet = generate(clas, subclass, datastruct1); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(10); }
void setcomport() { if (comPort == null) { comPort = new MissionPlanner.Comms.SerialPort(); comPort.PortName = MainV2.comPortName; comPort.BaudRate = int.Parse(MainV2._connectionControl.CMB_baudrate.Text); comPort.ReadBufferSize = 1024 * 1024 * 4; } }
void setcomport() { if (comPort == null) { comPort = new MissionPlanner.Comms.SerialPort(); comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; comPort.PortName = MainV2.comPortName; comPort.ReadBufferSize = 1024 * 1024 * 4; } }
public static void Upload(string firmwarebin, ICommsSerial comPort) { comPort.ReadTimeout = 2000; using (var fs = new FileStream(firmwarebin, FileMode.Open)) { var len = (int)fs.Length; len = (len % 128) == 0 ? len / 128 : (len / 128) + 1; var startlen = len; int a = 1; int NoAckCount = 0; while (len > 0) { LogEvent?.Invoke("Uploading block " + a + "/" + startlen); SendBlock(fs, comPort, a); // responce ACK var ack = comPort.ReadByte(); while (ack == 'C') { ack = comPort.ReadByte(); } if (ack == ACK) { NoAckCount = 0; len--; a++; ProgressEvent?.Invoke(1 - ((double)len / (double)startlen)); } else if (ack == NAK) { MsgBox.CustomMessageBox.Show("Corrupted packet. Please power cycle and try again.\r\n", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); len = 0; } else { NoAckCount++; if (NoAckCount >= 10) { } } } } // boot Thread.Sleep(100); comPort.Write("\r\n"); Thread.Sleep(100); comPort.Write("BOOTNEW\r\n"); Thread.Sleep(100); }
static public void Scan(bool connect = false, bool scan_wifi = false) { foundport = false; portinterface = null; lock (runlock) { run = 0; running = 0; } CommsSerialScan.connect = connect; List <MAVLinkInterface> scanports = new List <MAVLinkInterface>(); string[] portlist = SerialPort.GetPortNames(); foreach (string port in portlist) { scanports.Add(new MAVLinkInterface() { BaseStream = new SerialPort() { PortName = port, BaudRate = bauds[0] } }); } // AB ZhaoYJ@2017-02-23 for auto-conn FC // add UDP to autoscan list // AB ZhaoYJ@2017-04-18 for auto-conn FC // add TCP to autoscan list // ========= start ========= if (scan_wifi) { scanports.Add(new MAVLinkInterface() { BaseStream = new TcpSerial() }); } // string pname = scanports[2].BaseStream.PortName; // ========= end ========= foreach (MAVLinkInterface inter in scanports) { if (!foundport) { System.Threading.ThreadPool.QueueUserWorkItem(doread, inter); } else { break; } } }
static ConfigSerialInjectGPS() { try { comPort = new SerialPort(); } catch { comPort = new TcpSerial(); } }
void background_DoOpen(object state) { if (CoTStream == null) { return; } try { CoTStream.Open(); } catch { CoTStream = null; } // don't care if we crash }
public void SetupBasePos(ICommsSerial port, PointLatLngAlt basepos, int surveyindur = 0, double surveyinacc = 0, bool disable = false, bool movingbase = false) { if (movingbase) { disable = true; } System.Threading.Thread.Sleep(100); System.Threading.Thread.Sleep(100); if (surveyindur == 0) { surveyindur = 60; } if (surveyinacc == 0) { surveyinacc = 2; } if (disable) { // disable var packet = generate(0x6, 0x71, ubx_cfg_tmode3.Disable); port.Write(packet, 0, packet.Length); // save - bbr packet = generate(0x06, 0x09, new uint8_t[] { 0, 0, 0, 0, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0x01 }); port.Write(packet, 0, packet.Length); Thread.Sleep(1000); //reboot packet = generate(0x06, 0x04, new uint8_t[] { 0x14, 0xff, 0, 0 }); port.Write(packet, 0, packet.Length); Thread.Sleep(3000); return; } if (basepos == PointLatLngAlt.Zero) { // survey in config var packet = generate(0x6, 0x71, new ubx_cfg_tmode3((uint)surveyindur, surveyinacc)); port.Write(packet, 0, packet.Length); } else { byte[] data = new ubx_cfg_tmode3(basepos.Lat, basepos.Lng, basepos.Alt); var packet = generate(0x6, 0x71, data); port.Write(packet, 0, packet.Length); } }
public bool doConnect(ICommsSerial comPort) { try { Console.WriteLine("doConnect"); // setup a known enviroment comPort.Write("ATO\r\n"); // wait Sleep(1100, comPort); comPort.DiscardInBuffer(); // send config string comPort.Write("+++"); Sleep(1100, comPort); // check for config response "OK" log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); // allow time for data/response byte[] buffer = new byte[20]; int len = comPort.Read(buffer, 0, buffer.Length); string conn = ASCIIEncoding.ASCII.GetString(buffer, 0, len); log.Info("Connect first response " + conn.Replace('\0', ' ') + " " + conn.Length); if (conn.Contains("OK")) { //return true; } else { // cleanup incase we are already in cmd mode comPort.Write("\r\n"); } doCommand(comPort, "AT&T"); string version = doCommand(comPort, "ATI"); log.Info("Connect Version: " + version.Trim() + "\n"); Regex regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)"); if (regex.IsMatch(version)) { return(true); } return(false); } catch { return(false); } }
public void Dispose() { try { this.port.Close(); } catch { } try { this.port.Dispose(); } catch { } this.port = null; }
/// <summary> /// Upload the specified image_data. /// </summary> /// <param name='image_data'> /// Image_data to be uploaded. /// </param> public void upload (ICommsSerial on_port, IHex image_data, bool use_mavlink = false) { progress (0); port = on_port; try { connect_and_sync(); upload_and_verify (image_data); cmdReboot (); } catch { if (port.IsOpen) port.Close (); throw; } }
public static void Upload(string firmwarebin, ICommsSerial comPort) { var fs = new FileStream(firmwarebin, FileMode.Open); var len = (int)fs.Length; len = (len % 128) == 0 ? len / 128 : (len / 128) + 1; var startlen = len; int a = 1; while (len > 0) { if (LogEvent != null) { LogEvent("Uploading block " + a + "/" + startlen); } XModem.SendBlock(fs, comPort, a); // responce ACK var ack = comPort.ReadByte(); while (ack == 'C') { ack = comPort.ReadByte(); } if (ack == ACK) { len--; a++; if (ProgressEvent != null) { ProgressEvent(len / startlen); } } else if (ack == NAK) { CustomMessageBox.Show("Corrupted packet. Please power cycle and try again.\r\n", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); len = 0; } } // boot comPort.Write("b"); }
private void Sleep(int mstimeout, ICommsSerial comPort = null) { var endtime = DateTime.Now.AddMilliseconds(mstimeout); while (DateTime.Now < endtime) { Thread.Sleep(1); Application.DoEvents(); // prime the mavlinkserial loop with data. if (comPort != null) { var test = comPort.BytesToRead; test++; } } }
private void setcomport() { if (comPort == null) { try { comPort = new SerialPort(); comPort.PortName = MainV2.comPortName; comPort.BaudRate = int.Parse(MainV2._connectionControl.CMB_baudrate.Text); comPort.ReadBufferSize = 1024 * 1024 * 4; } catch { CustomMessageBox.Show(Strings.InvalidBaudRate, Strings.ERROR); } } }
public bool doConnect(ICommsSerial comPort) { try { // clear buffer comPort.DiscardInBuffer(); // setup a known enviroment comPort.Write("\r\n"); // wait Sleep(1100); // send config string comPort.Write("+++"); // wait Sleep(1100); // check for config responce "OK" log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); string conn = comPort.ReadExisting(); log.Info("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length); if (conn.Contains("OK")) { //return true; } else { // cleanup incase we are already in cmd mode comPort.Write("\r\n"); } doCommand(comPort, "AT&T"); string version = doCommand(comPort, "ATI"); log.Info("Connect Version: " + version.Trim() + "\n"); Regex regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)"); if (regex.IsMatch(version)) { return(true); } return(false); } catch { return(false); } }
/// <summary> /// Upload the specified image_data. /// </summary> /// <param name='image_data'> /// Image_data to be uploaded. /// </param> public void upload(ICommsSerial on_port, IHex image_data, bool use_mavlink = false) { progress(0); port = on_port; try { connect_and_sync(); upload_and_verify(image_data); cmdReboot(); } catch { if (port.IsOpen) { port.Close(); } throw; } }
static public void Scan(bool connect = false) { foundport = false; portinterface = null; lock (runlock) { run = 1; running = 0; } CommsSerialScan.connect = connect; string[] portlist = SerialPort.GetPortNames(); foreach (var portname in portlist) { new Thread(o => { doread(portname.Clone()); }).Start(); } }
string Serial_ReadLine(ICommsSerial comPort) { StringBuilder sb = new StringBuilder(); DateTime Deadline = DateTime.Now.AddMilliseconds(comPort.ReadTimeout); while (DateTime.Now < Deadline) { if (comPort.BytesToRead > 0) { byte data = (byte)comPort.ReadByte(); sb.Append((char)data); if (data == '\n') break; } } return sb.ToString(); }
public static void Upload(string firmwarebin, ICommsSerial comPort) { using (var fs = new FileStream(firmwarebin, FileMode.Open)) { var len = (int)fs.Length; len = (len % 128) == 0 ? len / 128 : (len / 128) + 1; var startlen = len; int a = 1; while (len > 0) { if (LogEvent != null) LogEvent("Uploading block " + a + "/" + startlen); SendBlock(fs, comPort, a); // responce ACK var ack = comPort.ReadByte(); while (ack == 'C') ack = comPort.ReadByte(); if (ack == ACK) { len--; a++; if (ProgressEvent != null) ProgressEvent(len / startlen); } else if (ack == NAK) { CustomMessageBox.Show("Corrupted packet. Please power cycle and try again.\r\n", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); len = 0; } } } // boot comPort.Write("b"); }
public static void SendBlock(FileStream fs, ICommsSerial Serial, int bNumber) { byte[] packet = new byte[133]; byte[] bits = new byte[128]; UInt16 CRC = 0; for (int i = 0; i < bits.Length; i++) { bits[i] = 0x26; } packet[0] = SOH; packet[1] = (byte)(bNumber % 256); packet[2] = (byte)(255 - (bNumber % 256)); var bytesRead = fs.Read(bits, 0, bits.Length); if (bytesRead == bits.Length) { CRC = CRC_calc(bits, 128); System.Buffer.BlockCopy(bits, 0, packet, 3, 128); packet[131] = (byte)(CRC >> 8); packet[132] = (byte)(CRC); Serial.Write(packet, 0, packet.Length); } else if (bytesRead > 0) { CRC = CRC_calc(bits, 128); System.Buffer.BlockCopy(bits, 0, packet, 3, 128); packet[131] = (byte)(CRC >> 8); packet[132] = (byte)(CRC); Serial.Write(packet, 0, packet.Length); Serial.Write("" + EOT); CustomMessageBox.Show("Firmware upgraded successfully.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (bytesRead == 0) { Serial.Write("" + EOT); CustomMessageBox.Show("Firmware upgraded successfully.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void Log_Load(object sender, EventArgs e) { status = serialstatus.Connecting; comPort = GCSViews.Terminal.comPort; try { Console.WriteLine("Log_load " + comPort.IsOpen); if (!comPort.IsOpen) comPort.Open(); //Console.WriteLine("Log dtr"); //comPort.toggleDTR(); Console.WriteLine("Log discard"); comPort.DiscardInBuffer(); Console.WriteLine("Log w&sleep"); try { // try provoke a response comPort.Write("\n\n?\r\n\n"); } catch { } // 10 sec waitandsleep(10000); } catch (Exception ex) { log.Error("Error opening comport", ex); CustomMessageBox.Show("Error opening comport"); return; } var t11 = new System.Threading.Thread(delegate() { var start = DateTime.Now; threadrun = true; if (comPort.IsOpen) readandsleep(100); try { if (comPort.IsOpen) comPort.Write("\n\n\n\nexit\r\nlogs\r\n"); // more in "connecting" } catch { } while (threadrun) { try { updateDisplay(); System.Threading.Thread.Sleep(1); if (!comPort.IsOpen) break; while (comPort.BytesToRead >= 4) { comPort_DataReceived((object) null, (SerialDataReceivedEventArgs) null); } } catch (Exception ex) { log.Error("crash in comport reader " + ex); } // cant exit unless told to } log.Info("Comport thread close"); }) {Name = "comport reader", IsBackground = true}; t11.Start(); // doesnt seem to work on mac //comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); }
public void SetupM8P(ICommsSerial port, PointLatLngAlt basepos, int surveyindur = 0, double surveyinacc = 0) { port.BaseStream.Flush(); // port config - 115200 - uart1 var packet = generate(0x6, 0x00, new byte[] { 0x01, 0x00, 0x00, 0x00, 0xD0, 0x08, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x23, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(300); // port config - usb packet = generate(0x6, 0x00, new byte[] { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(300); // set rate to 1hz packet = generate(0x6, 0x8, new byte[] { 0xE8, 0x03, 0x01, 0x00, 0x01, 0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(200); // set navmode to stationary packet = generate(0x6, 0x24, new byte[] { 0xFF ,0xFF ,0x02 ,0x03 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x27 ,0x00 ,0x00 ,0x05 ,0x00 ,0xFA ,0x00 ,0xFA ,0x00 ,0x64 ,0x00 ,0x2C ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x27 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(200); // turn off all nmea for (int a = 0; a <= 0xf; a++) { if (a == 0xb || a == 0xc || a == 0xe) continue; turnon_off(port, 0xf0, (byte)a, 0); } // mon-ver poll_msg(port, 0xa, 0x4); // surveyin msg - for feedback turnon_off(port, 0x01, 0x3b, 1); // pvt msg - for feedback turnon_off(port, 0x01, 0x07, 1); // 1005 - 5s turnon_off(port, 0xf5, 0x05, 5); // 1077 - 1s turnon_off(port, 0xf5, 0x4d, 1); // 1087 - 1s turnon_off(port, 0xf5, 0x57, 1); // rxm-raw/rawx - 1s turnon_off(port, 0x02, 0x15, 1); turnon_off(port, 0x02, 0x10, 1); // rxm-sfrb/sfrb - 5s turnon_off(port, 0x02, 0x13, 5); turnon_off(port, 0x02, 0x11, 5); System.Threading.Thread.Sleep(100); System.Threading.Thread.Sleep(100); if (basepos == PointLatLngAlt.Zero) { // survey in config - 60s and < 2m packet = generate(0x6, 0x71, new ubx_cfg_tmode3((uint)surveyindur, surveyinacc)); port.Write(packet, 0, packet.Length); } else { byte[] data = new ubx_cfg_tmode3(basepos.Lat, basepos.Lng, basepos.Alt); packet = generate(0x6, 0x71, data); port.Write(packet, 0, packet.Length); } System.Threading.Thread.Sleep(100); }
private void Log_Load(object sender, EventArgs e) { status = serialstatus.Connecting; comPort = MainV2.comPort.BaseStream; //comPort.ReceivedBytesThreshold = 50; //comPort.ReadBufferSize = 1024 * 1024; try { comPort.DtrEnable = false; System.Threading.Thread.Sleep(100); comPort.DtrEnable = true; //comPort.Open(); } catch (Exception) { MessageBox.Show("Error opening comport"); } System.Threading.Thread t11 = new System.Threading.Thread(delegate() { DateTime start = DateTime.Now; threadrun = true; System.Threading.Thread.Sleep(2000); try { comPort.Write("\n\n\n\n"); } catch { } while (threadrun) { try { updateDisplay(); System.Threading.Thread.Sleep(10); if (!comPort.IsOpen) break; while (comPort.BytesToRead >= 4) { comPort_DataReceived((object)null, (SerialDataReceivedEventArgs)null); } } catch (Exception ex) { Console.WriteLine("crash in comport reader " + ex.ToString()); } // cant exit unless told to } Console.WriteLine("Comport thread close"); }); t11.Name = "comport reader"; t11.Start(); MainV2.threads.Add(t11); // doesnt seem to work on mac //comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); }
private void start_NSHTerminal() { try { if (MainV2.comPort != null && MainV2.comPort.BaseStream != null && MainV2.comPort.BaseStream.IsOpen) { comPort = new MAVLinkSerialPort(MainV2.comPort, MAVLink.SERIAL_CONTROL_DEV.SHELL); comPort.BaudRate = 0; // 20 hz ((MAVLinkSerialPort)comPort).timeout = 50; comPort.Open(); startreadthread(); } } catch { } }
public void SetupM8P(ICommsSerial port) { // port config - 115200 - uart1 var packet = generate(0x6, 0x00, new byte[] { 0x01, 0x00, 0x00, 0x00, 0xD0, 0x08, 0x00, 0x00, 0x00, 0xC2, 0x01, 0x00, 0x23, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(100); // set rate to 1hz packet = generate(0x6, 0x8, new byte[] { 0xE8, 0x03, 0x01, 0x00, 0x01, 0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(100); // surveyin msg - for feedback packet = generate(0x6, 0x1, new byte[] { 0x01, 0x3b, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); // pvt msg - for feedback packet = generate(0x6, 0x1, new byte[] { 0x01, 0x7, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); // 1005 - 5s packet = generate(0x6, 0x1, new byte[] { 0xF5, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); // 1077 - 1s packet = generate(0x6, 0x1, new byte[] {0xF5, 0x4D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); // 1087 - 1s packet = generate(0x6, 0x1, new byte[] { 0xF5, 0x57, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(100); System.Threading.Thread.Sleep(100); // survey in config - 60s and < 2m packet = generate(0x6, 0x71, new byte[] {0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }); port.Write(packet, 0, packet.Length); System.Threading.Thread.Sleep(100); }
bool upload_xmodem(ICommsSerial comPort) { // try xmodem mode // xmodem - short cts to ground try { uploader_LogEvent("Trying XModem Mode"); //comPort.BaudRate = 57600; comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; comPort.ReadTimeout = 1000; Thread.Sleep(2000); var tempd = comPort.ReadExisting(); Console.WriteLine(tempd); comPort.Write("U"); Thread.Sleep(1000); var resp1 = Serial_ReadLine(comPort); // echo var resp2 = Serial_ReadLine(comPort); // echo 2 var tempd2 = comPort.ReadExisting(); // posibly bootloader info / use to sync // identify comPort.Write("i"); // responce is rfd900.... var resp3 = Serial_ReadLine(comPort); //echo var resp4 = Serial_ReadLine(comPort); // newline var resp5 = Serial_ReadLine(comPort); // bootloader info uploader_LogEvent(resp5); if (resp5.Contains("RFD900")) { // start upload comPort.Write("u"); var resp6 = Serial_ReadLine(comPort); // echo var resp7 = Serial_ReadLine(comPort); // Ready if (resp7.Contains("Ready")) { comPort.ReadTimeout = 3500; // responce is C var isC = comPort.ReadByte(); var temp = comPort.ReadExisting(); if (isC == 'C') { XModem.LogEvent += uploader_LogEvent; XModem.ProgressEvent += uploader_ProgressEvent; // start file send XModem.Upload(@"SiK900x.bin", comPort); XModem.LogEvent -= uploader_LogEvent; XModem.ProgressEvent -= uploader_ProgressEvent; return true; } } } } catch (Exception ex2) { log.Error(ex2); } return false; }
private void setcomport() { if (comPort == null) { try { comPort = new SerialPort(); comPort.PortName = MainV2.comPortName; comPort.BaudRate = int.Parse(MainV2._connectionControl.CMB_baudrate.Text); comPort.ReadBufferSize = 1024*1024*4; } catch { CustomMessageBox.Show(Strings.InvalidBaudRate, Strings.ERROR); } } }
public string doCommand(ICommsSerial comPort, string cmd, int level = 0) { if (!comPort.IsOpen) return ""; comPort.ReadTimeout = 1000; comPort.DiscardInBuffer(); // setup to known state comPort.Write("\r\n"); try { var temp1 = Serial_ReadLine(comPort); } catch { try { comPort.ReadExisting(); } catch { return ""; } } Sleep(100); comPort.DiscardInBuffer(); lbl_status.Text = "Doing Command " + cmd; log.Info("Doing Command " + cmd); // write command comPort.Write(cmd + "\r\n"); // read echoed line or existing data string temp; try { temp = Serial_ReadLine(comPort); } catch { temp = comPort.ReadExisting(); } log.Info("cmd " + cmd + " echo " + temp); // get response string ans = ""; DateTime deadline = DateTime.Now.AddMilliseconds(200); while (comPort.BytesToRead > 0 || DateTime.Now < deadline) { try { ans = ans + Serial_ReadLine(comPort) + "\n"; } catch { ans = ans + comPort.ReadExisting() + "\n"; } Sleep(50); if (ans.Length > 1024) { break; } } log.Info("response " + level + " " + ans.Replace('\0', ' ')); Regex pattern = new Regex(@"^\[([0-9+])\]\s+", RegexOptions.Multiline); if (pattern.IsMatch(ans)) { Match mat = pattern.Match(ans); ans = pattern.Replace(ans, ""); } // try again if (ans == "" && level == 0) return doCommand(comPort, cmd, 1); return ans; }
private void CloseStream(ICommsSerial basestream) { try { if (basestream.IsOpen) basestream.Close(); } catch { } }
private void Terminal_Load(object sender, EventArgs e) { try { MainV2.comPort.giveComport = true; comPort = MainV2.comPort.BaseStream; if (comPort.IsOpen) comPort.Close(); comPort.ReadBufferSize = 1024 * 1024; comPort.PortName = MainV2.comPortName; comPort.BaudRate = int.Parse(MainV2._connectionControl.CMB_baudrate.Text); comPort.Open(); comPort.toggleDTR(); comPort.DiscardInBuffer(); Console.WriteLine("Terminal_Load"); System.Threading.Thread t11 = new System.Threading.Thread(delegate() { threadrun = true; Console.WriteLine("Terminal thread start"); // 10 sec waitandsleep(10000); Console.WriteLine("Terminal thread 1"); // 100 ms readandsleep(100); Console.WriteLine("Terminal thread 2"); try { if (!inlogview) comPort.Write("\n\n\n"); // 1 secs if (!inlogview) readandsleep(1000); if (!inlogview) comPort.Write("\r\r\r?\r"); } catch (Exception ex) { Console.WriteLine("Terminal thread 3 " + ex.ToString()); threadrun = false; return; } Console.WriteLine("Terminal thread 3"); while (threadrun) { try { System.Threading.Thread.Sleep(10); if (inlogview) continue; if (!comPort.IsOpen) break; if (comPort.BytesToRead > 0) { comPort_DataReceived((object)null, (SerialDataReceivedEventArgs)null); } } catch (Exception ex) { Console.WriteLine("Terminal thread 4 " + ex.ToString()); } } threadrun = false; try { comPort.DtrEnable = false; } catch { } try { Console.WriteLine("term thread close"); comPort.Close(); } catch { } Console.WriteLine("Comport thread close"); }); t11.IsBackground = true; t11.Name = "Terminal serial thread"; t11.Start(); // doesnt seem to work on mac //comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); TXT_terminal.AppendText("Opened com port\r\n"); inputStartPos = TXT_terminal.SelectionStart; } catch (Exception) { TXT_terminal.AppendText("Cant open serial port\r\n"); return; } TXT_terminal.Focus(); }
private void start_Terminal(bool px4) { try { MainV2.comPort.giveComport = true; comPort = MainV2.comPort.BaseStream; if (comPort.IsOpen) { threadrun = false; // if (DialogResult.Cancel == CustomMessageBox.Show("The port is open\n Continue?", "Continue", MessageBoxButtons.YesNo)) { // return; } comPort.Close(); // allow things to cleanup System.Threading.Thread.Sleep(200); } comPort.ReadBufferSize = 1024 * 1024; comPort.PortName = MainV2.comPortName; // test moving baud rate line log.Info("About to open " + comPort.PortName); comPort.Open(); comPort.BaudRate = int.Parse(MainV2._connectionControl.CMB_baudrate.Text); if (px4) { TXT_terminal.AppendText("Rebooting"); // check if we are a mavlink stream byte[] buffer = MainV2.comPort.readPacket(); if (buffer.Length > 0) { log.Info("got packet - sending reboot via mavlink"); MainV2.comPort.giveComport = true; MainV2.comPort.doReboot(false); try { comPort.Close(); } catch { } } else { log.Info("no packet - sending reboot via console"); MainV2.comPort.giveComport = true; MainV2.comPort.BaseStream.Write("exit\rreboot\r"); try { comPort.Close(); } catch { } } MainV2.comPort.giveComport = true; TXT_terminal.AppendText("Waiting for reboot"); // wait 7 seconds for px4 reboot log.Info("waiting for reboot"); DateTime deadline = DateTime.Now.AddSeconds(8); while (DateTime.Now < deadline) { System.Threading.Thread.Sleep(100); Application.DoEvents(); } int a = 0; // while (a < 5) { try { comPort.Open(); } catch { } System.Threading.Thread.Sleep(200); a++; } } else { comPort.toggleDTR(); } try { comPort.DiscardInBuffer(); } catch { } Console.WriteLine("Terminal_Load"); BUT_disconnect.Enabled = true; System.Threading.Thread t11 = new System.Threading.Thread(delegate() { threadrun = true; Console.WriteLine("Terminal thread start"); // 10 sec waitandsleep(10000); Console.WriteLine("Terminal thread 1"); // 100 ms readandsleep(100); Console.WriteLine("Terminal thread 2"); try { if (!inlogview) comPort.Write("\n\n\n"); // 1 secs if (!inlogview) readandsleep(1000); if (!inlogview) comPort.Write("\r\r\r?\r"); } catch (Exception ex) { Console.WriteLine("Terminal thread 3 " + ex.ToString()); ChangeConnectStatus(false); threadrun = false; return; } Console.WriteLine("Terminal thread 3"); while (threadrun) { try { System.Threading.Thread.Sleep(10); ChangeConnectStatus(comPort.IsOpen); if (this.Disposing) break; if (inlogview) continue; if (!comPort.IsOpen) { Console.WriteLine("Comport Closed"); ChangeConnectStatus(false); break; } if (comPort.BytesToRead > 0) { comPort_DataReceived((object)null, (SerialDataReceivedEventArgs)null); } } catch (Exception ex) { Console.WriteLine("Terminal thread 4 " + ex.ToString()); } } threadrun = false; try { comPort.DtrEnable = false; } catch { } try { Console.WriteLine("term thread close"); ChangeConnectStatus(false); comPort.Close(); } catch { } Console.WriteLine("Comport thread close"); }); t11.IsBackground = true; t11.Name = "Terminal serial thread"; t11.Start(); // doesnt seem to work on mac //comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); TXT_terminal.AppendText("Opened com port\r\n"); inputStartPos = TXT_terminal.SelectionStart; } catch (Exception ex) { log.Error(ex); TXT_terminal.AppendText("Cant open serial port\r\n"); return; } TXT_terminal.Focus(); }
public string doCommand(ICommsSerial comPort, string cmd, bool multiLineResponce = false, int level = 0) { if (!comPort.IsOpen) return ""; comPort.DiscardInBuffer(); lbl_status.Text = "Doing Command " + cmd; log.Info("Doing Command " + cmd); comPort.Write(cmd + "\r\n"); comPort.ReadTimeout = 1000; // command echo var cmdecho = Serial_ReadLine(comPort); if (cmdecho.Contains(cmd)) { var value = ""; if (multiLineResponce) { DateTime deadline = DateTime.Now.AddMilliseconds(1000); while (comPort.BytesToRead > 0 || DateTime.Now < deadline) { try { value = value + Serial_ReadLine(comPort); } catch { value = value + comPort.ReadExisting(); } } } else { value = Serial_ReadLine(comPort); if (value == "" && level == 0) { return doCommand(comPort, cmd, multiLineResponce, 1); } } log.Info(value.Replace('\0', ' ')); return value; } comPort.DiscardInBuffer(); // try again if (level == 0) return doCommand(comPort, cmd, multiLineResponce, 1); return ""; }
private void Log_Load(object sender, EventArgs e) { status = serialstatus.Connecting; comPort = MainV2.comPort.BaseStream; //comPort.ReceivedBytesThreshold = 50; //comPort.ReadBufferSize = 1024 * 1024; try { comPort.toggleDTR(); //comPort.Open(); } catch (Exception ex) { log.Error("Error opening comport", ex); CustomMessageBox.Show("Error opening comport"); } var t11 = new System.Threading.Thread(delegate() { var start = DateTime.Now; threadrun = true; System.Threading.Thread.Sleep(2000); try { comPort.Write("\n\n\n\n"); // more in "connecting" } catch { } while (threadrun) { try { updateDisplay(); System.Threading.Thread.Sleep(10); if (!comPort.IsOpen) break; while (comPort.BytesToRead >= 4) { comPort_DataReceived((object)null, (SerialDataReceivedEventArgs)null); } } catch (Exception ex) { log.Error("crash in comport reader " + ex); } // cant exit unless told to } log.Info("Comport thread close"); }) {Name = "comport reader"}; t11.Start(); // doesnt seem to work on mac //comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); }
private void BUT_connect_Click(object sender, EventArgs e) { if (comPort.IsOpen) { threadrun = false; comPort.Close(); BUT_connect.Text = Strings.Connect; } else { try { switch (CMB_serialport.Text) { case "NTRIP": comPort = new CommsNTRIP(); CMB_baudrate.SelectedIndex = 0; break; case "TCP Client": comPort = new TcpSerial(); break; case "UDP Host": comPort = new UdpSerial(); break; case "UDP Client": comPort = new UdpSerialConnect(); break; default: comPort = new SerialPort(); comPort.PortName = CMB_serialport.Text; break; } } catch { CustomMessageBox.Show(Strings.InvalidPortName); return; } try { comPort.BaudRate = int.Parse(CMB_baudrate.Text); } catch { CustomMessageBox.Show(Strings.InvalidBaudRate); return; } try { comPort.Open(); } catch (Exception ex) { CustomMessageBox.Show("Error Connecting\nif using com0com please rename the ports to COM??\n" + ex.ToString()); return; } t12 = new System.Threading.Thread(new System.Threading.ThreadStart(mainloop)) { IsBackground = true, Name = "injectgps" }; t12.Start(); BUT_connect.Text = Strings.Stop; } }
void Sleep(int mstimeout, ICommsSerial comPort = null) { DateTime endtime = DateTime.Now.AddMilliseconds(mstimeout); while (DateTime.Now < endtime) { System.Threading.Thread.Sleep(1); Application.DoEvents(); // prime the mavlinkserial loop with data. if (comPort != null) { int test = comPort.BytesToRead; test++; } } }
public bool doConnect(ICommsSerial comPort) { try { // clear buffer comPort.DiscardInBuffer(); // setup a known enviroment comPort.Write("\r\n"); // wait Sleep(1100); // send config string comPort.Write("+++"); // wait Sleep(1100); // check for config responce "OK" log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); string conn = comPort.ReadExisting(); log.Info("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length); if (conn.Contains("OK")) { //return true; } else { // cleanup incase we are already in cmd mode comPort.Write("\r\n"); } doCommand(comPort, "AT&T"); string version = doCommand(comPort, "ATI"); log.Info("Connect Version: " + version.Trim() + "\n"); Regex regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)"); if (regex.IsMatch(version)) { return true; } return false; } catch { return false; } }
public bool doConnect(ICommsSerial comPort) { try { Console.WriteLine("doConnect"); // setup a known enviroment comPort.Write("ATO\r\n"); // wait Sleep(1100, comPort); comPort.DiscardInBuffer(); // send config string comPort.Write("+++"); Sleep(1100,comPort); // check for config response "OK" log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate); // allow time for data/response byte[] buffer = new byte[20]; int len = comPort.Read(buffer, 0, buffer.Length); string conn = ASCIIEncoding.ASCII.GetString(buffer, 0, len); log.Info("Connect first response " + conn.Replace('\0', ' ') + " " + conn.Length); if (conn.Contains("OK")) { //return true; } else { // cleanup incase we are already in cmd mode comPort.Write("\r\n"); } doCommand(comPort, "AT&T"); string version = doCommand(comPort, "ATI"); log.Info("Connect Version: " + version.Trim() + "\n"); Regex regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)"); if (regex.IsMatch(version)) { return true; } return false; } catch { return false; } }
/// <summary> /// Load firmware history from file /// </summary> public Firmware() { comPortosdbl = new MissionPlanner.Comms.SerialPort(); }
static void doread(object o) { lock (runlock) { run++; running++; } MAVLinkInterface port = (MAVLinkInterface)o; try { port.BaseStream.Open(); int baud = 0; redo: if (run == 0) return; DateTime deadline = DateTime.Now.AddSeconds(5); while (DateTime.Now < deadline) { Console.WriteLine("Scan port {0} at {1}", port.BaseStream.PortName, port.BaseStream.BaudRate); byte[] packet = new byte[0]; try { packet = port.readPacket(); } catch { } if (packet.Length > 0) { port.BaseStream.Close(); Console.WriteLine("Found Mavlink on port {0} at {1}", port.BaseStream.PortName, port.BaseStream.BaudRate); foundport = true; portinterface = port.BaseStream; if (CommsSerialScan.connect) { MainV2.comPort.BaseStream = port.BaseStream; doconnect(); } lock (runlock) { running--; } return; } if (foundport) break; } if (!foundport && port.BaseStream.BaudRate > 0) { baud++; if (baud < bauds.Length) { port.BaseStream.BaudRate = bauds[baud]; goto redo; } } try { port.BaseStream.Close(); } catch { } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { lock (runlock) { running--; } } Console.WriteLine("Scan port {0} Finished!!", port.BaseStream.PortName); }