Puerto serie con C# Aintzane Conde Puerto serie con C# Puerto serie con C# Aintzane Conde Puerto serie con C# Se trata de crear una aplicación para poder utilizar datos recibidos y/o enviados desde un puerto serie. Abrimos un nuevo proyecto de Microsoft Visual C# Express 2010. Puerto serie con C# Aintzane Conde Para leer datos desde el puerto serie debemos añadir al formulario un Serialport (puerto serie) desde el Cuadro de Herramientas (Componentes), al que le cambiaremos las siguientes propiedades: • • • (Name):PuertoSerie. BaudRate: es la velocidad en bps. PortName: aparece por defecto COM1. Podremos saber qué puerto estamos utilizando así: ◦ En Windows XP: Inicio, Panel de Control, Sistema, Administrador de dispositivos, Puertos(COM y LPT). ◦ En Windows Vista: Inicio, Panel de Control, Hardware y Sonido, Administrador de dispositivos, Puertos (COM y LPT). También tenemos la opción, en el Panel de Control, de ir a la Vista Clásica y seguir los pasos de Windows XP. Por otra parte, en Eventos, pincharemos en DataReceived para que nos aparezca PuertoSerie_DataReceived. También arrastraremos un RichTextBox (Controles Comunes) al que llamaremos (propiedad (Name))rtbTexto. Haciendo doble click encima del control PuertoSerie anteriormente citado, escribiremos el código. Puerto serie con C# Aintzane Conde Código (leer los datos) using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { CheckForIllegalCrossThreadCalls = false; InitializeComponent(); try { PuertoSerie.Open(); } catch (Exception ex) { MessageBox.Show("Error al abrir el puerto serie: " + ex.Message); } } } private void PuertoSerie_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { rtbDatos.AppendText(PuertoSerie.ReadLine()); } } Código (guardar los datos) using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { CheckForIllegalCrossThreadCalls = false; InitializeComponent(); try { PuertoSerie.Open(); } Puerto serie con C# } Aintzane Conde catch (Exception ex) { MessageBox.Show("Error al abrir el puerto serie: " + ex.Message); } private void spPuertoSerie_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string Linea; Linea = spPuertoSerie.ReadLine(); rtbDatos.AppendText(Linea); } } } Código (usar los datos) En el caso en el que queramos usar los datos, en varios puntos del programa, es recomendable declarar la variable Linea como variable global. Esto se realiza de la siguiente manera: using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { CheckForIllegalCrossThreadCalls = false; InitializeComponent(); try { PuertoSerie.Open(); } catch (Exception ex) { MessageBox.Show("Error al abrir el puerto serie: " + ex.Message); } } internal static string Linea; private void spPuertoSerie_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { Linea = spPuertoSerie.ReadLine(); rtbDatos.AppendText(Linea); }