Concatenando caracteres de uma matriz de caracteres em um número inteiro
Pergunta
Estou tentando criar um controlador de motor serial a partir de um ATtiny 85.Eu tenho configurado como escravo.Ele recebe caracteres de um byte mestre por vez e os carrega em uma matriz de caracteres para análise.
O problema que estou tendo é que não consigo encontrar uma maneira de concatená-los em vez de somar os valores.
rxChrData = TinyWireS.receive();
rxString[rxIndex] = char(rxChrData);
rxIndex++;
if (rxChrData == ':'){
//rxString 2-3 each holds the value 9.
//The lines below print "27" on the serial line.
n = int(rxString[2]+rxString[3]+rxString[4]);
Serial.println(n);
rxIndex = 0;
}
O valor de n é 27 e preciso que seja 999.
Tentei convertê-lo em String, concatenar e depois voltar para um número inteiro.Sem sorte.Eu também tentei algumas outras soluções ineptas, sem sorte.
Solução
Assim
n = 100*rxString[2]+10*rxString[3]+rxString[4];
ou talvez isso
n = rxString[2]+10*rxString[3]+100*rxString[4];
Outras dicas
Outra opção:usestrtol():
#include <cstdlib>
n = strtol( rxString+2, NULL, 10 );
para uma abordagem mais geral...
if (rxChardata == ':') {
// Consume the ':'
rxCharData = TinyWireS.receive();
int n = 0;
while (isdigit(rxCharData)) {
n = n * 10 + (rxCharData - '0');
rcCharData = TinyWireS.receive();
}
Serial.println(n);
}
Mas você precisará verificar o que acontece quando você chama TinyWireS.receive() e não há mais dígitos...ele retorna '\0'?Nesse caso, o procedimento acima funcionará.