Cómo Manejar El PUERTO SERIE en C#

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

Como manejar el puerto serie en c#

27 marzo, 2013 pruebas 5 comentarios

[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.

Publicaciones relacionadas

 Preguntar antes de cerrar un programa en C#


 Verificar en C# el formato de una dirección de e-mail
 Conectarse ha una base de datos MySql con C#
 Como cambiar el nombre de las columnas de un DataGridView en C#
 Leer ficheros XML a través de DataSet (c#)
Preguntar antes de cerrar un programa en C#
11 abril, 2013 pruebas Deja un comentario

[singlepic id=5 w=320 h=240 float=right]Muchas veces cuando cerramos nuestro programa en C# necesitamos
verificar que realmente se quiere cerrar el programa. Para hacer esto solo necesitamos utilizar
la función “FormClosing”

private void Form1_FormClosing(object sender, FormClosingEventArgs e)


{
DialogResult dialogo = MessageBox.Show("¿Desea cerrar el programa?",
"Cerrar el programa", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialogo == DialogResult.No)
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}

Para cancelar el cierre de la aplicación solo tenemos que poner a “true” la función “e.cancel”, esto hará que se
cancele el cierre del programa.

A si de fácil y sencillo o no?


Verificar en C# el formato de una dirección de e-
mail
5 abril, 2013 pruebas 1 comentario

[singlepic id=4 w=320 h=240 float=right]Cuando queremos que el usuario introduzca una dirección de e-mail
en nuestro programa en C#, siempre nos queda la duda si la dirección es correcta o no. El siguiente código en
C# nos permite comprobar que la dirección de e-mail que se introduzca este por lo menos en su formato
correcto, es decir, “nombre”@”Dominio”.”extensión”. Esta comprobación no asegura que la dirección sea
valida, solo que el formato introducido es el correcto.

Para hacer la comprobación nos ayudamos de la clase Regex, esta función permite mediante un patrón verificar


si una cadena cumple con ese patrón  Para poder utilizar la clase Regex tenemos que añadir el siguiente nombre
de espacio

using System.Text.RegularExpressions;

Código  que comprueba el formato del e-mail introducido:

public static bool ComprobarFormatoEmail(string sEmailAComprobar)


{
String sFormato;
sFormato = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
if (Regex.IsMatch(seMailAComprobar, sFormato))
{
if (Regex.Replace(seMailAComprobar, sFormato, String.Empty).Length == 0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}

La función nos devolverá “true”, si el formato del email es correcto, o “false” si el formato del email es
incorrecto. Ejemplo de como trabajar con la función.

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;

// Para la función regex


using System.Text.RegularExpressions;
namespace Verificar_Correo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public static bool ComprobarFormatoEmail(string seMailAComprobar)


{
String sFormato;
sFormato = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
if (Regex.IsMatch(seMailAComprobar, sFormato))
{
if (Regex.Replace(seMailAComprobar, sFormato, String.Empty).Length == 0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}

private void button1_Click(object sender, EventArgs e)


{
if (ComprobarFormatoEmail(tbEmail.Text) == false)
{
lEmailCorrecto.Text = "Dirección no valida";
lEmailCorrecto.ForeColor = Color.Red;
}
else
{
lEmailCorrecto.Text = "Dirección valida";
lEmailCorrecto.ForeColor = Color.Green;
}
}
}
}

Puedes descargar todos los ficheros desde aquí.

Descargar
Verificar Email en C#

Y esto es todo, sabiendo que el formato del email  es correcto, la siguiente comprobación seria saber si la
dirección es valida, es decir, si pertenece a una cuenta real. Pero eso sera para otro post.
Conectarse ha una base de datos MySql con C#
13 marzo, 2013 pruebas Deja un comentario

Para conectarse ha una base de datos en MySql lo primero que tenemos que hacer es agregar la siguiente linea a
nuestro programa

using MySql.Data.MySqlClient;

Con esto agregamos todos las funciones que necesitamos para poder manejar la conexión con el servidor de
MySql.

Lo siguiente que tendremos que hacer sera crear las variables que nos permitirá manejar la conexión con el
servidor de MySql deseado.

MySqlConnection dbConexion1 = new MySqlConnection();

Ahora lo que tenemos que hacer es pasarle los parámetros como la dirección del servidor de base de datos, el
nombre de la base datos ha la que queremos tener acceso, el nombre de usuario de la cuenta y su
correspondiente contraseña. Esto se puede hacer de la siguiente manera:

String sConexion;
sConexion1 = "Server=192.168.1.4;Database=BaseDeDatos;Uid=Usuario;Pwd=contrasenya;";

Creamos una variable string, luego le pasamos los valores anteriores con el siguiente formato:

 Server: Nombre o dirección del servidor de MySql


 Database: Nombre de la base de datos a la que queremos tener acceso.
 Uid: Nombre del que tiene acceso a esa base de datos.
 Pwd: Contraseña asignada a ese usuario.

Estos campos los tendremos que separar en la cadena que le pasemos a la variable con “;”.

Ahora solo tendremos que pasar la variable string  que acabamos de crear , al parámetro correspondiente en la
variable de la conexión

dbConexion1.ConnectionString = sConexion1;

Despues de esto solo nos queda decirle al conector que se conecte al servidor.

dbConexion1.Open();

Si esto no produce ningún error, como usuario no reconocido, contraseña incorrecta, servidor desconocido, etc,


ya tendremos acceso a la base de datos de MySql.

La verdad es que es muy sencillo, ¿A ti que te parece?


Como cambiar el nombre de las columnas de un
DataGridView en C#
7 marzo, 2013 pruebas Deja un comentario

Siguiendo con lo explicado en el post (Leer ficheros XML a través de DataSet (c#)) al final del post se muestra
un ejemplo de como leer un fichero xml con un dataset y se mostraba el contenido en un DataGribView. En este
ejemplo los nombres que aparecen en las cabeceras de las columnas son los nombres de los campos
que están en el fichero. Para modificar estos nombres solo hay que utilizar la siguiente función implementada
dentro del objeto DataGridView

dataGridView1.Columns[0].HeaderText = "TextoAMostrarEnLaCabecera";

El numero entre corchetes en Columns, en el ejemplo 0, es el numero de la columna que vamos a cambiar el
texto del encabezado. Las columnas empiezan ha enumerarse desde el 0, es decir la primera columna es la 0.

Ejemplo de funcionamiento.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Xml_DataSet_1
{
public partial class fLeerXmlDataSet : Form
{
// Objeto dataset para manejar el fichero
// no le ponemos nombre de la base de datos para poder abrir cualquier fichero
DataSet dsLeerFicheroXML = new DataSet();

public fLeerXmlDataSet()
{
InitializeComponent();
}

private void bAbrirFicheroXml_Click(object sender, EventArgs e)


{
// Limpiamos el contenido anterior
dsLeerFicheroXML.Clear();

// Creamos el objeto para abrir el fichero


OpenFileDialog odAbrirFicheroXML = new OpenFileDialog();
// Le ponemos un filtro para ver solamente los ficheros XML
odAbrirFicheroXML.Filter = "Ficheros Xml|*.xml";

// Montramos el dialogo para abrir el fichero XML


if (odAbrirFicheroXML.ShowDialog() == DialogResult.OK)
{
// Si se ha pulsado el boton de OK
// Le pasamos el nombre del fichero al DataSet para abrirlo
dsLeerFicheroXML.ReadXml(odAbrirFicheroXML.FileName);
// Le pasamos el contenido de la primera tabla del fichero al DataGridView
dgvLeerFicheroXML.DataSource = dsLeerFicheroXML.Tables[0];

// cambiamos el nombre de las columnas del DataDridView


for (int vCont = 0; vCont < dgvLeerFicheroXML.ColumnCount; vCont++)
{
dgvLeerFicheroXML.Columns[vCont].HeaderText = "Columna " + (vCont +
1).ToString();
}
}
}
}
}

Fácil, No?
Leer ficheros XML a través de DataSet (c#)
7 marzo, 2013 pruebas Deja un comentario

Para leer un fichero xml en c# se puede utilizar los componentes de manejo de base de datos. Esto
facilita enormemente su manejo.

Ejemplo de un fichero XML.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>


<NombreBaseDeDatos>
<NombreTabla1>
<NombreCampo1>Campo 1 Registro 1 Tabla 1</NombreCampo1>
<NombreCampo2>Campo 2 Registro 1 Tabla 1</NombreCampo2>
<NombreCampo3>Campo 3 Registro 1 Tabla 1</NombreCampo3>
<NombreCampo4>Campo 4 Registro 1 Tabla 1</NombreCampo4>
</NombreTabla1>
<NombreTabla2>
<NombreCampo1>Campo 1 Registro 1 Tabla 2</NombreCampo1>
<NombreCampo2>Campo 2 Registro 1 Tabla 2</NombreCampo2>
<NombreCampo3>Campo 3 Registro 1 Tabla 2</NombreCampo3>
<NombreCampo4>Campo 4 Registro 1 Tabla 2</NombreCampo4>
</NombreTabla2>
<NombreTabla1>
<NombreCampo1>Campo 1 Registro 2 Tabla 1</NombreCampo1>
<NombreCampo2>Campo 2 Registro 2 Tabla 1</NombreCampo2>
<NombreCampo3>Campo 3 Registro 2 Tabla 1</NombreCampo3>
<NombreCampo4>Campo 4 Registro 2 Tabla 1</NombreCampo4>
</NombreTabla1>
</NombreBaseDeDatos>

Formato como se guarda la información en el fichero XML. El fichero en si es la base de datos, este puede
contener una base de datos o varias, dentro de este están las posibles tablas que pudiera tener esa base de datos.
Y estas a su vez contendrá los registros que tenga cada una de las tabla con sus respectivos campos.

Lectura de fichero XML

Para leer el fichero XML lo primero tendremos que crear un objeto del tipo “DataSet” para que maneje el
fichero. Hay dos formas de crearlo, sabiendo como se llama  nuestra base de datos o no.

Sin saber como se llama la base de datos:

// Crear el objeta DataSet sin conocer el nombre de la base de datos


DataSet dataSet1 = new DataSet();

Esto permite ver cualquier contenido del fichero.

Conociendo como se llama la base de datos:

// Crear el objeta DataSet conociendo el nombre de la base de datos


DataSet dataSet1 = new DataSet("NombreDeLaBaseDeDatos");

De esta otra forma solo se podrán manejar los datos que estén dentro de esa base de datos. Teniendo creado el
objeto DataSet solo queda asignarle el nombre que tiene el fichero XML.
dataSet1.ReadXml("RutayNombreDelFicheroXML");

Con esto ya tenemos configurado nuestra DataSet para leer los datos del fichero. A partir de aqui, se maneja de
la misma forma que cualquier otro DataSet que funcione con cualquier otro tipo de base de datos.

Ejemplo de funcionamiento.

Se lee el fichero y se muestra en un DataGridView

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Xml_DataSet_1
{
public partial class fLeerXmlDataSet : Form
{
// Objeto dataset para manejar el fichero
// no le ponemos nombre de la base de datos para poder abrir cualquier fichero
DataSet dsLeerFicheroXML = new DataSet();

public fLeerXmlDataSet()
{
InitializeComponent();
}

private void bAbrirFicheroXml_Click(object sender, EventArgs e)


{
// Limpiamos el contenido anterior
dsLeerFicheroXML.Clear();

// Creamos el objeto para abrir el fichero


OpenFileDialog odAbrirFicheroXML = new OpenFileDialog();
// Le ponemos un filtro para ver solamente los ficheros XML
odAbrirFicheroXML.Filter = "Ficheros Xml|*.xml";

// Montramos el dialogo para abrir el fichero XML


if (odAbrirFicheroXML.ShowDialog() == DialogResult.OK)
{
// Si se ha pulsado el boton de OK
// Le pasamos el nombre del fichero al DataSet para abrirlo
dsLeerFicheroXML.ReadXml(odAbrirFicheroXML.FileName);
// Le pasamos el contenido de la primera tabla del fichero al DataGridView
dgvLeerFicheroXML.DataSource = dsLeerFicheroXML.Tables[0];
}
}
}
}
Nota:

En un principio el puerto com no dispone de ningun meto para saber si hay algo conectado a el, pero si dispone
de un metodo que enumera los puertos com disponibles en el PC tanto fisicos como virtuales, que es
SerialPort.GetPortNames() que devuelve un array.

Con la ayuda de este metodo y un foreach, podrias ir cambiando el puerto y pedir el dato, si no hay dato ese
puerto no es, si hay respuesta es el puerto correcto. El codigo para que sea lo mas automatico posible podria ir
en el evento load del formulario.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;

namespace Consola_SERIAL1
{
class SerialPortExample
{
public static void Main()
{
// Get a list of serial port names.
string[] ports = SerialPort.GetPortNames();

Console.WriteLine("The following serial ports were found:");

// Display each port name to the console.


foreach (string port in ports)
{
Console.WriteLine(port);
}

Console.ReadLine();
}
}
}

También podría gustarte