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