FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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?
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. |
#2
|
|||
|
|||
Por lo que comentas los paquetes de datos me parece que estan representados de esta forma:
Cita:
El CheckSum <BCC> es un simple XOR (OR exclusivo) desde el primer caracter <STX> hasta el caracter anterior al <ETX>. Si pudieras mostrar una cadena ejemplo podriamos ayudarte con mas certeza. Salud OS. PD, el link que pones no se puede acceder.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#3
|
|||
|
|||
Ahora no puedo poner los datos porque no tengo el equipo conmigo, mañana pondré lo que me sale, y también el código que empleo.
El link está dirigido a un pdf y efectivamente no funciona, no sé. Si copias y pegas la dirección en el navegador sí accedes al pdf.
__________________
Sonríe. Mañana puede ser peor. |
#4
|
||||
|
||||
Por lo que entiendo tenes tu evento OnPacket donde recibis los datos, ahi copias el contenido a un buffer interno o lo procesas directamente (preferible lo primero)
esto es una idea de lo que tenes que hacer. falta definir tambien tu funcion WordToFloat que es la que te transforma tu formato de dato. Espero que te ayudea empezar
__________________
[Crandel] |
#5
|
|||
|
|||
Hola:
En la línea que indica Crandel he hecho el procedimiento que listo más abajo. La salida del procedimiento también la listo a continuación. He hecho algunas modificaciones: En :
Se producía un error al compilar Cita:
También modifiqué la formula para obtener los datos.
Creo que los datos que obtengo son correctos, tengo que contrastarlos con los de otra estación meteorológica para verlo. Agradecería que me dijerais si encontráis algún error. Si todo fuera correcto, me quedan dos preguntas: 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. 2.- Control de validación "Checksum". ¿Cómo implemento en pascal la verificación del paquete?
Cita:
Un Saludo Juan Pedro.
__________________
Sonríe. Mañana puede ser peor. |
#6
|
||||
|
||||
parece que vas avanzado bien
Cita:
La conversion correcta seria:
Cita:
debes hacer un ciclo for para todos datos de tu paquete haciendo xor entre ellos y comparar el resultado con el byte del checksum
__________________
[Crandel] |
#7
|
|||
|
|||
Hola:
Ya he resuelto los problemas, pero surgen otros: En relación a la verificación del autotest, la sentencia que propones: genera un error al compilar: Cita:
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:
Nuevamente muchas gracias por el tiempo que me dedicáis. Un Saludo Juan Pedro.
__________________
Sonríe. Mañana puede ser peor. |
#8
|
||||
|
||||
Perdon por pasarte los codigos sin verificar. Es que no tengo Delphi en el trabajo.
Por un lado la comprobacion seria:
y la funcion de conversion correcta es:
__________________
[Crandel] |
|
|
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 |
|