Example #1
0
        public override void ReadFromConfig()
        {
            ComPort  = GetConfigString("COM1", "ComPort");
            BaudRate = GetConfigInt(57600, "BaudRate");

            ComPorts.Clear();
            foreach (var port in SerialPort.GetPortNames())
            {
                ComPorts.Add(port);
            }
            if (ComPorts.Count == 0)
            {
                ComPorts.Add("COM1");
            }

            BaudRates.Clear();
            BaudRates.Add(300);
            BaudRates.Add(1200);
            BaudRates.Add(2400);
            BaudRates.Add(4800);
            BaudRates.Add(9600);
            BaudRates.Add(14400);
            BaudRates.Add(19200);
            BaudRates.Add(28800);
            BaudRates.Add(38400);
            BaudRates.Add(57600);
            BaudRates.Add(115200);
        }
Example #2
0
        private void RefreshComPorts()
        {
            var coms = SerialPort.GetPortNames();

            foreach (var p in coms)
            {
                if (!ComPorts.Contains(p))
                {
                    ComPorts.AddSorted(p);
                }
            }

            foreach (var p in ComPorts.ToList())
            {
                if (!coms.Contains(p))
                {
                    ComPorts.Remove(p);
                }
            }

            if (SelectedComPort == null && ComPorts.Count > 0)
            {
                SelectedComPort = ComPorts.First();
            }
        }
        public void LoadPorts()
        {
            IEnumerable <string> ports    = SerialReader.GetAvailablePorts();
            List <string>        toChange = new List <string>();

            //Search not non-existent
            foreach (var port in ComPorts)
            {
                if (!ports.Contains(port))
                {
                    toChange.Add(port);
                }
            }
            //Delete not non-existent
            ComPorts.RemoveRange(toChange);
            toChange.Clear();
            //Search New
            foreach (var port in ports)
            {
                if (!ComPorts.Contains(port))
                {
                    toChange.Add(port);
                }
            }
            //Add New
            ComPorts.AddRange(toChange);
            //Select One if needed
            if (SelectedComPort == null || !ComPorts.Contains(SelectedComPort))
            {
                SelectedComPort = ComPorts.FirstOrDefault();
            }
        }
        /// <summary>
        /// Closes open serial connection
        /// </summary>
        /// <returns></returns>
        private async Task CloseSerial()
        {
            try
            {
                IsBusy = true;
                var comms = Globals.Serials;
                var query = ComPorts.Select((value, index) => new { value, index })
                            .Where(x => x.value.Name == _comPort)
                            .Select(x => x.index)
                            .Take(1);
                var idx = query.ElementAt(0);

                // Closes the port only if it is currently open
                if (ComPorts[idx].Used)
                {
                    // Send message to close the tab attached that is attached to the serial port that is being closed
                    (Application.Current.Properties["MessageBus"] as MessageBus)
                    .Publish(new MessageCenter("closeTab", new Tuple <string, string>(_comPort, comms[_comPort].SerialNo)));

                    comms.Remove(_comPort);
                    ComPorts[idx].Used = false;
                    Globals.Logger.LogInformation($"Closed serial port {_comPort}");
                }
            }
            finally
            {
                IsBusy  = false;
                COMPORT = "          ";
            }
        }
Example #5
0
        // Conexion al arduino.
        // Connection to Arduino.
        private void ConnectArduino()
        {
            string portComSelected = ComPorts.GetItemText(ComPorts.SelectedItem);

            ArduinoPort = new SerialPort(portComSelected, 9600, Parity.None, 8, StopBits.One); // Initialize serial port.

            try
            {
                Conexion = true;  // Establecer la conexion en TRUE para validar. || This value validate if arduino and APP are binded.
                ArduinoPort.Open();
                // Estilos que cambian al modificar la conexion.
                // EN: Styles for form button and label.
                Connection_btn.Text      = "CLOSE";
                Connection_btn.BackColor = Color.Crimson;
                StateLevel_lb.Text       = "CONNECTED";
                StateLevel_lb.ForeColor  = Color.FromArgb(6, 214, 160);

                // ES: Activa los controles
                // EN: Enable the controls
                Red_Controller.Enabled   = true;
                Green_Controller.Enabled = true;
                Blue_Controller.Enabled  = true;
            }
            catch (Exception e)
            {
                MessageBox.Show("Error: " + e.Message, "EXCEPTION.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Example #6
0
        public void Init()
        {
            this.ComPorts = new ObservableCollection <string>();
            LlenarComPorts();

            this.SelectedComPortUno  = ComPorts.FirstOrDefault(c => c == Properties.Settings.Default.ComPortUno);
            this.SelectedComPortNano = ComPorts.FirstOrDefault(c => c == Properties.Settings.Default.ComPortNano);
        }
Example #7
0
 public void RefreshCOM()
 {
     string[] ports = SerialPort.GetPortNames();
     foreach (var port in ports)
     {
         ComPorts.Add(port);
     }
 }
Example #8
0
 private void AddPort(string port)
 {
     for (int j = 0; j < ComPorts.Count; j++)
     {
         if (port.CompareTo(ComPorts[j]) < 0)
         {
             ComPorts.Insert(j, port);
             break;
         }
     }
 }
Example #9
0
    // Use this for initialization
    void Start()
    {
        //Create python engine
        m_engine = Python.CreateEngine();
        cwd      = Directory.GetCurrentDirectory();
        unityCwd = Directory.GetCurrentDirectory();

        //Connect to gamobject comports
        //TODO: Initialize here only
        comPorts = GetComponent <ComPorts>();
        Debug.Log("comports " + comPorts);
    }
Example #10
0
        public MainViewModel()
        {
            OpenFile = new RelayCommand(() =>
            {
                OpenFileDialog openFileDialog = new OpenFileDialog {
                    Filter = "Text files (*.txt)|*.txt"
                };
                if (openFileDialog.ShowDialog() != true)
                {
                    return;
                }

                SenderTextBox = File.ReadAllText(openFileDialog.FileName);
            });

            Send = new RelayCommand(() =>
            {
                if (_modemTalking == null || _selectedCom == null)
                {
                    MessageBox.Show("Choose serial port.");
                    return;
                }

                if (SenderTextBox == null)
                {
                    MessageBox.Show("Enter message to be sent.");
                    return;
                }

                _modemTalking.Send(SenderTextBox);
            });

            RefreshPorts = new RelayCommand(() =>
            {
                _modemTalking?.Close();
                _selectedCom = null;
                ComPorts?.Clear();
                foreach (var portName in SerialPort.GetPortNames())
                {
                    ComPorts?.Add(portName);
                }
            });

            ClosePorts = new RelayCommand(() => { _modemTalking?.Close(); });
        }
Example #11
0
        private void CheckForNewPortsAsync()
        {
            IEnumerable <string> ports = SerialPort.GetPortNames().OrderBy(s => s);

            foreach (string comPort in ComPorts)
            {
                if (!ports.Contains(comPort))
                {
                    ComPorts.Remove(comPort);
                }
            }
            foreach (var port in ports)
            {
                if (!ComPorts.Contains(port))
                {
                    AddPort(port);
                }
            }
        }
Example #12
0
        private void SetDefaultComPorts()
        {
            SerialPort.GetPortNames().ToList().ForEach(ComPorts.Add);

            //Autoselect for EdgePort hookup
            if (ComPorts.Count > 3)
            {
                var number = new Regex(@"(\d+)$");

                //Take last 4
                var edgeport = ComPorts.Select(c => new { Port = c, Numer = int.Parse(number.Match(c).Value) })
                               .OrderByDescending(c => c.Numer).Take(4).OrderBy(c => c.Numer).ToArray();
                // .Take(4)
                // (n => ).ToArray();
                ELComPort = edgeport[1].Port;
                ADComPort = edgeport[0].Port;
                DVComPort = edgeport[2].Port;
            }
        }
Example #13
0
        public MainWindow()
        {
            Log.Register(LogHandler);
            Logs        = new ObservableCollection <string>();
            ComPorts    = SerialPort.GetPortNames().ToList();
            ArduinoPort = ComPorts.FirstOrDefault();
            DataContext = this;
            InitializeComponent();

            var wrapService = new WrapService();

            wrapService.Add(_arduinoAdalightService);

            _ledMatrixPreviewService.LedArray = LedArrayPreview;
            wrapService.Add(_ledMatrixPreviewService);

            _processor = new Processor();
            _processor.Run(wrapService);

            MinimizeToTray.Enable(this);
        }
Example #14
0
        private void Construct()
        {
            ComPort        = Properties.Settings.Default.LastUsedComPort;
            OwnPhoneNumber = "5555555555";
            BaudRate       = Properties.Settings.Default.LastUsedBaudRate.ToString();
            DataBits       = 8;
            StopBits       = 1;
            ParityBits     = "None";
            ReadTimeout    = 300;
            WriteTimeout   = 300;

            foreach (string s in System.IO.Ports.SerialPort.GetPortNames())
            {
                ComPorts.Add(s);
            }

            BaudRates.Add("4800");
            BaudRates.Add("9600");
            BaudRates.Add("19200");
            BaudRates.Add("38400");
            BaudRates.Add("57600");
        }
Example #15
0
 void Awake()
 {
     //Get available COM ports
     availablePorts = new ComPorts();
     EnfluxVRSuit.startScanPorts(availablePorts);
 }
        /// <summary>
        /// Code used to create/open meter object and create a tab for this item
        /// </summary>
        public async Task <string> CreateNewMeter()
        {
            Dictionary <string, Meter> meters = Globals.Meters;

            // Logs into meter and retrieves it's ID
            _id = await _serial.SetupSerial(_comPort);

            if (_id == "")
            {
                InfoView      info = null;
                InfoViewModel ifvm = new InfoViewModel("Unable to Connect", "COM Port already open, close port or choose another COM...");

                Application.Current.Dispatcher.Invoke(() =>
                {
                    info = new InfoView
                    {
                        Owner = Application.Current.MainWindow,
                        WindowStartupLocation = WindowStartupLocation.CenterOwner,
                        DataContext           = ifvm
                    };

                    info.Show();
                });

                return(null);
            }

            var query = ComPorts.Select((value, index) => new { value, index })
                        .Where(x => x.value.Name == _comPort)
                        .Select(x => x.index)
                        .Take(1);

            ComPorts[query.ElementAt(0)].Used = true;

            // Creates new meter if imported meters do not match current meter
            if (!meters.ContainsKey(_id))
            {
                Globals.Logger.LogInformation($"Creating new meter for {_id}");
                meters.Add(_id, new Meter());
                var meter = meters[_id];
                meter.ID = _id;

                // Sets the size of the meter based on the type/version of meter connected
                string version = await _serial.GetVersion();

                string[] lines   = version.Split(new char[] { '\n', '\r' }, System.StringSplitOptions.RemoveEmptyEntries);
                string   inspect = "";
                bool     stop    = false;
                foreach (string line in lines)
                {
                    if (line.ToLower().Contains("software"))
                    {
                        stop = true;
                    }
                    else if (stop)
                    {
                        inspect = line;
                        break;
                    }
                }

                var      cols    = inspect.Split(new char[0], System.StringSplitOptions.RemoveEmptyEntries);
                string[] serials = (await _serial.GetChildSerial()).Split(',');
                if (cols[1] == "59330354")
                {
                    meter.Firmware      = cols[1];
                    _serial.NewFirmware = true;
                    // Retrieves child serial numbers and assigns them to respective channel
                    for (int i = 0; i < 12; i++)
                    {
                        meter.Channels.Add(new Channel(i + 1));
                        meter.Channels[i].Serial = serials[i];
                    }

                    Globals.Logger.LogInformation($"Meter {_id} has firmware version {meter.Firmware}.");
                }
                else if (cols[1] == "59330353")
                {
                    meter.Firmware = cols[1];
                    // Retrieves child serial numbers and assigns them to respective channel
                    for (int i = 0; i < 12; i++)
                    {
                        meter.Channels.Add(new Channel(i + 1));
                        meter.Channels[i].Serial = serials[i];
                    }
                    Globals.Logger.LogInformation($"Meter {_id} has firmware version {meter.Firmware}.");
                }
                else
                {
                    InfoView      info = null;
                    InfoViewModel ifvm = new InfoViewModel("Bad Firmware Version", $"Invalid Firmware Version {cols[1]}");

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        info = new InfoView
                        {
                            Owner = Application.Current.MainWindow,
                            WindowStartupLocation = WindowStartupLocation.CenterOwner,
                            DataContext           = ifvm
                        };

                        info.Show();
                    });

                    return(null);
                }
            }
            else
            {
                // Firmware was not populated from the file so read directly from the meter
                if (meters[_id].Firmware == null)
                {
                    string version = await _serial.GetVersion();

                    string[] lines   = version.Split(new char[] { '\n', '\r' }, System.StringSplitOptions.RemoveEmptyEntries);
                    string   inspect = "";
                    bool     stop    = false;
                    foreach (string line in lines)
                    {
                        if (line.ToLower().Contains("software"))
                        {
                            stop = true;
                        }
                        else if (stop)
                        {
                            inspect = line;
                            break;
                        }
                    }

                    var cols = inspect.Split(new char[0], System.StringSplitOptions.RemoveEmptyEntries);
                    meters[_id].Firmware = cols[1];
                    Globals.Logger.LogInformation($"Meter {_id} has firmware version {meters[_id].Firmware}.");
                }

                // This is an unknown firmware version, print message to user and exit
                if (meters[_id].Firmware != "59330353" && meters[_id].Firmware != "59330354")
                {
                    InfoView      info = null;
                    InfoViewModel ifvm = new InfoViewModel("Bad Firmware Version", $"Invalid Firmware Version {meters[_id].Firmware}");

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        info = new InfoView
                        {
                            Owner = Application.Current.MainWindow,
                            WindowStartupLocation = WindowStartupLocation.CenterOwner,
                            DataContext           = ifvm
                        };

                        info.Show();
                    });

                    return(null);
                }
                else
                {
                    _serial.NewFirmware = (meters[_id].Firmware == "59330354");
                }
            }

            return(_id);
        }
Example #17
0
        public MainViewModel()
        {
            OpenFile = new RelayCommand(() =>
            {
                OpenFileDialog openFileDialog = new OpenFileDialog {
                    Filter = "Text files (*.txt)|*.txt"
                };
                if (openFileDialog.ShowDialog() != true)
                {
                    return;
                }

                SenderTextBox = File.ReadAllText(openFileDialog.FileName);
            });

            Send = new RelayCommand(() =>
            {
                if (_senderModem == null || _selectedSenderCom == null)
                {
                    MessageBox.Show("Choose serial port.");
                    return;
                }

                if (SenderTextBox == null)
                {
                    MessageBox.Show("Enter message to be sent.");
                    return;
                }

                Task.Run(() => _senderModem.Send(Encoding.GetEncoding(28591).GetBytes(SenderTextBox)));
            });

            BackgroundWorker reciveWorker = new BackgroundWorker();

            reciveWorker.DoWork             += ReciveMessage;
            reciveWorker.RunWorkerCompleted += ReciveWorker_RunWorkerCompleted;

            Receive = new RelayCommand(() =>
            {
                if (_reciverModem == null)
                {
                    MessageBox.Show("Choose serial port.");
                    return;
                }

                if (!reciveWorker.IsBusy)
                {
                    reciveWorker.RunWorkerAsync();
                }
            });

            RefreshPorts = new RelayCommand(() =>
            {
                _senderModem?.Close();
                _reciverModem?.Close();
                _selectedReciverCom = null;
                _selectedSenderCom  = null;
                ComPorts?.Clear();
                foreach (var portName in SerialPort.GetPortNames())
                {
                    ComPorts?.Add(portName);
                }
            });
        }