Hola,
sólo para aclarar como serían los mensajes.
En especial, aclarar que el checksum aplica sobre los datos y sobre el byte CR (carriage return).
Mensaje inicial
0xAA STX P o n c h o SUM 0x55
0xAA 0x01 0x50 0x6F 0x6E 0x63 0x68 0x6F 0x68 0x55
Mensaje con información imprimible en pantalla
0xAA H o l a CR SUM 0x55
0xAA 0x48 0x6F 0x6C 0x61 0x0D 0x91 0x55
Mensaje de fin de chat.
0xAA EOT 0x55
0xAA 0x04 0x55
Cualquier duda me mandan un correo.
Saludos.
Hola profe,
ResponderEliminarEstoy haciendo el función que calcula el checksum y mi pregunta es relacionado a lo siguiente: el checksum es la suma de los valores 0x50 0x6F 0x6E 0x63 0x68 0x6F. En mi caso estoy usando 1 byte para obtener este valor entonces su resultado es 0x67 y no 0x68, pero si usamos más de un byte, por ejemplo 2 bytes, y descarto el más significativo y solo tomo el menos significativo me da 0x68. Cual es el criterio apropiado para calcular este valor, yo pensaría que es un podríamos usar solo byte para unificar criterios porque si alguién supera en esta suma la cantidad ocupada por dos bytes, entonces volverá a pasar lo mismo. Gracias!!
Mario Feregrino.
Hola Mario,
ResponderEliminardebería de salir lo mismo en ambos casos. En los datos que me mandaste te faltó suma el 0x01 del principio.
Saludos,
Alfonso.