Autor Tema: variables tipo float a string  (Leído 2054 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado loverman24

  • PIC12
  • **
  • Mensajes: 66
variables tipo float a string
« en: 01 de Marzo de 2006, 12:30:00 »
Hola a todos, tengo problemas con una aplicacion hecha en VB6. En la aplicacion, los datos que me envia el pic los trato como string, y resulta que tengo problemas con los numeros que envia el pic, me los sustituye por caracteres "raros", por asi decirlo, pero sin embargo, los char que envio no tengo problemas. Ya que no veo la forma de corregir este error desde Vb, quiero dar un pequeño rodeo, e intentar enviar los numeros, q son de tipo float como string, a ver si asi logro q funcione.

Por tanto mi pregunta es, como puedo convertir los float a string?

El pic me envia de la siguiente manera

printf ("%c%c%1.2f V
",modo, canal, tensionm);

la idea es que la variable tensionm, q es de tipo float, pasarla a string, para ver si asi la aplicacion en VB no me da problemas.

Espero vuestra ayuda

Gracias

Un saludo

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
RE: variables tipo float a string
« Respuesta #1 en: 01 de Marzo de 2006, 12:34:00 »
Los maestros, y sin embargo amigos, Nocturno y Migsantiago lo contestan en este Hilo

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado loverman24

  • PIC12
  • **
  • Mensajes: 66
RE: variables tipo float a string
« Respuesta #2 en: 01 de Marzo de 2006, 14:21:00 »
Vaya se me paso, muchas gracias

Desconectado loverman24

  • PIC12
  • **
  • Mensajes: 66
RE: variables tipo float a string
« Respuesta #3 en: 01 de Marzo de 2006, 16:08:00 »
Hola, he vuelto a mirar el post q me indicas, pero no puedo acceder a el. me sale un mensaje diciendo

"El tema no es valido o ha sido eliminado"

Solo me pasa a mi o es que no esta?


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: variables tipo float a string
« Respuesta #4 en: 01 de Marzo de 2006, 16:27:00 »
iCosas del foro!, ahora funciona perfectamente ese post.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
RE: variables tipo float a string
« Respuesta #5 en: 02 de Marzo de 2006, 00:41:00 »
Ja, ja, ja El Foro Loco Ataca de Nuevo Muchas risas Muchas risas Muchas risas

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado loverman24

  • PIC12
  • **
  • Mensajes: 66
RE: variables tipo float a string
« Respuesta #6 en: 02 de Marzo de 2006, 03:35:00 »
Bueno, despues de mirar los ejemplos y de hacerlos tal como dicen, no se que hago mal q no funciona.

He reprogramado mi codigo, he puesto el sprintf como ( creo q esta bien puesto) dicen los ejemplos, y a la hora de ver como funciona por el hyperterminal, tanto el del proteus como el real, no me aparece la salida de sprintf, si la del printf. Donde deberia aparecer la salida del sprintf no me aparece nada. Os pongo el codigo completo, la parte del sprintf es la final:

//Programa que realiza una conversion de un potenciometro

#include <16f877A.h>                         //PIC q se usa

#device adc=10                               //Resolucion del convertidor, 10 bits
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD      //Establece los distintos bits de configuración del micro
#use delay (clock= 4000000)                  //Frecuencia de reloj
#use rs232(BAUD=9600, BITS=8, PARITY=N, XMIT=PIN_C6, RCV=PIN_C7)  //Configuracion de la comunicacion serie


void main() {

   float const resoluc= 5.00/1023.00;        //Resolución del convertidor, 4.92 es la tension de alimentacion
                                             //pero uso 5V
   float corriente0= 10.00/10860.00;         //Diferentes corrientes dependientes de la resistencia calibracion

   float corriente1= 10.00/10860.00;

   float corriente2= 10.00/10890.00;

   float corriente;                          //Valor de corriente que se usa para calcular el v_ohmico

   float tension, tensionm, tensiont, tensionp;        //Diferentes valores de tension previos a utilizar

   float valor;                              //Numero de pasos de la medida

   float v_ohmico, v_ohmicom, v_ohmicot;     //Diferentes valores ohmicos a utilizar, v_ohmicot es el definitivo

   int i, j, k;                              //Contadores usados en el programa

   char canal, modo;                         //Variables que indicaran el canal de medida y el modo, calibracion, medicion

   char string[20];                         //o caida de tension en el potenciometro

   
 
                           
   setup_adc_ports (ALL_ANALOG);             //Todas las entradas del covertidor son analogicas

   setup_adc (ADC_CLOCK_INTERNAL);           //Selecciono reloj interno del pic


   for (;Giño {                                //Bucle principal

      for (k= 0; k<3; k++) {                 //Bucle que indica donde colocar los datos obtenidos, es decir, en calibracion

         switch (k) {                        //en medicion o en la etiqueta de caida de tension

            case 0: modo= "a"; break;

            case 1: modo= "b"; break;

            case 2: modo= "c"; break;

            }

         for (j= 0; j<3; j++) {              //Bucle que elige los canales del pic que se usan para realizar la adquisicion

            tensionm= 0;

            tensiont= 0;

            tensionp= 0;

            v_ohmicom= 0;

            v_ohmicot= 0;

            set_adc_channel (j);

            switch (j) {

               case 2: canal= "A";           //Grupo1= A, Grupo2= B, Grupo3= C

                       corriente= corriente0;

                       break;

               case 1: canal= "B";

                       corriente= corriente1;

                       break;

               case 0: canal= "C";

                       corriente= corriente2;

                       break;

            }

            for (i= 1; i<101; i++) {

               delay_us(100);

               valor= read_adc();

               tension= valor*resoluc;

               v_ohmico= (2*tension)/corriente;

               v_ohmicot= (v_ohmicot+v_ohmico);

               tensiont= (tensiont+tension);

            }


            v_ohmicom= v_ohmicot/100;

            tensionm= tensiont/100;

            tensionp= 2*tensionm;
                                             
            if (modo=="a") {

               printf("%c%c", modo, canal);
                                           
               sprintf (string, "%1.2f V
", tensionm);

            }

            if (modo== "b") {

               printf ("%c%c", modo, canal);
               
               sprintf (string, "%1.2f Ohms
", v_ohmicom);
               
            }

            if (modo== "c") {
           
               printf ("%c%c", modo, canal);
               
               sprintf (string, "%1.2f V
", tensionp);
               
            }

            delay_ms(100);

         }

      }

   }

}


Se puede ver como declaro una variable char string[20] y como el sprintf (string, "%1.2f V
", tensionp); esta bien puesta, o al menos eso creo.

Espero vuestra ayuda

Gracias

Un saludo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: variables tipo float a string
« Respuesta #7 en: 02 de Marzo de 2006, 03:45:00 »
Claro, es que no debes ver nada. Lo que hace el sprintf es volcar sobre la variable string lo que venga detrás. Si quieres ver el contenido de esa variable, tendrás que hacer un printf con ella.

Desconectado loverman24

  • PIC12
  • **
  • Mensajes: 66
RE: variables tipo float a string
« Respuesta #8 en: 02 de Marzo de 2006, 03:57:00 »
Aaaaaaaaaaaaaaaa vale, siento la pregunta chorra locolocolocoloco


 

anything