Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-02-2008
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Comunicaciones RS232 - Tratamiento de la información.

Hola:

Empelando el componente Async Professional (Apro) trato de obtener los datos que proporciona una la estación meteorológica WST 7000C.

La estructura del mensaje transmitido por la estación la detallo al final del post.

He pensado emplear el componente ApdDataPacket para leer como un paquete completo, creo haberlo configurado correctamente y en su evento OnPacket pretendo leer el contenido.

En este evento se recibe como argumentos:
Data: pointer
Size: integer

Mi problema está como no puede ser de otra forma en mis escasos conocimientos. Mi pregunta es ¿cómo obtengo de Data cada uno de los bytes que componen el mensaje y los transformo en el su valor adecuado?


Código Delphi [-]
Byte nº 1
El primer byte transmitido indica que la sonda está empezando a enviar un nuevo mensaje.
El valor de este byte es fijo en el 85 decimal.

Byte nº 2
Informa sobre la "longitud del mensaje" que falta por recibir, su valor depende del tipo de sonda que envía el mensaje.
El valor en mi caso es 18 decimal.

Byte nº 3
Este es el byte del sistema automático interno de control de validación de datos.
El valor de cada bit del byte depende de la validez de la medición de cada uno delos parámetros meteorológicos.
El valor lógico "1" indica que la medición es válida.
El valor lógico "0" indica que la medición no es válida.
Para una función no puesta en marcha, el bit que representa se coloca al valor lógico "1".

Tabla de autotest

Bit número  Función Observada 
O LSB           Velocicidad del viento
1    Dirección del viento
2    Temperatura del aire
3    Presión barométrica
4     Humedad relativa
5    Punto de rocio
6    Ninguna - Puesto a 1
7 MSB    Ángulo medido por la brújula.
    
  
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



Bytes nº 16 & 17
Tipo de sonda  Función medida     Metodología de decodificación
WST 7000 C   Ángulo entre el norte   Según el párrafo 4.3.4
    y el acimut 0°

Bytes Nº 18 y 19 Entrada analógica externa
Los bytes 18 y 19 se usan para transmitir la representación en 12 bits de una tensión analógica en el rango de 0 a +10 VCC.
El byte 18 transmite los 4 bits más significativos. El byte 19 transmite los 8 bits menos significativos.
La resolución es 10 V / 212 es decir, 2,4414 mV.

Último byte del mensaje, control de validez de los datos
El último byte transmitido es el de la "Checksum". Su valor se calcula tomando el "OR Exclusivo" de todos los bytes de mensaje transmitidos, excepto el último.
El mensaje recibido es válido si esta "Checksum" es idéntica al último byte transmitido.


Guía completa: http://juanpedro.l.googlepages.com/Manual.pdf


Muchas gracias de antemano
Un saludo
Juan P.
__________________
Sonríe. Mañana puede ser peor.

Última edición por jplj fecha: 25-02-2008 a las 23:51:44.
Responder Con Cita
 



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 00:22:55.


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