Boa Tarde.
Estou tentando juntar 4 variaveis para formar um numero, que recebo de uma string serial de um aparelho , uso um arduino mega, a parte de receber a string serial esta tudo certo
so preciso junta las para formar uma varialvel.
Parte do Codigo:

String que recebo na serial é R,1455\r\n até entao tudo certo
void Decodifica_Monitor()
{

switch (Buffer_1[0])
{
case 'R':

Buffer_1[2];
Buffer_1[3];
Buffer_1[4];

Buffer_1[5];
// Preciso juntar o valor 1 com 4 com 5 formando inteiro 145;

}
}

Exibições: 415

Responder esta

Respostas a este tópico

converter para inteiro e depois calcular da seguinte forma: a*100+b*10+c

é isso que você está procurando?

São 4 variaveis, preciso juntar para formar uma so inteira.

Boa noite.

 pode me apontar onde  está este  valor "1" que voce se refere:

Buffer_1[2];
Buffer_1[3];
Buffer_1[4];

Buffer_1[5];
// Preciso juntar o valor 1 com 4 com 5 formando inteiro 145;

Qual formato da array Buffer_1?.. Int, char , etc...

Para que possamos entender su necessidade e poder ajuda-lo melhor, recomendo que usando o ícone de clips, você faça um upload do seu código.

NÂO cole código na área de texto do tópico

RV mineirim

Eu faria pelo metodo do bit lascado, ja sugerido pelo

Valor= a*100+b*10+c

Ou: 

Buffer_1[2];//1
Buffer_1[3];//4
Buffer_1[4];//5

Buffer_1[5];//5

Valor= (Buffer_1[2] & 15)*100+(Buffer_1[3] & 15)*10+Buffer_1[4] & 15;

O &15 serve para converter Ascii para casa decimal.

Por ex um 0x32, que é o '2' vira só 2.

Certamente existem formas mais polidas.

Mas compilem e comparem o tempo de execução e tamanho do código..

*pelo tiago merces 

Teste com este codigo Valor= (Buffer_1[2] & 15)*100+(Buffer_1[3] & 15)*10+Buffer_1[4] & 15;

No serial Monitor fica assim.


1,
11
114
15
1

11

111111

String original

C
,
1
4
5

Boa noite.

É o mesmo caso?

https://forum.arduino.cc/t/juntar-3-variaveis/997455

RV mineirim

Sim o mesmo mas agora lembrei que sao 4 casas decimais que preciso juntar ou ler o valor inteiro duma vez so.

Boa Noite Pessoal.

Consegui fazer o codigo funcionar, mas tenho outro problema quando o valor e menor que 1000 ele acrescenta um 0 no final por exemplo 145 ele transforma para 1450 e quando o valor esta acima de 1000

por exemplo 1596 quando este valoi diminue ele assume o ultimo caractere tipo 145 pega o 6 do 1596.

void Decodifica_Monitor()
{

switch (Buffer_1[0])
{
case ',':
val_1 = String(Buffer_1[2]);
val_2 = String(Buffer_1[3]);
val_3 = String(Buffer_1[4]);
val_4 = String(Buffer_1[5]);

resultado = val_1+val_2+val_3+val_4;
Serial.println(resultado);

break;
}

}

Fica assim


145
145
145
145    // ate aqui show
9876 
9876 //aqui a string muda show a leitura
9876
9876
9876
9876 //Aqui ta o problema quando retorna pra 145 ele pega o 6 do 9876
1456
1456
1456

Olá, Felipe!

   Acho que vai facilitar a vida do pessoal aqui se você não mostrar os resultados obtidos, mas vários exemplos de strings recebidos e resultados esperados.

   Normalmente é assim que se especifica, em parte, uma requisição de projeto, o que também pode ser usado neste caso.

D. T. Ribeiro

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço