Perdon por pasarte los codigos sin verificar. Es que no tengo Delphi en el trabajo.
Por un lado la comprobacion seria:
Código Delphi
[-]if (Ord(datos[2]) and $01) <> 0 then}
y la funcion de conversion correcta es:
Código Delphi
[-]
function WordToFloat(byteAlto, byteBajo: byte): double;
var
val: Smallint;
begin
val := (byteAlto * 256 + byteBajo);
Result := val / 16;
end;