private static void SetValues(Controller controller, XmlTemplate xmlTemplate)
        {
            var serialPortList = SerialPortStream.GetPortNames();

            if (serialPortList.Contains(xmlTemplate.RelayerPortAName))
            {
                controller.SerialPortHandler.SelectedRelayerPortAName = xmlTemplate.RelayerPortAName;
            }

            if (serialPortList.Contains(xmlTemplate.RelayerPortBName))
            {
                controller.SerialPortHandler.SelectedRelayerPortBName = xmlTemplate.RelayerPortBName;
            }

            if (serialPortList.Contains(xmlTemplate.SnifferPortABName))
            {
                controller.SerialPortHandler.SelectedSnifferPortABName = xmlTemplate.SnifferPortABName;
            }

            if (serialPortList.Contains(xmlTemplate.SnifferPortBAName))
            {
                controller.SerialPortHandler.SelectedSnifferPortBAName = xmlTemplate.SnifferPortBAName;
            }

            controller.SerialPortHandler.SelectedBaudRate = xmlTemplate.BaudRate;
        }
        /// <summary>
        /// Creates a new ArduinoDriver instance. The relevant portname will be autodetected if possible.
        /// </summary>
        /// <param name="arduinoModel"></param>
        /// <param name="autoBootstrap"></param>
        public static async Task <ArduinoDriver> CreateAsync(ArduinoModel arduinoModel, bool autoBootstrap = false)
        {
            logger.Info(
                "Instantiating ArduinoDriver (model {0}) with autoconfiguration of port name...",
                arduinoModel);

            var    possiblePortNames   = SerialPortStream.GetPortNames().Distinct();
            string unambiguousPortName = null;

            try
            {
                unambiguousPortName = possiblePortNames.SingleOrDefault();
            }
            catch (InvalidOperationException)
            {
                // More than one posible hit.
            }
            if (unambiguousPortName == null)
            {
                throw new IOException(
                          "Unable to autoconfigure ArduinoDriver port name, since there is not exactly a single "
                          + "COM port available. Please use the ArduinoDriver with the named port constructor!");
            }

            var arduinoDriver = new ArduinoDriver();
            await arduinoDriver.InitializeAsync(new ArduinoDriverConfiguration
            {
                ArduinoModel  = arduinoModel,
                PortName      = unambiguousPortName,
                AutoBootstrap = autoBootstrap
            });

            return(arduinoDriver);
        }
        public override void EstablishSync()
        {
            var ports   = SerialPortStream.GetPortNames();
            var newPort = ports.Except(originalPorts).SingleOrDefault();

            if (newPort == null)
            {
                UploaderLogger.LogErrorAndThrow(
                    string.Format(
                        "No (unambiguous) virtual COM port detected (after {0}ms).",
                        VIRTUAL_COM_CREATION_TIMEOUT));
            }

            SerialPort = new SerialPortStream
            {
                BaudRate  = 57600,
                PortName  = newPort,
                DataBits  = 8,
                Parity    = Parity.None,
                StopBits  = StopBits.One,
                Handshake = Handshake.DtrRts
            };
            try
            {
                SerialPort.Open();
            }
            catch (Exception ex)
            {
                UploaderLogger.LogErrorAndThrow(
                    string.Format("Unable to open serial port - {0}.", ex.Message));
            }
        }
        private async Task <string> RunBootLoader(string nonBootLoaderPort, List <string> baselinePorts)
        {
            var port = new SerialPortStream(nonBootLoaderPort, 1200);

            port.Open();
            await Task.Delay(TimeSpan.FromSeconds(1));

            port.Close();
            int triesRemaining = 8;

            while (triesRemaining > 0)
            {
                await Task.Delay(TimeSpan.FromSeconds(1));

                var    candidates = SerialPortStream.GetPortNames().ToList();
                string candidateBootloaderPort = DetectNewPort(baselinePorts, candidates);
                if (!string.IsNullOrWhiteSpace(candidateBootloaderPort))
                {
                    return(candidateBootloaderPort);
                }
                --triesRemaining;
            }

            return(string.Empty);
        }
