Como manejar el puerto serie en c#

[singlepic id=2 w=320 h=240 float=right]Para manejar el puerto serie en C# es una tarea relativamente sencilla, esto por permitirá conectarnos a infinidad de dispositivos electrónicos que utilizan este medio para comunicarse con el ordenador. La forma mas habitual de conectar nuestro programa con cualquier dispositivo electrónico (Arduino, …, etc.) suele ser mediante el puerto serie, ya sea por el tradicional RS232 o un puerto USB que funciona como un puerto serie. Para poder conectar nuestros programas hechos en c# con estos dispositivos, este nos facilita un control para poder realizar este tipo de comunicaciones. Este control es el “SerialPort”. Para poder utilizarlo tenemos dos maneras, 1º arrastrándolo desde la barra de controles hasta nuestro programa o, la otra forma de crearlo es desde nuestro propio código C#. Como la primera es obvio lo que hay que hacer, paso a explicar la segunda forma.

Inicialización del control Serial Port por código en C#.

Lo primero que tenemos que hacer es añadir un nuevo “using” para agregar todos objetos relacionados con el manejo de puertos, System.IO.Ports, una vez que ya tengamos esto insertado en nuestro codigo, ya podemos pasar ha definir la variable que contendrá nuestro control Serial Port, de la siguiente manera.

// Creamos la variable para el manejo del puerto serie
SerialPort spPuertoSerie = new SerialPort(
           "COM1", 9600, Parity.None, 8, StopBits.One);

De esta forma creamos el objeto “spPuertoSerie”, que le hemos paso como parametros:

  • Nombre del puerto: el puerto al que nos queremos conectar, en el ejemplo “COM1”.
  • Velocidad de transmisión: la velocidad de trasmisión.
  • Paridad: Sirve para verificar si hay errores en la transmisión. Existen cuatro tipos posibles de paridad: par (even), impar (odd), marcada (mark) y espaciada (space). También esta permitido no usar paridad (none), como en el ejemplo.
  • Bits de datos: Es la cantidad de datos que se van ha enviar en cada paquete. Este valor puede ser 5, 7 u 8. Valor más habitual es el 8.
  • Bits de parada: Indica el final del paquete, Los valores permitidos son 1, 1.5 o 2. También vale para la sincronización de la comunicación.

También podemos crear nuestro objeto de una manera mas sencilla, si no conocemos los parámetros de la comunicación.

// Creamos la variable para el manejo del puerto serie
SerialPort spPuertoSerie = new SerialPort();

Para pasar los parámetros lo podemos hacer de esta otra forma:

// Parametros para iniciar el puerto serie
spPuertoSerie.PortName = "COM1";
spPuertoSerie.BaudRate = 9600;
spPuertoSerie.Parity = Parity.None;
spPuertoSerie.StopBits = StopBits.One;
spPuertoSerie.DataBits = 8;

Después de tener ya creado nuestro objeto que se va ha encargar de la comunicación, solo falta abrir la comunicación de la siguiente manera.

// Abrir la comunicación
spPuertoSerie.Open();

Parta cerrar la comunicación del puerto serie lo haremos de la siguiente forma.

// Cerrar la comunicación
spPuertoSerie.Close();

Y con esto ya tenemos resuelto el problema de la comunicación con los dispositivos mediante el puerto serie. Ahora solo queda la recepción y envió de los datos. Pero eso sera en otro post.

Espero que te sirva de ayuda.

5 comentarios sobre “Como manejar el puerto serie en c#”

      1. No pienses que los datos que envías tienen formato, “100,89”, puede ser para ti un float pero realmente es un 1 un 0 otro 0 una coma un 8 y 9, código ascii, una cadena de caracteres, cuando lo leas es cuando lo interpretas como quieras, por ejemplo si solo lo vas ha mostrar, en formato string te vale, si vas hacer algún calculo, conviertes de string a float. Pero el envío siempre sera una cadena de códigos ascii, un sring. Lo que tienes que tener muy claro en cada momento, es lo que vas hacer con esos datos que estas recibiendo, y si soportan el tipo con el que vas ha trabajar. Si mando “hola”, en el otro lado no voy ha intentar convertirlo en un int, por ejemplo. Solo tienes que saber manejar los comandos de conversión de tipos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.