![]() |
Transformar un String[4] en un Real
Hola
Tengo un problema al recibir datos por el puerto serie. Tratare de ser organizado al respecto: 1- Los datos provienen de un dispositivo que me envia 4 bytes, estos bytes son los correspondientes a un REAL (IEEE, la representacion en 32 bits de un real). 2- Esos datos llegan a la PC, en la misma corro un programa en Delphi. En este programa utilizo un componente TDataPacket, asociado a un componente TComPort 3- El componente TDataPacket me sensa el encabezado de la cadena y lee los 4 bytes. 4- El problema es que el componente me entrega esos 4 bytes como 4 caracteres (un string en realidad), PERO EN REALIDAD SON UN REAL. 5- Por lo tanto... Como transformo esos 4 bytes en un REAL, que es lo que en realidad representan ?? Probe de varias formas con punteros, pero ninguna me funcionó ALGUNA IDEA, AYUDA ?? Sera muyy bienvenida la ayudaa Desde ya muchas gracias, UN ABRAZO Carlos |
En un principio parece te quedaría poner la coma a esa cadena y luego aplicar la función FloatToStr(X).
Cita:
|
Interpretar 4 bytes como Real
Cita:
La funcion FloatToStr me convertiria un String como '53.5' en el Real 53.5 El problema que tengo es que en este caso los bytes que vienen no represntan (siguiendo el ejemplo) el caracter '5' ni el siguiente el '3' y asi sucesivamente. Los bytes que me son enviados constituyen los cuatro juntos, la representacion en formato ANSI/IEEE 754-1985, el problema es que debo interpretar los bytes de ese modo y no como strings ni char. Logro hacerme entender ? UN abrazo Carlos |
|
Bien, todo depende del orden en que te manden esos bytes. Me explico:
Tenemos, por ejemplo el numero: -118.625 Cuya representacion en IEEE es: 11000010 11101101 01000000 00000000 Si te manda los bytes de derecha a izquierda, podemos hacer algo como esto:
Pero si por el contrario, te manda los bytes de izquierda a derecha tenemos que darles la vuelta primero :)
Por ultimo te dejo un ejemplo, para que pruebes la funcion:
¿Era esto lo que buscabas? |
Si, era esto
Muchisimas gracias, esto es lo que andaba buscando
En el dia de hoy en cuanto pueda agarrar la maquina lo pruebo, y les estoy comentando el resultado Un abrazo Carlos |
La franja horaria es GMT +2. Ahora son las 18:18:15. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi