Como la comunicación serial asíncrona se extiende ampliamente entre los dispositivos electrónicos, incluso hoy en día, creo que muchos de nosotros hemos encontrado esa pregunta de vez en cuando. Considere un dispositivo electrónico D
y una computadora PC
conectada con una línea serie (RS-232 o similar) y que se requiera para intercambiar información continuamente . Es decir, PC
envía un marco de comando cada uno X ms
y D
responde con un informe de estado / marco de telemetría cada uno Y ms
(el informe se puede enviar como respuesta a las solicitudes o de forma independiente, realmente no importa aquí). Las tramas de comunicación pueden contener datos binarios arbitrarios . Suponiendo que las tramas de comunicación son paquetes de longitud fija.
El problema:
Como el protocolo es continuo, el lado receptor puede perder la sincronización o simplemente "unirse" en medio de una trama enviada, por lo que simplemente no sabrá dónde está el inicio de la trama (SOF). A los datos tienen un significado diferente en función de su posición en relación con el SOF, los datos recibidos se corromperán, potencialmente para siempre.
La solución requerida
Esquema confiable de delimitación / sincronización para detectar el SOF con un tiempo de recuperación corto (es decir, no debería tomar más de, por ejemplo, 1 cuadro para resincronizar).
Las técnicas existentes que conozco (y uso algunas) de:
1) Encabezado / suma de comprobación : SOF como valor de byte predefinido. Suma de comprobación al final del marco.
- Pros: simple.
- Contras: no es confiable. Tiempo de recuperación desconocido.
2) Relleno de bytes:
- Pros: recuperación confiable y rápida, se puede utilizar con cualquier hardware
- Contras: no es adecuado para la comunicación basada en tramas de tamaño fijo
3) Marca de noveno bit : anteponga cada byte con bit adicional, mientras que SOF se marca con 1
y los bytes de datos se marcan con 0
:
- Pros: recuperación rápida y confiable
- Contras: Requiere soporte de hardware. No es directamente compatible con la mayoría del
PC
hardware y software.
4) Marca de octavo bit : tipo de emulación de lo anterior, mientras se usa el octavo bit en lugar del noveno, lo que deja solo 7 bits para cada palabra de datos.
- Pros: recuperación confiable y rápida, se puede utilizar con cualquier hardware.
- Contras: Requiere un esquema de codificación / decodificación de / a la representación convencional de 8 bits a / de la representación de 7 bits. Un poco despilfarrador.
5) Basado en tiempo de espera : asuma el SOF como el primer byte que viene después de un tiempo inactivo definido.
- Pros: sin sobrecarga de datos, simple.
- Contras: no es tan confiable. No funcionará bien con sistemas de sincronización deficientes como, por ejemplo, PC con Windows. Rendimiento potencial sobrecarga.
Pregunta: ¿Cuáles son las otras posibles técnicas / soluciones para abordar el problema? ¿Puede señalar los inconvenientes en la lista anterior que pueden solucionarse fácilmente y eliminarlos? ¿Cómo diseña (o diseñaría) el protocolo de sus sistemas?