Hola:
Deja ver si me expreso mejor.
Hice una interfaz.
Donde pone Mensajes desde Arduino: Como vez en la imagen no le hagas caso, ahora pone:
1=ON 2=ON 3=OFF 4=OFF
En la variable Recibidos me sale toda esa cadena y no puedo entrar en el switch porque debo partirlo y no se como hacerlo por mucho que use split, no se usarlo como quiero.
El código completo del programa es este:
Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar.
namespace Entrada_Arduino_AWF_3_CS
{
public partial class Form1 : Form
{
// Utilizaremos un string como buffer de recepción.
string Recibidos;
public Form1()
{
InitializeComponent();
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(Recepcion);
}
}
// Al recibir datos.
private void Recepcion(object sender, SerialDataReceivedEventArgs e)
{
// Acumula los caracteres recibidos a nuestro 'buffer' (string).
Recibidos += serialPort1.ReadExisting();
// Invocar o llamar al proceso de tramas.
Invoke(new EventHandler(Actualizar));
}
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
//// Asignar el valor de la trama al richTextBox.
//richTextBox1.Text = Recibidos + "\n";
//// Selecciona la posición final para leer los mensajes entrantes.
//richTextBox1.SelectionStart = richTextBox1.Text.Length;
//// Mantiene el scroll en la entrada de cada mensaje.
//richTextBox1.ScrollToCaret();
switch (Recibidos)
{
case "1=ON":
pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
Recibidos = "";
break;
case "1=OFF":
pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
Recibidos = "";
break;
case "2=ON":
pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
Recibidos = "";
break;
case "2=OFF":
pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
Recibidos = "";
break;
case "3=ON":
pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
Recibidos = "";
break;
case "3=OFF":
pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
Recibidos = "";
break;
case "4=ON":
pictureBox1.Image = Properties.Resources.Led_rojo_encendido;
Recibidos = "";
break;
case "4=OFF":
pictureBox1.Image = Properties.Resources.Led_rojo_apagado;
Recibidos = "";
break;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) // ¿El puerto está abierto?
{
serialPort1.Close(); // Puerto cerrado.
}
}
}
}
Un cordial saludo y disculpen por las molestias.