Exemple #5
0
        static void Main(string[] args)
        {
            Console.WriteLine("Available ports:");
            Console.WriteLine(String.Join(", ", SerialPortStream.GetPortNames()));

            Console.WriteLine("Using first...");

            Backpack pack = new Backpack(SerialPortStream.GetPortNames()[0]);

            Bitmap bmp = (Bitmap)Bitmap.FromFile("/home/kevin/Downloads/unnamed.gif");

            for (int i = 0; i < bmp.GetFrameCount(FrameDimension.Time); i++)
            {
                bmp.SelectActiveFrame(FrameDimension.Time, i);

                pack.InitializeFrame();

                pack.FillStrips(Color.Black);

                pack.FillMatrix(bmp);

                if (i == bmp.GetFrameCount(FrameDimension.Time) - 1)
                {
                    i = 0;
                }
            }



            Console.ReadLine();
        }
        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);
        }
Exemple #7
0
 private void LoadSerialPorts()
 {
     foreach (var port in SerialPortStream.GetPortNames())
     {
         serial_ports.Items.Add(port);
     }
 }
Exemple #8
0
        public VirtualSerialPortServer(ILogger <VirtualSerialPortServer> logger)
        {
            _logger     = logger;
            this.OnLog += LogHandler;

            #if DEBUG
                #if LINUX
            var ports = SerialPortStream.GetPortNames();
                #else
            var ports = System.IO.Ports.SerialPort.GetPortNames();
                #endif

            bool isTTY = false;
            foreach (var prt in ports)
            {
                _Log($"Serial name: {prt}");
                if (prt.Contains("ttyS0"))
                {
                    isTTY = true;
                }
            }
            if (!isTTY)
            {
                Console.WriteLine("No ttyS0 serial port!");
                return;
            }
            #endif
        }
Exemple #9
0
        public SerialPort(string portName, int baudRate, int timeoutMs = 250)
        {
            if (string.IsNullOrEmpty(portName))
            {
                throw new ArgumentNullException(nameof(portName));
            }

            if (!SerialPortStream.GetPortNames().ToList().Contains(portName))
            {
                throw new ArgumentException($"{portName} does not exist.");
            }

            if (!BaudRates.Contains(baudRate))
            {
                throw new ArgumentException($"Baud rate is invalid. Must be one of the following: {BaudRates.ToString().JoinStrings(",")}");
            }

            _serialStream = new SerialPortStream
            {
                PortName     = portName,
                BaudRate     = baudRate,
                DataBits     = 8,
                Parity       = Parity.None,
                StopBits     = StopBits.One,
                ReadTimeout  = timeoutMs,
                WriteTimeout = timeoutMs
            };

            DataReceivedObservable = DataReceived().Publish();
            DataReceivedObservable.Connect();

            DataSentObservable = new Subject <string>();
        }
        public override void Close()
        {
            try {
                string currentPort = SerialPort.PortName;
                Logger?.Info($"Closing {currentPort}...");
                SerialPort.Close();
                Logger?.Info($"Waiting for virtual port {currentPort} to disappear...");

                const int timeoutVirtualPointDisappearance = 10000;
                const int virtualPortDisappearanceInterval = 100;
                string    result = WaitHelper.WaitFor(
                    timeoutVirtualPointDisappearance, virtualPortDisappearanceInterval,
                    () => SerialPortStream.GetPortNames().Contains(currentPort) ? null : currentPort,
                    (i, item, interval) =>
                    item == null
                            ? $"T+{i * interval} - Port still present..."
                            : $"T+{i * interval} - Port disappeared: {item}!"
                    );

                if (result == null)
                {
                    Logger?.Warn(
                        $"Virtual COM port {currentPort} was still present "
                        + "after {timeoutVirtualPointDisappearance} ms!"
                        );
                }
            }
            catch (Exception ex) {
                throw new ArduinoUploaderException($"Exception during close of the programmer: '{ex.Message}'.");
            }
        }
