Está en la página 1de 6

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 aplicacin 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 aadir 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). Tambin tenemos la opcin, en el Panel de
Control, de ir a la Vista Clsica y seguir los pasos de Windows XP.

Por otra parte, en Eventos, pincharemos en DataReceived para que nos aparezca
PuertoSerie_DataReceived.

Tambin arrastraremos un RichTextBox (Controles Comunes) al que llamaremos (propiedad


(Name))rtbTexto.

Haciendo doble click encima del control PuertoSerie anteriormente citado, escribiremos el cdigo.
Puerto serie con C# Aintzane Conde

Cdigo (leer los datos)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using 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());
}
}
}
Puerto serie con C# Aintzane Conde

Cdigo (guardar los datos)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using 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 spPuertoSerie_DataReceived(object sender,


System.IO.Ports.SerialDataReceivedEventArgs e)
{
string Linea;
Linea = spPuertoSerie.ReadLine();
rtbDatos.AppendText(Linea);
}
}
}
Puerto serie con C# Aintzane Conde

Cdigo (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 System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using 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);
}