Calcular suma de cheques

2

Estoy intentando enviar algunos comandos en serie.

En el manual del hardware dice:

El byte de comprobación de suma es la suma de todos los bytes. Los bytes de orden superior se ignoran y el resultado final se modifica. El bit 7 (el más alto) es forzado alto.

Digamos que el comando de serie es: (donde 0x30 = 30)

30 30 70 7E 61 62 63 7E 30

... ¿cuál sería la suma de comprobación y cómo puedo calcularla?

¿Qué son los "bytes de orden superior"? ¿Qué es un resultado final "modificado"? ¿Qué significa "alto forzado" significa?

    
pregunta DAS

1 respuesta

3

Debes incluir un enlace o una imagen de la página del manual para estar seguro.

Sin embargo, podría aventurarme a adivinar y ver si funciona para ti.

Comienza con una variable de 8 bits vacía.

Para cada byte en el comando, agregue el byte a la variable.

Dado que la suma puede llegar a ser más grande que 8 bits, la suma 'correcta' incluiría también un 'byte alto'. Sin embargo, el uso de una variable de 8 bits hará que la suma se traslade. También puede usar una variable de 16 bits y enmascararla con 0x00FF o una variable de 32 bits y enmascararla con 0x000000FF. En la mayoría de los casos, aplique la máscara después de agregar todos los bytes.

Finalmente, fuerce el bit más alto (bit 7) a 1.

Para su ejemplo, la suma de comprobación debe calcularse como:

30 + 30 + 70 + 7E + 61 + 62 + 63 + 7E + 30 = 322

Eliminar el byte alto:

22

Forzar el MSB a 1:

A2

    
respondido por el Chintalagiri Shashank

Lea otras preguntas en las etiquetas