Hola:
Ya he resuelto los problemas, pero surgen otros:
En relación a la verificación del autotest, la sentencia que propones:
Código Delphi
[-]
if (datos[2] and $01) <> 0 then
genera un error al compilar:
Cita:
|
Operator not applicable to this operand type
|
Finalmente lo he resuelto de la siguiente forma:
Código Delphi
[-]
FAutoTest: Array[0..7] of integer;
...
procedure AutoTest(valor:integer);
var
i:integer;
begin
i:= 0;
while i < 8 do
begin
if ((1 shl i) and valor) > 0 then
FAutoTest[i]:= 1
else
FAutoTest[i]:= 0;
inc(i);
end;
end;
var
....
begin
...
if (Ord(datos[2])) <> 255 then
begin
AutoTest((Ord(datos[2])));
Exit;
end;
Luego se puede comprobar los valores de FAutoTest.
El problema que tengo ahora es con los valores negativos de las magnitudes, en concreto con la temperatura:
Cita:
Bytes nº 4 a xx “Valores de los parámetros meteorológicos”
Cada parámetro meteorológico se transmite con un formato de 2 bytes.
12 bits se utilizan para representar los números enteros y 4 bits para las fracciones del número entero. La estructura de los bytes se representa a continuación.
El primer byte transmitido representa 8 de los 12 bits usados para representar el entero.
El segundo byte transmitido utiliza los primeros 4 bits para representar el resto de los enteros y los cuatro últimos bits para representar las fracciones.
El bit menos significativo (LSB) tiene un valor de 1/16º de la unidad de tamaño medida.
Los números negativos se expresan usando el valor 2. 
High byte Low byte
----------------------------------------- ---------------------------
MSB> 15 | 14 | 14 | 13 | 12 | 11 | 10 | 9 | 8 || 7 | 6 | 5 | 4 | 3 | 2 | 1 < LSB
Cálculo del valor de dos bytes = ((Byte alto * 256) + (Byte bajo))/16
Una velocidad del viento de 22,75 m /s se codifica 016C Hex
Una dirección del viento de 22,00 grados se codifica 0160 Hex
Una temperatura de -22,75 °C se codifica FE94 Hex
Una presión de 1013 hPa se codifica 3F50 Hex
|
¿Qué significa "
Los números negativos se expresan usando el valor 2"?
Nuevamente muchas gracias por el tiempo que me dedicáis.
Un Saludo
Juan Pedro.