Boa tarde pessoal...
Estou com um problema no meu TCC e gostaria de uma ajuda se possível.
Estou recebendo pela porta serial o valor de duas variáveis lidas do simulador de vôo Flightgear da seguinte forma:
Alt:154,6CRm:125,4
Sendo uma várial Alt: com valor de 154,6 e a outra variável CRm: com valor de 125,4
Preciso separar o valor 154,6 da primeira variável do valor da segunda de 125,4 e transformá-las em variáveis do tipo float, pois preciso usar esses valores em um PID.
O que preciso saber é como separar e transformar em float esses dados obtidos da serial.
Obrigado.
Tags:
Marcelo,
Boa tarde, tudo bem?
Os valores tem posição fixa? Quer dizer, serão sempre com 5 dígitos, separados pelo CRm?
Se tiver jeito, leve o seu projeto lá no Parque prá gente dar uma olhada...
[],
Prof. Mauro Assis
Boa tarde professor,
Na verdade não é fixo mas posso delimitar a quantidade de dígitos depois da vírgula através do protocolo de comunicação xml que faz a interface do arduino com o Flightgear.
Que horas começam as atividades lá no parque amanhã ?
Marcelo,
Eu chego cedo, 7:30. É bom se vc for cedo, pq aí dá para te dar mais atenção.
Até,
Ok, chegarei o mais cedo possível !
Muito Obrigado.
//Este foi feito agora,mas não foi testado.
//Pode ser posto no procedimento de click de botão no delphi,lazarus
//o procedimento de captura de serial deve ser trabalhada
//poe no uses strutils {unidade pascal para manipulação de strings}
Var Div_tag,Div_val,Bufer:tstringlist;
campo:string;
Valor:real;
i:integer;
Begin
//cria bufer
bufer:=tstringlist.create;
bufer.delimiter:=char('-');
//cria arquivo de saida
Div_valor:=tstringlist.create;
//joga as strings de entrada no buffer
bufer.text:=string('Alt:154,6CRm:125,4'); {variaveis que vem da serial}
bufer.text:=stringreplace(bufer.text,'CRm','-CRm',[rfreplaceall]);//acrescenta o hifen no texto separando
bufer.delimitedtext:=bufer.text;//separa em duas linhas
Div_tag:=tstringlist.create;Div_tag.delimiter:=char(':');// dois pontos
for i:=0 to bufer.count-1 do
begin
Div_tag.delimitedtext:=bufer.strings[i];//pega cada linha do bufer
//campo
campo:=Div_tag.strings[0];//primeira tag
Valor:=strtofloat(Div_tag.strings[1]);// tranforma valor string em float (real)
Div_valor.add('Sou um nome de campo:'+campo);//string
Div_valor.add('Sou um valor transformado em string novamente'+floattostr(valor));
end;
Div_valor.savetofile('arquivo_salvo.txt');
Showmessage('Processo concluído com êxito !');
Div_valor.free;
Div_tag.free;
bufer.free;
End;
//Deus,saúde,paz de Yehovah
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por