• Viernes 19 de Abril de 2024, 18:47

Autor Tema:  crear variable float  (Leído 3441 veces)

marodal

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
crear variable float
« en: Jueves 26 de Noviembre de 2009, 12:58 »
0
Hola a todos
Tengo una aplicacion que recibe por el puerto serie datos de tipo char, de 8 bits.
Cada conjunto de 4 caracteres tienen que ser interpretados como un flotante.
¿Como podria crear el flotante a partir de esos 4 caracteres?

Por ejemplo:
recibo 0x32 0x21 0x34 0x23, y con esos 4 bytes debo crear el flotante para obtener un valor que debo representar en mi aplicacion.
Gracias por la atencion prestada
Un saludo

rfog

  • Miembro MUY activo
  • ***
  • Mensajes: 166
    • Ver Perfil
Re: crear variable float
« Respuesta #1 en: Jueves 26 de Noviembre de 2009, 13:08 »
0
Pon los cuatro bytes en una unión:

union Nombre
{
 unsigned char asByte[4];
float asFloat;
};

Luego escribe como si fueran bytes y lee como si fuera un float.

O lo mismo pero sin la unión:

unsigned char bytes[4];
float *f=(float *)bytes;
Microsoft Visual C++ MVP - Mi blog sobre programación: http://geeks.ms/blogs/rfog

marodal

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: crear variable float
« Respuesta #2 en: Jueves 26 de Noviembre de 2009, 15:19 »
0
Antes de nada, gracias por responder

He almacenado en un array de char las 4 variables char, que he llamado floatEntrada1;
Luego he creado un float de nombre entrada1, y he hecho lo siguiente:

entrada1 = (float)floatEntrada1;
y me ha dado el siguiente error de compilacion:
error C2440: 'type cast' : cannot convert from 'cli::array<Type> ^' to 'float'

¿Que es lo que ocurre?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: crear variable float
« Respuesta #3 en: Jueves 26 de Noviembre de 2009, 15:36 »
0
Eso no es C++.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

marodal

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: crear variable float
« Respuesta #4 en: Jueves 26 de Noviembre de 2009, 15:48 »
0
Se trata de Visual c++, 2008, ExpressEdition.
Estoy creando una aplicacion grafica, basandome en los formularios y controles que incorpora Visual c++ 2008.
LA verdad que incorpora tipos de datos propios.
Bueno, aunque no hayas usado Visual c++, podrias decirme como se haria la conversion en lenguaje c++ convencional??
Gracias

rfog

  • Miembro MUY activo
  • ***
  • Mensajes: 166
    • Ver Perfil
Re: crear variable float
« Respuesta #5 en: Jueves 26 de Noviembre de 2009, 16:00 »
0
Ya te lo he puesto yo en mi respuesta.

Y en los foros de Microsoft the he dado otra posible respuesta, y aun te voy a dar otra más:

Create una referencia a un float, inicialízala con gcnew, pinneala con pin_ptr y y escribe directamente sobre ella con desplazamientos.

Si la línea de arriba te suena a chino, antes de seguir, aprende C++/CLI.
Microsoft Visual C++ MVP - Mi blog sobre programación: http://geeks.ms/blogs/rfog

marodal

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: crear variable float
« Respuesta #6 en: Jueves 26 de Noviembre de 2009, 16:11 »
0
La respuesta que me distes en el foro de microsoft da el siguiente warning

warning C4244: '=' : conversion from 'int' to 'float', possible loss of data

¿Puede que haya perdido informacion? No me puedo permitir perderla, puesto que el valor de ese float ha de ser correcto para el uso que le voy a dar a mi aplicacion.

GRaciass!!

marodal

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: crear variable float
« Respuesta #7 en: Jueves 26 de Noviembre de 2009, 16:33 »
0
Ya lo he conseguido.
FROG, Ademas de la solucion que me dijistes en el foro de msdn, habia que hacer el casting a float de toda la sentencia.
Muchas gracias.
En cuanto a tu ultimo comentario (que me parece un poco borde), he de decirte, que se C++, y por lo que he leido en tu blog, cualquier cosa que puedas hacer en C++, se puede implementar en Visual C++, asiq espero terminar mi trabajo con mis conocimientos de C++, y aprendiendo lo basico de C++/Cli.
Muchas Gracias por todo
SAludos

rfog

  • Miembro MUY activo
  • ***
  • Mensajes: 166
    • Ver Perfil
Re: crear variable float
« Respuesta #8 en: Jueves 26 de Noviembre de 2009, 16:43 »
0
Más que borde, bordísimo, je je.

Si quieres completarte en C++ en cuanto a tecnologías Microsoft, debes darle un tiento al C++/CLI.

Claro que se pueden mezclar ambos, pero hay restricciones en cuanto a la interoperación entre los datos nativos y manejados. Hazte cuenta de que hay dos pilas y dos montículos completamente independientes y que sólo los datos básicos son compatibles entre su mismo tipo (y lo que hace el runtime es irlos copiando de una pila a la otra). El mayor problema de interoperabilidad "total" es el recolector de basura del .NET, y en su momento dijeron que harían algo para mejorarla (como objetos proxy entre ambos) pero de momento no hay nada nuevo.
Microsoft Visual C++ MVP - Mi blog sobre programación: http://geeks.ms/blogs/rfog