Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/12/2015, 19:58
REHome
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 11 meses
Puntos: 8
Respuesta: [C#] Cortar por lo sano

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.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar