Eae galera, mais uma vez estou aki pedindo ajuda kk.

Galera é o seguinte eu to tentando receber uma mensagem no arduino com a sim900 e se a mensagem for igual a senha ele escreve no serial Senha OK, caso contrário ele escreve Senha Incorreta, porém a comparação não funciona, mesmo a mensagem estando com a senha ele da que a senha ta errada. 

Códiigo:

#include "SIM900.h"
#include <SoftwareSerial.h>

#include "sms.h"
SMSGSM sms;

int numdata;

char menssagem[160];
char number[20];
char senha[160] = "TESTE";
String m;
boolean started=false;

void setup()
{
//Serial connection.

Serial.begin(9600);
Serial.println("GSM Shield testing.");

//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");

};

void loop()
{
if(started){
//Read if there are messages on SIM card and print them.
if(gsm.readSMS(menssagem, 160, number, 20))
{
Serial.println("Numero: ");
Serial.println(number);
Serial.println(menssagem);
sms.DeleteSMS((int)0);
started = false;
Serial.print("Verificando...");
m = String(menssagem);
Serial.println(m);
if(menssagem == senha) {
Serial.println("Senha OK...");

}
else
{

Serial.println("SENHA INCORRETA !!!");
}
}



delay(1000);

}
};

Exibições: 1284

Responder esta

Respostas a este tópico

Nunca usei, mas dando uma busca achei isso:

http://arduino.cc/en/Tutorial/StringComparisonOperators

Ou seja, vc deveria usar o tipo String.

Tente:

if (String(menssagem) == String(senha))...

Acabei de testar aki cara, não funcionou :(, mas valeu..

Olha esse link

http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c520.html

Ali tem a função strcmp que faz o que tu precisa.

nesse link eles comentam sobre o uso da função strcmp no arduino

http://forum.arduino.cc/index.php?topic=40823.0

Tentei essa função, porém aparece que as Strings são diferentes:(, mesmo assim vlw...

Faz um for e compara caractere por caractere dos dois vetores e manda printar no serial monitor os caracteres, provavelmente deve tá pegando algum lixo após a palavra, o que tá dando erro.

Já testou assim :

if( menssagem.indexOf("TESTE") >= 0 )
{
   
}

boa sorte!

no if tenque ser
if(menssagem == "senha") {
Serial.println("Senha OK...");

}

errado! Não devem ser usadas aspas antes e depois de senha

senha é uma variável que foi definida no topo do sketch

Minha opinião vai na linha do raciocínio do Guilherme Zaffari, isto é, eu também acho que a senha que chega via SMS está com algum lixo no final e precisaria tratar isso. Deve estar vindo algum código após a palavra TESTE

Não testei se daria certo, mas experimente fazer o sketch fazer a comparação dos 5 primeiros caracteres da mensagem SMS, pois a senha deverá conter 5 caracteres

acho que deve ser nesta linha tb!

quando vc imprime no serial a mensagem está correta?

kra sou meio prego nisso, mas vc está definindo uma char de 160 posições isso não precisaria de um caracter indicando o final da frase? "\0", ja que não está utilizando todas as posições?

ou talvez usar uma String, adicionar à string cada caractere da mensagem e então comparar com outra string(com a senha armazenada)?

É verdade... agora que eu vi, ta MUITO ERRADO oque eu disse... poe a variável senha como String e ve se funciona

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço