public void SerialPortStream_ListPorts()
        {
            bool result = true;

            Dictionary <string, bool> ports1 = new Dictionary <string, bool>();
            Dictionary <string, bool> ports2 = new Dictionary <string, bool>();

            foreach (PortDescription desc in SerialPortStream.GetPortDescriptions())
            {
                Trace.WriteLine("GetPortDescriptions: " + desc.Port + "; Description: " + desc.Description);
                ports1.Add(desc.Port, false);
                ports2.Add(desc.Port, false);
            }

            foreach (string c in SerialPortStream.GetPortNames())
            {
                Trace.WriteLine("GetPortNames: " + c);
                if (ports1.ContainsKey(c))
                {
                    ports1[c] = true;
                }
                else
                {
                    Trace.WriteLine("GetPortNames() shows " + c + ", but not GetPortDescriptions()");
                    result = false;
                }
            }
            foreach (string c in ports1.Keys)
            {
                if (ports1[c] == false)
                {
                    Trace.WriteLine("GetPortDescriptions() shows " + c + ", but not GetPortnames()");
                    result = false;
                }
            }

            foreach (string c in System.IO.Ports.SerialPort.GetPortNames())
            {
                Trace.WriteLine("SerialPort.GetPortNames: " + c);
                if (ports2.ContainsKey(c))
                {
                    ports2[c] = true;
                }
                else
                {
                    Trace.WriteLine("System.IO.Ports.SerialPort.GetPortNames() shows " + c + ", but not GetPortDescriptions()");
                    result = false;
                }
            }
            foreach (string c in ports1.Keys)
            {
                if (ports2[c] == false)
                {
                    Trace.WriteLine("GetPortDescriptions() shows " + c + ", but not System.IO.Ports.SerialPort.GetPortNames()");
                    result = false;
                }
            }

            Assert.IsTrue(result);
        }
 public void GetDescriptorTest()
 {
     foreach (var portDescription in SerialPortStream.GetPortDescriptions())
     {
         output.WriteLine(portDescription.Description);
     }
 }
Exemple #3
0
            public override Status Scan <Serial_Device>(out List <Serial_Device> device_list,
                                                        ScanOptions scan_opt = ScanOptions.None)
            {
                device_list = new List <Serial_Device>();
                devices.Clear();


                int i = 1;
                //var allcom = SerialPortStream.GetPortNames();
                var desc = SerialPortStream.GetPortDescriptions();

                if (desc != null && desc.Length > 0)
                {
                    foreach (PortDescription com in desc)
                    {
                        string device_name = com.Port.ToUpper().Replace(" ", String.Empty).Trim();
                        if (!device_name.Contains(DEVICE_PREFIX) || !device_name.Any(c => char.IsDigit(c)))
                        {
                            device_name = DEVICE_PREFIX + i;
                        }
                        while (devices.ContainsKey(device_name))
                        {
                            device_name += "0";
                        }

                        Comm.Serial_Device nod = new Comm.Serial_Device
                                                 (
                            com.Port,
                            device_name,
                            com.Description,
                            "",
                            Mode.UART_Serial
                                                 );
                        nod.FormattedDescription = nod.ToString();
                        devices.Add(device_name.ToLower(), nod);
                        i++;
                    }

                    try
                    {
                        device_list = devices.Select(pair => pair.Value)
                                      .Cast <Serial_Device>()
                                      .Select(s => new { key = Int32.Parse(Regex.Match(s.Name, @"\d+").Value), value = s })
                                      .OrderBy(p => p.key)
                                      .Select(p => p.value)
                                      .ToList();
                    }
                    catch (Exception)
                    {
                        device_list = devices.Select(pair => pair.Value).Cast <Serial_Device>().ToList();
                    }
                }
                return(Utils.StatusCreate(0));
            }
Exemple #4
0
        public IEnumerable <SerialPortInfo> SerialPortList()
        {
            PortDescription[] ports = SerialPortStream.GetPortDescriptions();

            return(Enumerable.Range(0, ports.Length).Select(index => new SerialPortInfo
            {
                StrComName = ports[index].Port,
                StrComProdId = ports[index].ToString(),
                StrComVendorId = "-",// ports[index].ToString(),
                StrSummary = ports[index].Description
            }));
        }
Exemple #5
0
 static int RunListPorts(ListPortsOptions opts)
 {
     foreach (var portDesc in SerialPortStream.GetPortDescriptions())
     {
         Console.Out.Write($"{portDesc.Port}");
         if (!string.IsNullOrEmpty(portDesc.Description))
         {
             Console.Out.Write($" ({portDesc.Description})");
         }
         Console.Out.WriteLine();
     }
     return(0);
 }
Exemple #6
0
 public SerialCommunicationPort(string portName)
 {
     using (SerialPortStream port = new SerialPortStream(portName))
     {
         Port         = portName;
         BaudRate     = port.BaudRate;
         ByteSize     = port.DataBits;
         StopBits     = Convert.ToInt32(port.StopBits);
         Description  = SerialPortStream.GetPortDescriptions().First(p => p.Port == portName).Description;
         ReadTimeout  = port.ReadTimeout;
         WriteTimeout = port.WriteTimeout;
         FirstSeenAt  = DateTime.UtcNow;
     }
 }
 public void Show(string cmds)
 {
     //TODO: settings, cwd,
     if (cmds == "version")
     {
         WriteConsole(System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString() + "\n");
     }
     else if (cmds == "ports")
     {
         foreach (PortDescription desc in SerialPortStream.GetPortDescriptions())
         {
             WriteConsole("Port Name: " + desc.Port + " Description: " +
                          ((desc.Description == string.Empty) ? "No Description provided" : desc.Description));
         }
     }
     else
     {
         WriteConsole("Show command: Show version | ports");
     }
 }
        public void ListPorts()
        {
            bool result = true;

            Dictionary <string, bool> ports1 = new Dictionary <string, bool>();
            Dictionary <string, bool> ports2 = new Dictionary <string, bool>();

            PortDescription[] portDescs = SerialPortStream.GetPortDescriptions();
            foreach (PortDescription desc in portDescs)
            {
                Console.WriteLine("GetPortDescriptions: " + desc.Port + "; Description: " + desc.Description);
                ports1.Add(desc.Port, false);
                ports2.Add(desc.Port, false);
            }

            string[] portNames = SerialPortStream.GetPortNames();
            foreach (string c in portNames)
            {
                Console.WriteLine("GetPortNames: " + c);
                if (ports1.ContainsKey(c))
                {
                    ports1[c] = true;
                }
                else
                {
                    Console.WriteLine("GetPortNames() shows " + c + ", but not GetPortDescriptions()");
                    result = false;
                }
            }
            foreach (string c in ports1.Keys)
            {
                if (!ports1[c])
                {
                    Console.WriteLine("GetPortDescriptions() shows " + c + ", but not GetPortnames()");
                    result = false;
                }
            }

            Assert.That(result, Is.True);
        }
Exemple #9
0
 public void Show(string cmds)
 {
     if (cmds == "version")
     {
         System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
         FileVersionInfo            fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);
         string version = fvi.FileVersion;
         WriteConsole(version);
     }
     else if (cmds == "ports")
     {
         foreach (PortDescription desc in SerialPortStream.GetPortDescriptions())
         {
             WriteConsole("Port Name: " + desc.Port + " Description: " +
                          ((desc.Description == string.Empty) ? "No Description provided" : desc.Description));
         }
     }
     else
     {
         WriteConsole("Show command: Show version | ports");
     }
 }
Exemple #10
0
        public List <string> GetPorts(bool showDescription)
        {
            var ports = new List <string>();

            try
            {
                foreach (PortDescription desc in SerialPortStream.GetPortDescriptions())
                {
                    if (string.IsNullOrEmpty(desc.Description) || !showDescription)
                    {
                        ports.Add(desc.Port);
                    }
                    else
                    {
                        ports.Add(desc.Port + ": " + desc.Description);
                    }
                }
            }
            catch (Exception)
            {
            }
            return(ports);
        }
Exemple #11
0
        static int RunDetectPorts(DetectPortsOptions opts)
        {
            var validPorts = new List <PortDescription>();

            using (var client = new ModbusRtuClient())
            {
                client.BaudRate = opts.BaudRate;
                client.DataBits = opts.DataBits;
                client.Parity   = opts.Parity;

                foreach (var portDesc in SerialPortStream.GetPortDescriptions())
                {
                    client.PortName = portDesc.Port;
                    if (opts.Verbose)
                    {
                        Console.Error.Write($"Trying {portDesc.Port}");
                        if (!string.IsNullOrEmpty(portDesc.Description))
                        {
                            Console.Out.Write($" ({portDesc.Description})");
                        }
                        Console.Out.Write("...");
                    }
                    try
                    {
                        client.Open();
                    }
                    catch (Exception exp) when(exp is UnauthorizedAccessException || exp is InvalidOperationException)
                    {
                        if (opts.Verbose)
                        {
                            Console.Error.WriteLine("already in use.");
                        }
                        continue;
                    }
                    catch (IOException)
                    {
                        if (opts.Verbose)
                        {
                            Console.Error.WriteLine("cannot open.");
                        }
                        continue;
                    }

                    try
                    {
                        client.ReadHoldingRegisters(opts.UnitAddress, 0, 1);
                    }
                    catch (TimeoutException)
                    {
                        if (opts.Verbose)
                        {
                            Console.Error.WriteLine("timeout.");
                        }
                        client.Close();
                        continue;
                    }
                    catch (FormatException)
                    {
                        if (opts.Verbose)
                        {
                            Console.Error.WriteLine("frame error.");
                        }
                        client.Close();
                        continue;
                    }
                    catch (ModbusException)
                    {
                    }
                    if (opts.Verbose)
                    {
                        Console.Error.WriteLine("valid.");
                    }
                    validPorts.Add(portDesc);
                    client.Close();
                }
            }
            if (opts.Verbose)
            {
                Console.Error.WriteLine();
            }
            foreach (var portDesc in validPorts)
            {
                Console.Out.Write($"{portDesc.Port}");
                if (!string.IsNullOrEmpty(portDesc.Description))
                {
                    Console.Out.Write($" ({portDesc.Description})");
                }
                Console.Out.WriteLine();
            }

            return(0);
        }