Exemple #11
0
        /// <summary>
        ///     Creates a new ArduinoDriver instance. The relevant port name will be auto-detected if possible.
        /// </summary>
        /// <param name="arduinoModel"></param>
        /// <param name="autoBootstrap"></param>
        public ArduinoDriver(ArduinoModel arduinoModel, bool autoBootstrap = false)
        {
            IEnumerable <string> possiblePortNames = SerialPortStream.GetPortNames().Distinct();
            string unambiguousPortName             = null;

            try {
                unambiguousPortName = possiblePortNames.SingleOrDefault();
            }
            catch (InvalidOperationException) {
                // More than one possible hit.
            }
            if (unambiguousPortName == null)
            {
                throw new IOException(
                          "Unable to autoconfigure ArduinoDriver port name, since there is not exactly a single "
                          + "COM port available. Please use the ArduinoDriver with the named port constructor!"
                          );
            }

            Initialize(
                new ArduinoDriverConfiguration {
                ArduinoModel  = arduinoModel,
                PortName      = unambiguousPortName,
                AutoBootstrap = autoBootstrap
            }
                );
        }
        public static string[] GetPortNames()
        {
            List <string> serailports = new List <string>();

            serailports.AddRange(SerialPortStream.GetPortNames());
            serailports.Sort();
            return(serailports.ToArray());
        }
Exemple #13
0
 public GpsDemoService(ILogger <GpsDemoService> logger, NmeaStreamReader nmeaStreamReader)
 {
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
     _nsr    = nmeaStreamReader ?? throw new ArgumentNullException(nameof(nmeaStreamReader));
     _nsr.Register(new GFDTA(), new GGA(), new GLL(), new GSA(), new GSV(), new RMC(), new VTG());
     _nsr.AbortAfterUnparsedLines = 10;
     _logger.LogInformation("Available Ports: {Ports}", String.Join(", ", SerialPortStream.GetPortNames()));
 }
Exemple #14
0
 public ZWaveFramework(string port = "")
 {
     ZWavePortName = port;
     if (string.IsNullOrEmpty(ZWavePortName))
     {
         ZWavePortName = SerialPortStream.GetPortNames().Last(element => element != "COM1");
     }
 }
 protected bool IsPortValid(string port = null)
 {
     if (String.IsNullOrWhiteSpace(port))
     {
         port = PortName;
     }
     return(SerialPortStream.GetPortNames().Any(t => t.Equals(port, StringComparison.InvariantCultureIgnoreCase)));
 }
 private void RefreshPorts()
 {
     portSelect.Items.Clear();
     portSelect.Items.Add("(none)");
     foreach (string name in SerialPortStream.GetPortNames())
     {
         portSelect.Items.Add(name);
     }
 }
Exemple #17
0
        static void ListSerialPorts()
        {
            Console.WriteLine("Available serial ports:");
            var names = SerialPortStream.GetPortNames();

            foreach (var name in names)
            {
                Console.WriteLine(name);
            }
        }
Exemple #18
0
        public string SetPortName(string defaultPortName)
        {
            Console.WriteLine("Available Ports:");
            foreach (string s in SerialPortStream.GetPortNames())
            {
                Console.WriteLine("   {0}", s);
            }
            _serialPort.PortName = defaultPortName;

            return(defaultPortName);
        }
