parece que vas avanzado bien
Cita:
Empezado por jplj
También modifiqué la formula para obtener los datos.
Código Delphi [-]
FVelViento = WordToFloat(Data[3] * 16 + Data[4]);
FVelViento:= ((Ord(datos[ 3])*256) + Ord(datos[ 4]))/16;
|
perdon por explicarte bien la funsión WordToFloat o como la quieras llamar. lo que pasa es que la parte enterea solo tiene 4 bits en la parte baja, por eso el producto x 16 y no 256. Aun asi tambien esta mal lo que escribi.
La conversion correcta seria:
Código Delphi
[-]
function WordToFloat(byteAlto, byteBajo: byte): double;
var
val: double;
begin
val := byteAlto * 16 + byteBajo div 16;
val := val + (byteBajo and $0F) / 10000;
Result := val;
end;
Cita:
Empezado por jplj
1.- Determinar el resultado de la autoverificación:
A la luz de los resultado que obtengo para el 2 byte, cualquier valor diferente a 255 indicaría un error. Pero quería saber cómo puedo determinar cuál es en base a la tabla de auto-test.
|
para saber cual es el error debes fijarte en el bit correspondiente a cada uno, por ejemplo:
Código Delphi
[-]
if (datos[2] and $01) <> 0 then
Cita:
Empezado por jplj
2.- Control de validación "Checksum".
¿Cómo implemento en pascal la verificación del paquete?
|
debes hacer un ciclo for para todos datos de tu paquete haciendo xor entre ellos y comparar el resultado con el byte del checksum