Boa dia a todos.

Sou novato em arduino e não piloto la grandes cosas o C, então estou trabalhando em um código que eu envio via url para ethernet shield um parametro que tem seu valor um conjunto de oito caracteres ex.:"10101100". Bem quando chega no arduino, consigo isolar a linha pegar o valor através do client.read(), mas ele me devolve uma string e eu preciso que ele fique no formato "0b10101100" para que eu possa utilizar em outra função.

Tentei concatenar, mas claro que não consegui. Então se alguem tiver alguma ideia para um velho novato, fico devendo até conseguir pagar he he he.

Desde  já muito obrigado.

Exibições: 351

Responder esta

Respostas a este tópico

Obrigado Calos pela resposta, mas como falei sou bem cru em c. Já estive dando uma olhada nos links, mas o exemplos e a analise da lógica que entendi destes é a conversão de um número, determinando a base e o retorno é sempre uma string;

eu preciso de algo +- assim

entro com a variável em string  "10101010"  se tenho como retorno a variável tipo byte 0b10101010 ou até mesmo pode ser o retorno em HEXA 0xAA também me serve.

Sei que parece algo simples, mas to meio enferrujado e vendo de programação em delphi e web php/JS e a última vez que programei algo já faz um 5 anos.

mais uma vez obrigado.

Oi MLCF, bom dia,

pelo que entendi, você quer transformar um numero composto de 8 dígitos Zeros e Uns em 

um numero binário (Hexadecimal). 

Se for isto, uma solução (Devem existir outras) pode ser feita assim:

Vou pegar seu exemplo:   10101010

separe todos dígitos, e depois  multiplique o primeiro por 128, some com o segundo multipicado por 64, com o terceiro multiplicado por 32, e assim até o último multiplicado por 1.

1*128 =128 + 0*64 = 128 +1*32 = 150 +0*16 = 150 +1*8 = 158 +0*4 =158 + 1*2 =170 +0*1 = 170  =  AA = 10101010.

Boa sorte

Rui

Obrigado a todos que tentaram me ajudar e/ou pelo menos leram meu primeiro post.

Depois de procurar mais um pouco consegui resolver meu problema montando a seguinte função:

byte strToByte(String st){
  byte pinState = 0B11111111;
for(int i = 0; i<8; i++){
      if(st[i]=='0'){bitClear(pinState,7-i);}
  }
return pinState;    
}

chamando stoToByte("111001110);, me retorno o byte com eu precisava, ou seja, montei como uma string o valor emitido e me retornou na saída o byte. Não sei se é a forma mais elegante e/ou mais correta de faze-lo, mas caso alguém precise de algo parecido, para o meu caso deu certo.

Um abraço a todos.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço