Example #1
0
        /// <summary>
        /// ES: Carga los puertos serial a un comboBox.
        /// </summary>
        /// <param name="CB_SerialPorts">ES: ComboBox donde se deben cargar los datos</param>
        public void LoadSerialPorts(ComboBox CB_SerialPorts)
        {
            CB_SerialPorts.Items.Clear();
            CB_SerialPorts.DisplayMemberPath = "Name";
            CB_SerialPorts.SelectedValuePath = "Name";
            List <string> availablesPorts = SerialPort.GetPortNames().ToList();

            foreach (string port in availablesPorts)
            {
                SDA_Core.Business.Port newPort = new SDA_Core.Business.Port(port);
                CB_SerialPorts.Items.Add(newPort);
            }
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="DG_SerialMonitor">ES: DataGrid donde se deben realizar los cambios.</param>
        /// <param name="CB_SerialPort">ES: ComboBox donde se encuentra el serialPort seleccionado.</param>
        /// <param name="CB_BaudRate">ES: ComboBox donde se encuentran el baudRate seleccionado.</param>
        /// <param name="G_Serial">ES: Grid a bloquear cambios a las configuraciones durante la comunicación.</param>
        /// <param name="G_Sensors">ES: Grid a bloquear cambios a las configuraciones durante la comunicación.</param>
        /// <param name="B_Connect">ES: Botón a bloquear cambios a las configuraciones durante la comunicación.</param>
        public void StartConnection(DataGrid DG_SerialMonitor, ComboBox CB_SerialPort, ComboBox CB_BaudRate, Grid G_Serial, Grid G_Sensors, Button B_Connect)
        {
            // Validaciones
            if (CB_SerialPort.SelectedItem == null)
            {
                MessageBox.Show("Select a port.", "Error", MessageBoxButton.OK);
                return;
            }
            if (CB_BaudRate.SelectedItem == null)
            {
                MessageBox.Show("Select a baud rate.", "Error", MessageBoxButton.OK);
                return;
            }
            if (selectedSensors.List.Size == 0)
            {
                MessageBox.Show("Not selected sensors.", "Error", MessageBoxButton.OK);
                return;
            }
            // Se limpia el SerialMonitor
            DG_SerialMonitor.DataContext = null;

            // Se obtiene el puerto y el baudRate
            SDA_Core.Business.Port      port     = (SDA_Core.Business.Port)CB_SerialPort.SelectedItem;
            SDA_Core.Business.BaudRates baudrate = (SDA_Core.Business.BaudRates)CB_BaudRate.SelectedItem;

            // Se inicializa el objeto que recibira los datos procesados.
            communication = new SDA_Core.Business.Arrays.SensorData();
            for (int i = 0; i < selectedSensors.List.Size; ++i)
            {
                for (int j = 0; j < selectedSensors.List[i].Columns.Size; ++j)
                {
                    communication.Columns.Add(selectedSensors.List[i].Columns[j]);
                }
            }

            // Se inicializa el objeto que realizará la conexión a serial.
            serialConnection = new SerialPort(port.Name, baudrate.Value);

            // Se intenta la conexión con el arduino.
            try
            {
                // Si se abre la conexion, se bloquea el interfaz de configuraciones y en un nuevo hilo se abre el método que escuchara y procesará los datos del arduino.
                serialConnection.Open();
                if (serialConnection.IsOpen)
                {
                    Thread thread = new Thread(() => OpenSerialConnection());
                    thread.Start();
                    UpdateMonitor(DG_SerialMonitor);
                    G_Sensors.IsEnabled = false;
                    G_Serial.IsEnabled  = false;
                    B_Connect.IsEnabled = false;
                }
                else
                {
                    MessageBox.Show("Can't connect.", "Unknown error", MessageBoxButton.OK);
                    return;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Exception found", MessageBoxButton.OK);
                return;
            }
        }