Tengo este código sacado en este enlace.
Código:
https://msdn.microsoft.com/es-es/lib...or=-2147217396using 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); } }
Quiero añadirle algo como este código de abajo y no me sale.
Código:
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.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; }
¿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.