/// <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); } }
/// <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; } }