Autor Tema: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???  (Leído 3184 veces)

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

Desconectado Mando31

  • PIC10
  • *
  • Mensajes: 32
Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
« en: 23 de Septiembre de 2009, 21:34:34 »
Hola compañeros he intentado de todo y nada más no puedo enviar un float por la USART de la forma printf(%f,valor) esto con el C18 de Microchip  :shock:

Espero que alguno pueda ayudarme, por todo Gracias.  :mrgreen:

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
« Respuesta #1 en: 23 de Septiembre de 2009, 22:22:41 »
Hola.

El uso de esa función y otras mas que corresponden a stdio.h se explican enel MPLAB-C18-Libraries. Si mal no recuerdo, el printf() del C18 no soporta ese tipo de datos, habría que pasarlo a string primero.

Saludos
« Última modificación: 23 de Septiembre de 2009, 22:42:11 por MLO__ »
El papel lo aguanta todo

Desconectado Mando31

  • PIC10
  • *
  • Mensajes: 32
Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
« Respuesta #2 en: 23 de Septiembre de 2009, 23:34:48 »
Ok muchas gracias enotonces investigare como realizar la conversion de float a string .

Gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
« Respuesta #3 en: 23 de Septiembre de 2009, 23:35:30 »
Y por lo que se ve en la librería stdio.h tampoco esta soportado la conversión de flotante a string!  :? No queda otra que separar en parte entera y parte decimal.

Citar
Table: Data Conversion Functions
 Function  Description 
atob
 Convert a string to an 8-bit signed byte. 
atof
 Convert a string into a floating point value. 
atoi
 Convert a string to a 16-bit signed integer. 
atol
 Convert a string into a long integer representation. 
btoa
 Convert an 8-bit signed byte to a string. 
itoa
 Convert a 16-bit signed integer to a string. 
ltoa
 Convert a signed long integer to a string. 
rand
 Generate a pseudo-random integer. 
srand
 Set the starting seed for the pseudo-random number generator. 
tolower
 Convert a character to a lowercase alphabetical ASCII character. 
toupper
 Convert a character to an uppercase alphabetical ASCII character. 
ultoa
 Convert an unsigned long integer to a string. 



Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Mando31

  • PIC10
  • *
  • Mensajes: 32
Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
« Respuesta #4 en: 24 de Septiembre de 2009, 01:19:26 »
 :shock: Muchas gracias Suky pues entonces tendre que partir el dato en parte entera y en parte decimal ya que no queda de otra, por todo muchas gracias

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
« Respuesta #5 en: 24 de Septiembre de 2009, 05:06:37 »
Podes usar esta funcion:

Código: C
  1. void float2str(char *buffer, float f)
  2. {
  3.         float fenteros;
  4.         float fdecimales;
  5.         int entero, decimal;
  6.         fenteros = floor(f);
  7.         fdecimales = f - fenteros;
  8.         entero = (int)fenteros;
  9.         decimal = (int)1000 * fdecimales;
  10.         sprintf(buffer, "%d.%03i", entero, decimal);
  11. }
@fabianjsm is on twitter