Puertos con C#. Tramas y CRC.

Cuando necesitamos conectar con un dispositivo externo a través del puerto COM empiezan las peleas. Según el fabricante del dispositivo con el que queremos comunicarnos necesitamos construir una trama u otra. Cada una de las tramas con las que me he encontrado son de su padre y de su madre, algunas tramas exigen LSB(byte menos significativo)  y MSB(byte más significativo), otras CheckSum o CRC.  Las que piden  CRC suelen tener un algoritmo específico, CRC – 16,  CRC-CCITT, etc…

Otra cosa curiosa es el tema de la transparencia, método por el cual cuando te encuentras un carácter reservado dentro de la trama si va acompañado por un byte de escape hace que no utilicemos dicho carácter reservado como carácter especial, Inicio de datos, Fin de campo, etc…, sino como un carácter normal dentro de la trama, por ejemplo parte de una frase.

Pero gracias a la gente que publica su sapiencia en la red al final encuentras lo necesario para construirlas. El motivo de este artículo es intentar hacer un resumen para que aquel que se encuentre con las situaciones que yo me he encontrado no tenga que leer 35 post distintos, además de servirme a mí para futuras consultas.

Construir tramas

Según las especificaciones tendremos que construir una cosa u otra. Normalmente las tramas vienen definidas por un inicio y un fin, el inicio es llamado STX, 2 HEX, y el final de la trama un ETX,  3 HEX. Nosotros vamos a especificar una de ejemplo:

STX LBS MBS FLD Campo01 FLD CampoN CHK ETX

Sigue leyendo