Página 1 de 1

converter float ou int para string

MensagemEnviado: 24 Jun 2011 20:34
por cristian
no lpc1343 fiz a conversao AD e ja transformei em volts usando isso

Código: Selecionar todos
float ValueVolts = Counts*SUPPLY_VOLTAGE/ADC_COUNT_MAX;


mas agora eu quero enviar pra UART e futuramente pra USB e um display

no mikroc usava WORDTOSTR e ele jogava num array , ai fica facil

e no KEIL como é ???

MensagemEnviado: 24 Jun 2011 21:32
por Red Neck Guy
Olha, independente do compilador, tu pode uilizar sprintf pra isso. Algo do tipo
....

Código: Selecionar todos

char bufferChar[20];

sprintf(bufferChar,"%f",variavel_float_com_o_valor_calculado);


Dá pra fazer uma série de configurações ali e tal...

MensagemEnviado: 24 Jun 2011 21:37
por cristian
srsrsrsrs. veja so como eu fiz....


Código: Selecionar todos
   float ValueVolts = Counts*SUPPLY_VOLTAGE/ADC_COUNT_MAX;


   INTvalor=(int)(ValueVolts*1000);

 UARTBuffer[0]=((INTvalor/1000)+0x30);
 auxbuf= (INTvalor%1000);
 UARTBuffer[1]=((auxbuf/100)+0x30);
 auxbuf=auxbuf%100;
 UARTBuffer[2]=((auxbuf/10)+0x30);
 auxbuf=auxbuf%10;
 UARTBuffer[3]=(auxbuf+0x30);

MensagemEnviado: 24 Jun 2011 22:09
por cristian
mas tudo tem seu preço


o meu codigo caseiro gastou 284bytes

o sprintf gastou 2924 bytes



eu to nessa de economizar memoria por causa do pic ...r.srsrsrs

MensagemEnviado: 24 Jun 2011 23:01
por polesapart
Olha só, não é o melhor dos exemplos, mas geralmente as funções pra converter inteiro em string são variantes disto aqui:

Código: Selecionar todos
// O tamanho máximo do buffer.
#define ITOA_BUFLEN 10
char *itoa(uint64_t dwVal, char * __restrict cTemp, unsigned int wBase)
{
  char *pChar;
  pChar = cTemp + ITOA_BUFLEN;
  *--pChar = 0;
  do {
    char ch = (unsigned int)dwVal % wBase + '0';
    if (ch > '9')
      ch += 'a' - '9' - 1;
    *--pChar = ch;
    dwVal /= wBase;
  } while (dwVal && (pChar != cTemp));
  return pChar;
}


Deste jeito você pode imprimir em binário, octal, decimal, hexadecimal ou qualquer base maluca que você inventar. Se substituir a base por um valor fixo o código costuma enxugar mais ainda.