Ejemplo n.º 1
0
        /// <summary>
        /// Автоматически определяем порт устройства
        /// </summary>
        /// <returns></returns>
        private string AutoDetectComPort()
        {
            var portNames = new List<string>(SerialPort.GetPortNames());

            // Если не получилось извлечь список ком. портов из HKLM\Hardware\DeviceMap\SerialComm,
            // то составляем их искусственно:
            //            if (portNames.Count == 0)
            //                for (var i = 1; i <= ConfigHelper.MaxPorts; i++)
            //                    portNames.Add(string.Format("COM{0}", i));

            // Перед автообновлением порта, закроем текущий:
            _device.Close();

            var tempDevice = new GlobalSat.GlobalSat(baudRate: ConfigHelper.BaudRate);
            try
            {
                var portFind = false;
                for (var i = 0; i < portNames.Count; i++)
                {
                    tempDevice.SetPort(portNames[i], ConfigHelper.BaudRate);
                    var id = tempDevice.GetId();

                    if (id == -1)
                    {
                        continue;
                    }

                    portFind = true;
                    break;
                }

                tempDevice.Close();

                if (!portFind)
                {
                    AddItemToConsole("Устройство не найдено.", Color.Red);
                    return ConfigHelper.Port;
                }

                return tempDevice.PortName;
            }
            catch
            {
            //                AddItemToConsole("Устройство либо не подключено, либо настроено неверно.", Color.Red);
                return ConfigHelper.Port;
            }
        }