Go Down

Topic: Transformar inteiro em string (Read 2984 times) previous topic - next topic

Kotch

Pq não consigo transformar o integer em string, onde estou errando devo usar itoa?

int Value1 = 21125; //TODA VARIAVEL RECEBIDA PELA SERIAL TEM  O FORMATO 21xxx  ONDE xxx VARIA DE 0 A 360 EU PRECISO EXTRAIR ESTE   VALOR
sprintf(Value1, "%i", Value); //TRANSFORMA EM STRING
String1 = Value1.substring(2,5); //EXTRAI O VALOR 125 DO INTEIRO IGNORANDO O VALOR 21

error: request for member 'substring' in 'Value1', which is of non-class type 'int'

=(
????????????????????

bubulindo

Eu gosto mais de resolver isso assim:
Code: [Select]

char resultado[6];
int value1 = 21125;

int angle = Value1%21000; //isto dá 125.
itoa(angle, resultado, 10);


O teu erro é este:

Code: [Select]

char Value[6];
...
sprintf(Value, "%i", Value1); // primeiro colocas o array de chars, e colocas o integer depois do formato que queres imprimir.
This... is a hobby.

Kotch

#2
Jun 20, 2012, 04:16 pm Last Edit: Jun 20, 2012, 11:07 pm by Kotch Reason: 1
Obrigado, estou agora na sala de espera pra fazer um tomografia pois ontem a noite na frente do computador tive um reset (ctrl+alt+del) do meu cerebro, apaguei por um segundo mais ou menos, quando chegar em casa irei testar!

:-)

????????????????????

Kotch

#3
Jun 20, 2012, 10:45 pm Last Edit: Jun 20, 2012, 11:07 pm by Kotch Reason: 1
Funcionou, mas na realidade deveriá ser assim:
recebo duas variaveis pela serial, uma começa com 21 e mais tres números que vao de 000 ate 360
e a outra começa com 17 e mais dois numeros que vao de 00 a 90 no seguinte formato:17234 2145 17233 2146 17232 2147......
preciso saber pra qual motor enviar estes numero, pois o 21 indica que devo enviar os proximos tres numero pro motor 1
e o 17 indica que devo enviar os próximos dois números para o motor 2
como são números inteiros, pensei em transformar em string pra "pegar" o começo de cada valor e comparar, aí sobra o resto que transformo
de volta pra integer e mando ora pro motor 1 ou para o motor 2.
Alguma idéia?
Obrigado pelo interesse!

:(
????????????????????

bubulindo

não dá para uniformizar os valores que recebes? :S
This... is a hobby.

Kotch

#5
Jun 20, 2012, 11:50 pm Last Edit: Jun 20, 2012, 11:52 pm by Kotch Reason: 1
Nao dá, vem de um programa que nao tenho controle, so leio a serial.
mas pensei o seguinte, acho que vou usar o ascii que vem pela serial, acho que vai ficar mais facil
sempre que vier um 13 é pq mudou, ai fico olhando o proximo char se for 65 significa que vem mais tres ascii e devem ir pro motor um
se for 69 virá mais dois ascii e devem ir pro motor 2, aí é transformar os ascii em char, concatenar, transformar pra integer
e enviar pro motor.
O que acha?

8)
????????????????????

bubulindo

Daqui a umas horas vejo isso.

Como recebes em ascii, isso vai ser mais simples de implementar. Depois só tens de meter os valores para uma string e converter. :) ou então, converter logo mal recebes. Menos memória é usada assim. :)
This... is a hobby.

Kotch

????????????????????

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy