Manuel Cánepa

Manuel Cánepa

Emulacion de puerto serie para entorno de pruebas

20/10/2015, por Manuel Eduardo Cánepa Cihuelo, categoría Puertos serie

En estos días tuve la oportunidad de desarrollar en C# un sistema que toma el peso neto de camiones que suben a una balanza y el indicador es de la empresa Sipel, mas precisamente el modelo APOLO.

Este indicador se conecta mediante un puerto serie. Para no tener que estar compilando y probando en la computadora donde esta conectada la balanza (y cortar el trabajo de los operadores), se me ocurrió crear dos puertos COM virtuales emparejados en modo “loopback”. De esta manera, puedo escribir en un puerto con un simulador de datos y conectarme con el sistema al otro puerto.

Como diría Jack el Destripador “Vamos por partes”:

Siguiendo los típicos pasos de instalación de aplicaciones, vamos a llevar a cabo dos instalaciones, la primera nos permitirá tener un par (O más de ser necesario) de puertos que estarán emparejados. La segunda instalación, nos permitirá enviar los datos a un puerto serie, que luego serán los mismos datos que recibiremos cuando nos conectemos al otro puerto serie.

Instalar com0com:

En el caso que tengas Windows 7 64x, los drivers tienen que estar firmados digitalmente. Para ello, deberías instalar la versión 2.2.1.0.

Instalar AGG COM Port Data Emulator:

Configurar el emulador:

En nuestro caso, vamos a usar el puerto COM43 para escribir y el puerto COM44 para leer:

Configuramos los parámetros a nuestro gusto y necesidad y presionamos “Start”.

 

Conexión al puerto serie

Con esto, ya nos quedaría listo para conectarnos al puerto COM44 para leer lo que contenga el archivo “C:\envio.txt”. El COM port data emulator estará constantemente enviando lo que encuentre en el archivo envio.txt, debe notarse que el “line ending characters” configurado es “#0D”, el cuál representa al carácter número 13 en la tabla ascii “Carriage return” o “Retorno de carro”, esto dependerá del hardware que se conecte, en mi caso el indicador de peso envía ese carácter como fin de linea, pero puede necesitar configurarse, por ejemplo, con un “Retorno de carro” seguido de un “Salto de linea”, en ese caso, se debe completar el campo con lo siguiente: “#0D#0A”.

¿Que opinás?