Exemple #19
0
        static void Main(string[] args)
        {
            Console.WriteLine("Generic serial reader test app. Supply serial port name as argument.");
            if (args.Length == 0)
            {
                Console.WriteLine("Available serial ports:");
                var names = SerialPortStream.GetPortNames();
                foreach (var name in names)
                {
                    Console.WriteLine(name);
                }
                return;
            }

            var portName = args[0];

            using (var r = new SerialReader(portName))
            {
                Console.WriteLine("Serial number: {0}", r.GetSerialNumber().Result);
                var info = r.GetReaderInfo().Result;
                Console.WriteLine("Model: {0}", info.Model);
                Console.WriteLine("FirmwareVersion: {0}", info.FirmwareVersion);
                Console.WriteLine("AntennaConfiguration: {0}", info.AntennaConfiguration);
                Console.WriteLine("SupportedProtocols: {0}", info.SupportedProtocols);
                Console.WriteLine("RFPower: {0}", info.RFPower);
                Console.WriteLine("InventoryScanInterval: {0}", info.InventoryScanInterval);

                Console.WriteLine("Performing inventory. Ctrl+C to stop");
                var tags = new Dictionary <string, int>();
                while (true)
                {
                    try
                    {
                        var result = r.TagInventory().Result;
                        foreach (var tag in result.Tags)
                        {
                            tags.AddOrUpdate(tag.TagId, 1, (k, v) => v + 1);
                        }

                        Console.WriteLine($"#################################################");
                        foreach (var pair in tags.OrderBy(x => x.Key))
                        {
                            Console.WriteLine($"{pair.Key} {pair.Value}");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
                }
            }
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            cmbPorts.Items.Clear();
            cmbPorts.ItemsSource = SerialPortStream.GetPortNames();
            int i = cmbPorts.Items.IndexOf(Settings.Default.PortName);

            if (i > -1)
            {
                cmbPorts.SelectedIndex = i;
            }
            txtAveraging.Text = Settings.Default.Average.ToString();
            txtDuration.Text  = Settings.Default.AcquisitionDuration.ToString();
        }
Exemple #21
0
        public static SerialPortStream find_ports()
        {
            string port_name      = "COM9";
            var    searched_ports = SerialPortStream.GetPortNames();
            var    distinct_ports = searched_ports.Distinct().ToList();

            if (distinct_ports.SingleOrDefault() != null)
            {
                port_name = distinct_ports.Single();
            }
            SerialPortStream port = new SerialPortStream(port_name, 115200);

            return(port);
        }
Exemple #22
0
        private static string DetectSerialPort(int baudrate, bool hdlcSendControlChar, bool ignoreUnsupportedCommands, Logger logger)
        {
            var ports = SerialPortStream.GetPortNames();

            foreach (var port in ports)
            {
                if (QualcommSerialPortUtils.IsQualcommPort(port, baudrate, hdlcSendControlChar, ignoreUnsupportedCommands, logger))
                {
                    return(port);
                }
            }

            return(ports.FirstOrDefault());
        }
        public ObservableCollection <string> GetSerialPortList()
        {
            var serialPortList = new ObservableCollection <string>();

            string[] serialPortArray = SerialPortStream.GetPortNames();
            Array.Sort(serialPortArray, delegate(string a, string b) {   // Sort COM port list according to "n" in "COMn"
                return(int.Parse(a.Substring(3)).CompareTo(int.Parse(b.Substring(3))));
            });
            foreach (string s in serialPortArray)
            {
                serialPortList.Add(s);
            }
            return(serialPortList);
        }
Exemple #24
0
        private static string DetectSerialPort(int baudrate)
        {
            var ports = SerialPortStream.GetPortNames();

            foreach (var port in ports)
            {
                if (QualcommSerialPortUtils.IsQualcommPort(port, baudrate))
                {
                    return(port);
                }
            }

            return(ports.FirstOrDefault());
        }
Exemple #25
0
        public AdvantechClient()
        {
            _stream = new SerialPortStream();
            var defaultPortName = SerialPortStream.GetPortNames().FirstOrDefault();

            if (defaultPortName != null)
            {
                _stream.PortName = defaultPortName;
            }
            BaudRate  = 9600;
            Parity    = Parity.None;
            StopBits  = StopBits.One;
            Handshake = Handshake.None;
        }
        protected override void Reset()
        {
            logger.Info("Issuing forced 1200bps reset...");
            var currentPortName = SerialPort.PortName;

            originalPorts = SerialPortStream.GetPortNames();

            SerialPort.Close();

            SerialPort = new SerialPortStream(currentPortName, 1200);
            SerialPort.Open();
            SerialPort.Close();
            Thread.Sleep(VIRTUAL_COM_CREATION_TIMEOUT);
        }
Exemple #27
0
        public string Find_Port_Name()
        {
            string _serialPortName = "COM9";
            //Find Serial Port arduino is connected too
            var allPortNames  = SerialPortStream.GetPortNames();
            var distinctPorts = allPortNames.Distinct().ToList();


            // If we don't specify a COM port, automagically select one from list
            if (distinctPorts.SingleOrDefault() != null)
            {
                _serialPortName = distinctPorts.Single();
            }

            return(_serialPortName);
        }
        /// <summary>
        /// Get the available Com ports
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override Task <ComList> RequestComList(ComListRequest request, ServerCallContext context)
        {
            var comList = new ComList();

            try
            {
                var comPorts = SerialPortStream.GetPortNames();
                comList.ComPort.AddRange(comPorts);
            }
            catch (Exception e)
            {
                comList.Error = ServiceHelper.BuildError(e, Fatal);
            }

            return(Task.FromResult <ComList>(comList));
        }
Exemple #29
0
        public SerialPortStream Reset(SerialPortStream serialPort, SerialPortConfig config)
        {
            const int timeoutVirtualPortDiscovery  = 10000;
            const int virtualPortDiscoveryInterval = 100;

            Logger?.Info("Issuing forced 1200bps reset...");
            string currentPortName = serialPort.PortName;

            string[] originalPorts = SerialPortStream.GetPortNames();

            // Close port ...
            serialPort.Close();

            // And now open port at 1200 bps
            serialPort = new SerialPortStream(currentPortName, 1200)
            {
                Handshake = Handshake.DtrRts
            };
            serialPort.Open();

            // Close and wait for a new virtual COM port to appear ...
            serialPort.Close();

            string newPort = WaitHelper.WaitFor(
                timeoutVirtualPortDiscovery, virtualPortDiscoveryInterval,
                () => SerialPortStream.GetPortNames().Except(originalPorts).SingleOrDefault(),
                (i, item, interval) =>
                item == null
                        ? $"T+{i * interval} - Port not found"
                        : $"T+{i * interval} - Port found: {item}"
                );

            if (newPort == null)
            {
                throw new ArduinoUploaderException($"No (unambiguous) virtual COM port detected (after {timeoutVirtualPortDiscovery}ms).");
            }

            return(new SerialPortStream {
                BaudRate = config.BaudRate,
                PortName = newPort,
                DataBits = 8,
                Parity = Parity.None,
                StopBits = StopBits.One,
                Handshake = Handshake.DtrRts
            });
        }
Exemple #30
0
        public Dictionary <string, int> GetAvailablePortsAndAutoDiscover()
        {
            trackers = new Dictionary <string, int>();
            foreach (string portName in SerialPortStream.GetPortNames())
            {
                Console.WriteLine("Autodiscover port:");
                Console.WriteLine(portName);
                try
                {
                    autoDiscoverPort = new SerialPortStream(portName, 115200, 8, Parity.None, StopBits.One)
                    {
                        StopBits     = StopBits.One,
                        WriteTimeout = 1000,
                        ReadTimeout  = 3000
                    };
                    stopWatch = new Stopwatch();
                    stopWatch.Start();
                    autoDiscoverPort.DataReceived += SerialPortAutoDiscover;
                    autoDiscoverPort.Open();
                    autoDiscoverPort.WriteLine(SerialMessageParser.Encode("DISCOVERY"));
                }
                catch (UnauthorizedAccessException)
                {
                    autoDiscoverPort.Close();
                }
                catch (System.IO.IOException)
                {
                    autoDiscoverPort.Close();
                }
                catch (TimeoutException)
                {
                    autoDiscoverPort.Close();
                }

                while (autoDiscoverPort.IsOpen)
                {
                    if (stopWatch.ElapsedMilliseconds >= 3000)
                    {
                        autoDiscoverPort.Close();
                    }
                }
                autoDiscoverPort.Dispose();
            }
            return(trackers);
        }