private bool ConnectSerial(Int32 connection = 1) { Console.WriteLine("CONNECT IS CALLED"); SerialPort conveyorConnectioninternal = new SerialPort(); if (connection == 2) { Console.WriteLine("CONN2"); conveyorConnectioninternal = conveyorConnection2; } else { Console.WriteLine("CONN1"); conveyorConnectioninternal = conveyorConnection; } if (conveyorConnectioninternal.IsOpen) { return(true); } if (connection == 2 && conveyorConnection2Opening) { Console.WriteLine("Another thread is stuck in trying to open connection2 on port COM4"); return(false); } if (connection == 1 && conveyorConnection1Opening) { Console.WriteLine("Another thread is stuck in trying to open connection1 on port COM3"); return(false); } try { Console.WriteLine("Opening COM" + connection.ToString() + "..."); string selectedPort = ""; var ports = COMPortInfo.GetCOMPortsInfo(); //foreach (COMPortInfo comPort in ports) //{ // Console.WriteLine(comPort.Description); // if (comPort.Description.Contains("Communications Port")) // { // selectedPort = comPort.Name; // break; // } // } if (connection == 2) { selectedPort = "COM4"; conveyorConnection2.NewLine = "\r\n"; conveyorConnection2.PortName = selectedPort; conveyorConnection2.BaudRate = 19200; conveyorConnection2.Parity = Parity.None; conveyorConnection2.DataBits = 8; conveyorConnection2.StopBits = StopBits.One; conveyorConnection2.Handshake = Handshake.None; conveyorConnection2.DtrEnable = true; conveyorConnection2.ReadTimeout = 5000; conveyorConnection2.WriteBufferSize = 1024; conveyorConnection2Opening = true; conveyorConnection2.Open(); conveyorConnection2Opening = false; } else { selectedPort = "COM3"; conveyorConnection.NewLine = "\r\n"; conveyorConnection.PortName = selectedPort; conveyorConnection.BaudRate = 19200; conveyorConnection.Parity = Parity.None; conveyorConnection.DataBits = 8; conveyorConnection.StopBits = StopBits.One; conveyorConnection.Handshake = Handshake.None; conveyorConnection.DtrEnable = true; conveyorConnection.ReadTimeout = 5000; conveyorConnection.WriteBufferSize = 1024; conveyorConnection1Opening = true; conveyorConnection.Open(); conveyorConnection1Opening = false; } } catch (Exception ex) { Console.WriteLine("Error opening COM" + connection.ToString() + "!"); Console.WriteLine(ex.Message); if (connection == 1) { conveyorConnection1Opening = false; } else { conveyorConnection2Opening = false; } return(false); } Console.WriteLine("Open COM1" + connection.ToString() + "Successful."); status = conveyerstatus.waiting.ToString(); if (connection == 1) { conveyorConnection1Opening = false; } else { conveyorConnection2Opening = false; } return(true); }