Índice
0. Introducción1. Problema
2. Solución
3. Discusión de la Solución
3.1 Clase SerialPort
3.2 Método static GetPortNames
4. Práctica: Código C#
5. Conclusiones
6. Glosario
7. Literatura & Enlaces
0. Introducción
Podríamos en algún momento requerir comunicarnos con un dispositivo que cuente únicamente con la interfaz serial COM, ya sea para escribir o recuperar datos; es por eso que en esta receta C# explicaremos el procedimiento para acceder a un puerto de esta categoría y escribir información sobre él. Para ello utilizaremos la clase SerialPort (NS: System.IO.Ports).
1. Problema
Debemos escribir datos sobre un puerto serial COM.
2. Solución
El namespace System.IO.Ports ofrece la clase SerialPort; clase diseñada para representar un puerto serial y permitir la comunicación para escritura y lectura de datos.
3. Discusión de la Solución
3.1 Clase SerialPort
La clase SerialPort [2] (System.IO) representa un puerto serial. Podemos usar la funcionalidad de esta clase para controlar un puerto serial. Entre las funcionalidades específicas de esta clase están [2]:
- Lectura/escritura sincrónica y orientada a eventos,
- Acceso a propiedades del controlador,
Por otra parte, entre los sistemas de codificación de caracteres soportados por esta clase están:
- ASCIIEncoding,
- UTF8Encoding,
- UnicodeEncoding,
- UTF32Encoding
3.2 Método static GetPortNames
Para obtener los nombres de los puertos seriales del equipo local usamos el método GetPortNames [3].
Ejemplo de uso:
Con la invocación del método static SerialPort.GetPortNames (línea 16) obtenemos un arreglo de objetos string con los nombres de los puertos seriales instalados en el equipo local. Con el ciclo foreach (línea 19-22) mostramos los nombres de los puertos en salida estándar.
Compilación:
- csc /target:exe UsoGetPortNames.cs
Ejecución assembly:
- .\UsoGetPortNames.exe
> Prueba de ejecución: http://ideone.com/hFMK8w
> Prueba de ejecución:
Figura 1. Ejecución assembly UsoGetPortNames.exe. |
4. Práctica: Código C#
Con la siguiente aplicación consola escribiremos una cadena de caracteres en el puerto serial COM1:
En la sentencia contextual using creamos un objeto SerialPort (línea 15) con el cual referenciamos el puerto serial COM1. En las líneas establecemos propiedades propias de esta categoría de puertos: velocidad de transmisión, paridad, tiempo de espera de lectura, etc. (líneas 18-21).
Con
puerto.Open();
(línea 24) abrimos la conexión del puerto COM1. Con puerto.Write escribimos la cadena de caracteres Blog xCSw en el puerto.
Compilación:
- csc /target:exe EscrituraEnCom1.cs
Ejecución assembly:
- .\EscrituraEnCom1.exe
> Prueba de ejecución:
Figura 2. Ejecución assembly EscrituraEnCom1.exe. |
5. Conclusiones
Aprendimos que el namespace System.IO.Ports provee la clase SerialPort para permitir establecer conexión con puertos seriales COM para permitir la escritura y lectura de datos. En código C# vimos que las operaciones para establecer conexión con un puerto COM son relativamente sencillas: basta con instanciar, establecer propiedades, abrir el puerto, y empezar a escribir datos.
En la receta C# número 21 aprenderemos a obtener un nombre aleatorio para un archivo.
8. Glosario
- COM1
- Dato
- Orientado a eventos
- Puerto
- Puerto serial
9. Literatura & Enlaces
[1]: Visual C# 2010 Recipes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.[2]: SerialPort Class (System.IO.Ports) - https://msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.110).aspx
[3]: SerialPort.GetPortNames Method (System.IO.Ports) - https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.getportnames(v=vs.110).aspx
V
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.