Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 28-02-2008
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 23
jplj Va por buen camino
Thumbs up

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
    ...
     // 3.- Verificación del autotest.
   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.
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Servidor Web + Comunicaciones phrodo Internet 10 07-07-2007 12:29:40
Mandar datos RS232 CARSOFT_AR Varios 3 14-07-2006 23:01:25
Comunicaciones electronicas EDI Toni Conexión con bases de datos 0 18-04-2006 13:06:34
Comunicacion RS232 y LPT Cronos Varios 0 06-02-2005 08:10:16
Conexion Serial RS232 Pavlov Varios 2 06-10-2003 17:47:37


La franja horaria es GMT +2. Ahora son las 01:18:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi