Puertos con C#. Envio y Recepción de Datos.

Aprenderemos a abrir el puerto, enviar datos y recibirlos. La recepción de datos puede ser de forma síncrona o asíncrona. Yo voy a enfocar todo el artículo a la forma de recepción síncrona, ya que necesito leer la trama y dejar de leer cuando este todo recepcionado, así que tendremos que ir analizando cada byte que recibimos.

En primer lugar abrimos el puerto:

    public void AbrirPuertoSerie(string Puerto,int Velocidad)
        {

            try
            {

                if (_PuertoSerie.IsOpen)
                    _PuertoSerie.Close();
                _PuertoSerie.PortName = Puerto;
                _PuertoSerie.BaudRate = Velocidad;

                _PuertoSerie.Parity = System.IO.Ports.Parity.None;
                _PuertoSerie.DataBits = 8;
                _PuertoSerie.StopBits = System.IO.Ports.StopBits.One;
                _PuertoSerie.Handshake = System.IO.Ports.Handshake.None;

                _PuertoSerie.RtsEnable = false;
                _PuertoSerie.DtrEnable = true;

                //_PuertoSerie.DataReceived += new SerialDataReceivedEventHandler(com_DataReceived);
                //_PuertoSerie.ErrorReceived += new SerialErrorReceivedEventHandler(com_ErrorReceived);

                _PuertoSerie.Open();

            }
            catch (ArgumentOutOfRangeException Ex)
            {
                _Errores.add("AbrirPuertoSerie. " + Ex.Message);
            }
            catch (InvalidOperationException Ex)
            {
                _Errores.add("AbrirPuertoSerie. " + Ex.Message);
            }
            catch (ArgumentException Ex)
            {
                _Errores.add("AbrirPuertoSerie. " + Ex.Message);
            }
            catch (IOException Ex)
            {
                _Errores.add("AbrirPuertoSerie. " + Ex.Message);
            }
            catch (Exception ex)
            {
                _Errores.add("AbrirPuertoSerie. " + ex.Message);
            }

        }

Una vez abierto ya podremos hacer el envío de los datos.

Los datos, la trama, la construiremos con un List<byte> que es lo más cómodo de utilizar y el envío se produce sin errores. He tenido muchos problemas al enviar los datos como char, inexplicable.
Sigue leyendo