Como dividir uma string em pedaços e converter para variáveis tipo float?

Boa tarde pessoal,

Estou com um problema e não consigo achar a solução.

 

Estou recebendo pela porta serial no Arduino uma string com 5 valores diferentes separados por vírgula mais ou menos desta forma: 1000,2000,3000,4000,5000

 

Pois bem, preciso pegar essa string e dividi-la em 5 variáveis diferentes do tipo float, ou seja,

A=1000

B=2000

C=3000

D=4000

E=5000

 

Alguém poderia me ajudar com esse código?

 

Obrigado.

 

Abraços.

 

Exibições: 4146

Responder esta

Respostas a este tópico

Obs: os valores não são fixos, ou seja, podem variar de tamanho...

 

exemplo: 100,2000,10,155,3500

 

A quantidade de casas decimais podem variar com o tempo.

Supondo que você esteja lendo a entrada  de dados do arduino pela serial de um computador.

Você pode fazer uma aplicação desktop usando Pascal (Delphi ou Lazarus):

Veja exemplo:

Var valores:tstringlist;

begin

valores:=tstringlist.create;

valores.delimiter:=char(','); //<voce definiu como virgula,mas poderia ser outro delimitador

valores.delimitedtext:='100,2000,5000,30,etc';//dados lidos na porta serial

showmessage(valores.text); //exibe lista

valores.savetofile('arquivo.txt');//salva para arquivo

valores.free;

end;

Almir,

Na verdade esses dados estou lendo de um simulador de vôo (Flightgear) pelo Linux.

 

Ele envia pela serial os valores de 5 variáveis diferentes separados apenas pela virgula, por exemplo:

 

o primeiro valor é referente a altitude da aeronave, o segundo é referente ao valor de taxa de subida, o terceiro de potência do motor e assim por diante...

 

Preciso de um código que eu possa implementar na própria IDE do Arduino.

 

Obrigado pela atenção.

 

Abraço.

sua_String.replace(',', '\n');  // usa a função replace,substituindo virgula pela quebra de linha

Sugiro vc varrer a string começando pelo fim.Quando vc pegar o primeiro char da direita vc pode fazer uma comparação usando switch, se for '1' iguala uma variavel(vamos supor num=0) a 1 vezes o peso da unidade que seria 1, se for '5'

num += 5*peso;

e ai vai.Esse peso seria uma variável responsável por ajustar unidades, dezenas, centenas e etc.Depois pula pro próximo char, mesmo procedimento de comparação, porém com um peso de dezena você faz peso*=10; caso o char,por exemplo seja '3', então faça

num+=3 * peso; logo você terá 30 mais o valor anterior de unidade.

Quando o char for uma virgula, o switch deve preparar uma nova variável pra receber os próximos valores.

Vetores seriam bem práticos.

Ah, cuidado pra não ultrapassar o inicio da string.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço