1 votos

7E1 a 8N1.........Dudas sobre el bit de paridad

Tengo dudas en la relación entre 7E1 y 8N1. Suponiendo que estoy transmitiendo un conjunto de caracteres entre un cliente y un servidor; el cliente envía con 7 bits y 1 bit de paridad par (7E1) y el servidor debe responder la misma información cambiando a 8 bits sin bit de paridad (8N1), ¿cómo ocurre la conversión? Tengo un ejemplo, pero no logro entender cómo ocurrió la conversión. Aquí está el ejemplo Estoy transmitiendo desde el cliente: "06H 02H 05H 02H 0DH 0AH"(7E1) El servidor responde :"06H B2H 35H B2H 8DH 0AH"(8N1).

¿Cómo pudo el servidor responder con tales caracteres en 8N1 a partir de 7E1 que recibió?

Gracias.

0 votos

El modo de paridad tiene que ser el mismo en ambos extremos del canal (es decir, servidor y cliente) para hacer una interpretación significativa de los datos.

0 votos

Gracias Itisravi. Sí, en realidad es un protocolo de comunicación de capa física. Por lo tanto, el protocolo requiere que la paridad sea cambiada en una etapa particular, así como la velocidad de baudios. Entonces, lo que hace el cliente es cambiar sus parámetros a los que espera del servidor después de enviar su información. El problema es cómo ocurre ese cambio en el carácter.

0 votos

¿Estás manejando correctamente los bits de inicio y de parada de 8N1? Es fácil que se desfasen.

1voto

RelaXNow Puntos 1164

¿Por qué hay una discrepancia entre el protocolo del cliente y el del servidor? Eso no tiene sentido. Por cierto, la paridad es una reliquia antigua que casi no se usa hoy en día.

Sin embargo, hay que tener en cuenta que 8N1 es un superset de 7E1. En el protocolo 7E1 (7 bits de datos, paridad par, 1 bit de parada), el bit de paridad está dictado por los otros 7 bits. Realmente solo se pueden enviar 7 bits de información por cada carácter. En el protocolo 8N1 (8 bits de datos, sin bit de paridad, 1 bit de parada), el remitente controla los 8 bits. En ese caso, el remitente podría optar por emular 7E1 en el software rellenando el bit de paridad de manera apropiada.

1voto

sq1020 Puntos 143

La paridad y el número de bits transmitidos son controlados por la configuración del dispositivo UART (Receptor/Transmisor Asíncrono Universal) en cada pieza de equipo. Este componente convierte los datos escritos en él en formato paralelo de byte (usualmente) al flujo de bits de datos que se envía de forma serial entre el cliente y el servidor (en tu ejemplo).

Para transmitir en 7E1, el UART está configurado para ignorar el bit más significativo (MSB) y luego agregar el bit de paridad como el último bit de datos transmitidos, dando un total de 8 bits de datos transmitidos. En 8N1, el UART transmite los 8 bits de datos. Por convención, los datos se transmiten primero en el bit menos significativo (LSB).

Al observar tus datos, sospecho que donde escribiste B realmente querías decir 8 (esto encajaría con los modos de transmisión de datos especificados).

Cuando se transmite los datos sobre una conexión 7E1, entonces los 8 bits transmitidos para tus datos serán

Dato   Paridad Byte Transmitido
 06      0       0x06
 02      1       0x82
 05      0       0x05
 02      1       0x82
 0D      1       0x8D
 0A      0       0x0A

¿Son los tres bytes intermedios representaciones ASCII de los valores que has declarado en tu pregunta (2 ->0x32, 5->0x35)? Si es así, los datos recibidos coincidirán con los datos transmitidos con la adición de un bit de paridad.

Dato   Paridad Byte Transmitido
 06      0       0x06
 32      1       0xB2
 35      0       0x35
 32      1       0xB2
 0D      1       0x8D
 0A      0       0x0A

1voto

Alex Andronov Puntos 178

Los modos de siete bits con paridad tienen el mismo enmarcado que los modos de ocho bits sin paridad; la única pregunta es qué sucede con el octavo bit (cabe destacar, por cierto, que algunos UART admiten modos de siete bits solo con paridad, y modos de ocho bits solo sin ella, ya que el hardware fundamental está diseñado para 8 bits de datos). Los dispositivos que envían datos de 8 bits tienen que hacer "algo" con el octavo bit en la transmisión: pueden establecerlo, borrarlo o hacer que dependa de la paridad de los siete bits restantes, pero algo tiene que salir por el cable durante ese tiempo de bit. Por otro lado, nada dice que los dispositivos tengan que hacer algo con todos los bits de datos que reciben. Muchos dispositivos simplemente ignorarán el bit más significativo de los datos entrantes. Otros intentarán usarlo para inferir si deberían hacer algo con el bit superior de los datos que regresan.

Un módem que utiliza comandos Hayes® generalmente buscará caracteres "AT" consecutivos para determinar la velocidad de baudios y las configuraciones de paridad a utilizar en la transmisión. La "A" se elige porque comienza con "1010" en la línea (incluido el tiempo de inactividad previo), lo que proporciona intervalos de alto y bajo de un solo bit de ancho. Los cinco ceros consecutivos no pueden aparecer en ningún dato válido que se envíe a dos veces la velocidad de datos o más. La "T" debería tener su bit de paridad en el estado opuesto al de la "A" si se utiliza la paridad. Una vez que el módem ha recibido el "AT", ignora los bits de paridad en los bytes entrantes posteriores, pero hace que su propia transmisión saliente coincida con los caracteres "AT" que recibió.

0voto

Achmed Durangi Puntos 223

¿Implementas el modo E de IEC62056-21 llamado HDLC/DLMS?

La secuencia de entrada es 06 B2 xx B2 8D 0A.

El xx para las velocidades de baudios solicitadas:

300: 30

600: B1

1200: B2

2400: 33

4800: B4

9600: 35

19200: 36

38400: B7

57600: B8

115200: 39

¡Estar preparado para lo que pueda suceder! La versión actual (11ª) es incompatible con las versiones anteriores (por ejemplo, la 2ª). El significado de algunos códigos ha cambiado y los datos estándar pueden tener un significado diferente de medidor a medidor. Por ejemplo, 1-1:1.36.0*xx - xx = período de facturación según la 1ª-9ª versión y múltiples umbrales según la 11ª. Además, el 62056-21 define la velocidad de baudios de la secuencia de apertura como 300. El DLMS define de manera diferente. Consulte la clase de configuración del puerto local de la IEC. El default_baud siempre debe ser un enum(0) y el campo no debe existir.

Algunos medidores no necesitan entrar en modo 62056-21. Además, algunos medidores no lo admiten.

La verdad: el DLMS no es un estándar verdadero. Es un cuasi-estándar. Como el idioma inglés: los chinos hablan inglés. Los eslovacos hablan inglés. Un eslovaco no puede entender chino y un chino no puede entender eslovaco ... a través del idioma inglés ...

Necesitamos más estándares para ser felices. Más idiomas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X