Pages: 1 [2]   Go Down
Author Topic: RESOLVIDO: Receber e tratar dados?  (Read 3082 times)
0 Members and 1 Guest are viewing this topic.
'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3221
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mas tens de mandar tudo junto...

1234;XXXX

Foi assim que explicaste. Não disseste que ias enviar a pass e depois numa trama completamente diferente ias enviar um valor que querias alterar.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bom, aparentemente você não está limpando o buffer da serial do ARDUINO.
Tente mandar os testes assim
Senha correta: 1234;0000
Senha Incorreta: 1111;2222
E veja o que retorna quando mandar novamente 1234;0000

Assim você tem uma sistemática para os testes.
Eu assumo que
Quando mandou a senha CORRETA, mandou 1234;5667
Quando mandou a senha INCORRETA, mandou  4444;8888
Quando mandou a senha CORRETA novamente mandou 1234;5667

Então, quando fez o FOR para pegar novamente 4 caracteres, achando que ia pegar da senha correta, pegou os quatro caracteres subsequentes aos quatro caracteres da senha incorreta que eram ;888, e não a nova senha 1234.




« Last Edit: February 07, 2012, 01:03:57 pm by mmoscz » Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mas tens de mandar tudo junto...

1234;XXXX

Foi assim que explicaste. Não disseste que ias enviar a pass e depois numa trama completamente diferente ias enviar um valor que querias alterar.

Boas amigo,

Eu tenho sempre mandado tudo junto 1234;XXXX  mas n worka se tu propio exprimentares veras isso.

Obg.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bom, aparentemente você não está limpando o buffer da serial do ARDUINO.
Tente mandar os testes assim
Senha correta: 1234;0000
Senha Incorreta: 1111;2222
E veja o que retorna quando mandar novamente 1234;0000

Assim você tem uma sistemática para os testes.
Eu assumo que
Quando mandou a senha CORRETA, mandou 1234;5667
Quando mandou a senha INCORRETA, mandou  4444;8888
Quando mandou a senha CORRETA novamente mandou 1234;5667

Então, quando fez o FOR para pegar novamente 4 caracteres, achando que ia pegar da senha correta, pegou os quatro caracteres subsequentes aos quatro caracteres da senha incorreta que eram ;888, e não a nova senha 1234.



Boas amigo,


Como tenho de fazer para limpar o bufer?

obg

Obg



Logged

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eu já tinha mandado a unica forma que há para limpar o buffer.

http://arduino.cc/forum/index.php/topic,89602.msg674743.html#msg674743

Code:
else {
       Serial.println("FAIL");
       while(serial.avalaible()>0)
              {
              serial.read(); // Tira todos os caracteres do buffer.
              }
       }
Insira esse while após o seu Serial.println("FAIL"), isso vai retirar todos os caracteres disponíveis no buffer da serial.
« Last Edit: February 08, 2012, 10:16:25 pm by mmoscz » Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

Aqui fica o codigo full working.

Obg a todos pela ajuda  smiley

Code:
char pass [5];
int data;

void setup()
{
  //Create Serial Object
  Serial.begin(9600);
  Serial.println("ARDUINO ON!");
}

void loop() {
 
 if (Serial.available() >8) { //assumir que o outro byte vem a caminho.
    for (int i = 0; i<4; i ++) {
      pass[i] = Serial.read();
    }
    pass[4] = '\0'; //end string
 if   ((strcmp(pass, "1234") == 0) && (Serial.read() == ';')) {//equal and the separator is good
 
       for (int i = 0; i< 4; i++) {
           pass[i] = Serial.read(); } //get the number.
       data = atoi(pass);
       Serial.println("PASS OK!");
       Serial.println(data);
        Serial.println(pass[2]);
         }
       
      else if ((strcmp(pass, "4321") == 0) && (Serial.read() == ';')) {//equal and the separator is good
 
       for (int i = 0; i< 4; i++) {
           pass[i] = Serial.read(); } //get the number.
       data = atoi(pass);
       Serial.println("PASS 2 OK!");
       Serial.println(data);
        Serial.println(pass[2]); 
       
          }
       
       
       
    else
    {
       Serial.println("FAIL");
       }
        while (true) {
      if (Serial.available() > 0 && Serial.read() == 't') {
        break;
      }
    }
      }   

    }         
Logged

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Legal, muda o titulo para (resolvido), e indica o que fez para corrigir, pois fica mais fácil achar o problema e a solução.
Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


Pages: 1 [2]   Go Up
Jump to: