Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2017, 05:43
REHome
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 11 meses
Puntos: 8
Modificar este código de ejemplo-

Hola:

Tengo este código sacado en este enlace.
Código:
using System;
using System.IO.Ports;

class PortDataReceived
{
    public static void Main()
    {
        SerialPort mySerialPort = new SerialPort("COM1");

        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;
        mySerialPort.RtsEnable = true;

        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

        mySerialPort.Open();

        Console.WriteLine("Press any key to continue...");
        Console.WriteLine();
        Console.ReadKey();
        mySerialPort.Close();
    }

    private static void DataReceivedHandler(
                        object sender,
                        SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("Data Received:");
        Console.Write(indata);
    }
}
https://msdn.microsoft.com/es-es/lib...or=-2147217396

Quiero añadirle algo como este código de abajo y no me sale.

Código:
int cantidadBytes = int.Parse(indata);
                byte[] datosArray = new byte[cantidadBytes];

                Console.WriteLine(datosArray);

                switch (indata)
                {
                    case "A1":
                        Thread.Sleep(100); // Retardo.
                        byte[] miBuffer = Encoding.ASCII.GetBytes("OK1"); // Codificación ASCII.
                        sp.Write(miBuffer, 0, miBuffer.Length); // Envía OK1 al puerto serie.
                        break;

                    case "A2":
                        Thread.Sleep(100); // Retardo.
                        byte[] miBuffer2 = Encoding.ASCII.GetBytes("OK2"); // Codificación ASCII.
                        sp.Write(miBuffer2, 0, miBuffer2.Length); // Envía OK2 al puerto serie.
                        break;

                    default:
                        // Código si no es A1 ni A2.
                        break;
                }
El el puerto me llegua un dato, ejemplo "A1", se tiene que ejecutar el switch. Como "A1" es un string. Lo malo que se me almacena en la variable tipo int llamado cantidadBytes.

¿Existe algún truco para ejecutar A1 de alguna forma?

Recibo por el puerto serie el primer dato que es un número, por ejemplo 17729. Este número es el tamaño de un array en este caso se llama datosArray. Por supuesto que primero este valor en este caso 17729 se almacena en la variable cantidadBytes.

Saludos.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar