Utilizando o RF 433MHz. Como juntar todos os caracteres em uma unica variável?

    Pessoal tudo ok? 

Preciso de uma ajudinha. Estou trabalhando com o RF de 433MHz, utilizando a biblioteca Virtual Wire, percebi que as mensagens são recebidas caractere por caractere, assim não estou conseguindo, juntar esses caracteres de uma única vez em uma string.

No meu código, tenho uma condição para executar determinada função, somente se for recebida a mensagem "abc123" do transmissor. Deste modo, preciso juntar todos esses caracteres recebidos, em uma única variável, para assim poder satisfazer a condição do if abaixo.

Exemplo :

if( mensagem == "abc123){

executa função

}

Segue o código abaixo, pessoal só coloquei apenas a função do loop do programa, pra não ficar mt grande aqui.

void loop()
{

if (vw_get_message(message, &messageLength)) // Sem bloqueio
{
Serial.print("Recebido: ");
for (int i = 0; i < messageLength; i++)
{
Serial.write(message[i]);

mensagem = mensagem+message[i]; <--------------- (DECLAREI  A STRING  mensagem PARA TENTAR, JUNTAR OS CARACTERES PROVINDOS DA VARIÁVEL message[i], O PROBLEMA É QUE NÃO SEI, SE OS CARACTERES SÃO RECEBIDOS REALMENTE NA VARIÁVEL message[i]

                                                                                      

}
Serial.println(); // Irá mostrar a mensagem recebida
}

Porem não deu certo, recebo vários números estranhos na variável mensagem.
Pelo o que eu entendi do código, ele tem a variável message que ira receber os caracteres vindo do emissor, e a messageLength para comparar o tamanho da mensagem, certo?
Também percebi, que sempre que tento jogar o conteúdo de message[i] para a variável mensagem,  e printa na serial, recebo vários códigos estranhos.


Mas ao utilizar a função Serial.write(message[i]), é possível ver os caracteres recebido =s

Alguém dá uma luz?

Agradeço a todos, desde já.

Exibições: 257

Responder esta

Respostas a este tópico

Olá amigo.

Bom dia...

Já tive esse tipo de problema lendo uma porta analógica em um PC, usando o Delphi, via nrcomm e porta serial.

(diferente de seu método)... eu estava lendo em um PC, mas o fundamento é o mesmo.

a atribuição de minha variável é que estava errada, e percebi que ela tinha que ser uma string (se fosse uma float tentaria fazer a soma e daria esse tipo de erro.. coisas estranhas).

Vc pode usar a função serial.write  e nessa função atribuir o valor recebido à uma nova variável do tipo string, dentro dessa função, mas declarada como global....

Assim, vc poderá usar o conteúdo dessa var em qq parte do programa...

Espero poder ter ajudado.

Abraços e boa sorte

RSS

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço