Go Down

Topic: Como receber bytes de outro micro pela serial do arduino? (Read 739 times) previous topic - next topic

  Bom pessoal como eu nunca me comuniquei com o arduino com outro equipamento estou tendo dificuldades mais vamos lá espero a ajuda dos amigos com certeza é um problema simples.

   Um exemplo , este cod é para enviar o comando para o outro equipamento (micro) está apenas o cod de comando , ai o mesmo irá me responder com a mesma quantidade de bytes o que eu quero é receber esses bytes e escrever na serial , conseguindo isto vou montando o cod e fazendo comparações se a resposta do outro micro foi true ou false e mostra  em um display por exemplo e etc. 
Code: [Select]

byte enroll []= {0x40, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x47, 0xA};    //comando

void escreve (byte testo[]) {    //função para escrever os comandos
  for (int x = 0; x <13; x++)
  {
    mySerial.write(testo[x]);
  }
  delay(30);
}
escreve(enroll);


Está parte está funcionando , só está faltando receber ok , fico aguardando algum amigo que possa me ajudar , agradeço desde já , valeu.

HugoPT

Quote
byte enroll []= {0x40, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x47, 0xA};    //comando

void escreve (byte testo[]) {    //função para escrever os comandos
 for (int x = 0; x <13; x++)//
 {
   mySerial.write(testo
  • );
     }
     delay(30);
    }
    escreve(enroll);

O teu array tem 13 elementos mas isto ira correr 14 vezes.A posiçao 0 tambem conta!
Pelo que entendi queres enviar essa trama e o receptor verifica-la e devolver um ok é isso?
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

LegendBR

#2
Nov 06, 2013, 04:45 pm Last Edit: Nov 06, 2013, 04:50 pm by LegendBR Reason: 1

O teu array tem 13 elementos mas isto ira correr 14 vezes.A posiçao 0 tambem conta!


O código dele está certo, Hugo, o for vai até x = 12 (x < 13), portanto varre todos os elementos e não invade memória.

Você está certo de que o comando está sendo enviado para o outro micro e ele está recebendo? Para verificar se ele está recebendo resposta, use este código após o delay (que aliás, talvez precise ser diminuído, para você não acabar perdendo dados):

Code: [Select]

while (mySerial.available())
{
 Serial.println(mySerial.read(), HEX);
}


Se tiver recebendo a resposta, esta é uma forma de armazená-la:

Code: [Select]

byte answer[13];
uint_8 n = 0;

while (mySerial.available() && (n < 13)) // ler enquanto tiver dados em mySerial, até o limite de 13 dados
{
 answer[n] = mySerial.read();
 n++;
}

if (n == 13)
{
 // trata a resposta
}

HugoPT

Quote
O código dele está certo, Hugo, o for vai até x = 12 (x < 13), portanto varre todos os elementos e não invade memória.

Sim esta correcto.Com a pressa pareceu me <=  :smiley-red:
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

LegendBR


Quote
O código dele está certo, Hugo, o for vai até x = 12 (x < 13), portanto varre todos os elementos e não invade memória.

Sim esta correcto.Com a pressa pareceu me <=  :smiley-red:



hehehe, é o que mais acontece com programação (ver coisa que não existe e vice-versa xD).

     Obg amigos , eu vou testar e dou o retorno ok.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy