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);
}
};
Tags:
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
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por