Uno siempre puede definir un byte de inicio como una indicación de que un mensaje está comenzando (y los códigos ASCII SOH, STX, y ETX fueron destinados para tales propósitos). Sin embargo, el hardware y los protocolos estándar para la conexión a equipos de transmisión de datos (RS232C y posterior) operan a un nivel inferior, y generalmente no es posible ni deseable alterar esa disposición (especialmente a través de software).
Los esquemas de transmisión de datos síncronos de alto rendimiento, como los utilizados en redes de área local y sistemas de transmisión de área extensa, utilizan elaborados marcadores de trama. El marcador de marco es un patrón distinto de bits que nunca ocurre en la secuencia de datos del mensaje. Normalmente hay una regla de reescritura especial que esencialmente "escapa" cualquier ocurrencia en el contexto de un patrón de bits similar para que el equipo de transmisión no lo vea como un marcador de marco. Estos patrones escapados son reconstruidos por el receptor para que el emisor y el receptor nunca tengan que prestar atención a esto. Estos arreglos hacen que el hardware especializado sea aún más importante, como en la típica tarjeta de interfaz de red (actualmente, chip de placa base) en computadoras personales.
ANTECEDENTES EN Comunicación asíncrona SERIE
Es útil pensar en las transmisiones serie asíncronos como asíncrona entre los marcos de caracteres/datos y sincrónica en el lapso de la trama de caracteres (incluyendo los bits de inicio y parada/llenado inicial).
Con este esquema, hay una señal de relleno constante entre los cuadros y generalmente es al menos un bit de datos de ancho, aunque algunas disposiciones requieren un stop/fill de 1,5 bits o dos bits. El "bit" de parada usa el mismo nivel de señal y puede considerarse el período de llenado mínimo antes de que llegue otro bit de inicio.
Cuando llega un marco, es necesario sincronizar con el número predeterminado de bits que se espera que transporte. La transición de la señal de llenado a una señal de nivel opuesto se realiza mediante el bit de inicio que siempre es opuesto al nivel de detención/llenado. El muestreo de los bits puede programarse para que ocurra en el medio de los siguientes períodos de llegada de bits.
Técnicamente, si los marcos se envían a la velocidad máxima, no sería necesario enviar ningún stop/fill, procediendo al bit de inicio del siguiente marco inmediatamente. Sin embargo, contar con al menos un bit de relleno antes de la transición de inicio de bits ayuda a mantener al emisor y al receptor sincronizados.
Si considera que las transmisiones asíncronas se codifican a partir de las pulsaciones de tecla utilizando un teclado, puede ver la importancia de permitir el relleno arbitrario entre cuadros de caracteres. Una vez que se sabe qué marco enviar a continuación, se puede insertar inmediatamente, con su bit de inicio, a la velocidad de bits acordada, después de que haya al menos un bit de stop/fill anterior.
También es útil notar que, en las transmisiones asíncronas de baja velocidad típicas, hay solo dos tipos de bits/niveles, por lo que la única forma de distinguir la presencia de datos en lugar del relleno es mediante un esquema de marcador como este donde el inicio del cuadro es único detectable y el final del cuadro está predeterminado (a menos que exista una estructura de cuadro de longitud variable más sofisticada generalmente no utilizada en comunicación serial asíncrona). En realidad, es bastante difícil para un receptor descubrir la velocidad de bits de un transmisor sin algún acuerdo adicional, como buscar una secuencia de datos reconocible a partir de la cual se pueda estimar la velocidad de bits que haría que llegara correctamente cuando llegara en forma incorrecta.
Aunque los módems de alta velocidad ahora transmiten señales analógicas complejas que no se describen en términos de dos niveles de señal simples, la comunicación digital RS232C (y modo posterior) entre un UART de computadora y el acoplamiento de datos en el módem más o menos como se describe.
Los módems de alta velocidad también tienen capacidades adicionales para sincronizar con un punto final distante, como puede ver al escuchar la señal de audio mientras se inicia una conexión. Además, hay líneas de señal separadas en el cable serie de la computadora que se usan para estimulación entre la computadora y el módem, de modo que la parte que envía no transmite nuevas tramas de datos más rápido de lo que la parte receptora (ya sea computadora o módem) puede aceptar ellos. Pero un cuadro, una vez iniciado, siempre se inicia a la velocidad sincrónica acordada.
Wikipedia tiene una buena descripción de asynchronous serial communication, lo que utilizan los puertos serie de la computadora.
Hay una sobre simplificación común que sugiere que el bit de parada determina la longitud de los datos. Ese no es el caso. El bit de parada se ve como un nivel para otro bit de datos. La forma en que se reconocen el bit de parada y el período hasta el siguiente bit de inicio es conociendo la tasa de bits a la que se transmiten los datos dentro del cuadro y los bits de inicio/parada y sabiendo cuántos bits contiene un cuadro.De lo contrario, no hay forma de distinguir un bit de parada de solo otro bit de esa polaridad como parte del marco de datos.
Parece que en su ejemplo hay una fase "silenciosa"/inactiva. En un programa, ¿verificaría esto con un tiempo de espera? – Steve
Nunca he visto una implementación que se comporte de la manera que usted describe, el envío continuo de bits de parada mientras la línea está inactiva, eso no tiene ningún sentido. –
Soy un tipo de hardware. Si comprueba el voltaje en la línea de recepción del puerto serie de su PC, * siempre * estará en el nivel 0 o 1 (o haciendo una transición rápida entre ellos). El punto del bit de inicio es forzar una transición de "detener", que es lo mismo que "inactivo". –