Estou precisando identificar o remetente de um sms para o sim 800L e cel.sender retorna faltando o último dígito.No exemplo abaixo, se o sender fosse "011982823030" retornaria "01198282303"  faltando o último digito(zero).

Estou utilizando  o sketch disponibilizado pelo Lab de garagem :

3.1 Acionamento via SMS:


#include <SerialGSM.h> //Inclui a biblioteca SerialGSM.h
#include <SoftwareSerial.h> //Inclui a biblioteca SoftwareSerial.h
SerialGSM cel(2,3); //Configura os pinos 2 e 3 para se trabalhar como Rx e Tx via Software

String SMS; //Variável para o armazenamento da SMS recebida
String numeroRemetente; //Variável para o armazenamento do número do remetente da SMS
String numeroPermitido = "011982823030"; //Variável que define o número do celular que o sistema irá responder

boolean sendonce=true; //Variável boleana utilizada pela biblioteca SerialGSM.h

void setup()
{
  int i; //Variável para contagem
  for(i=5;i<=7;i++) //Laço que configura os pinos D5 a D7 como saída e em nível lógico 0(LOW)
  {
    pinMode(i,OUTPUT);
    digitalWrite(i,LOW);
  }

Serial.begin(9600); //Incializa a Serial(Hardware) com um Baud Rate de 9600
  cel.begin(9600); //Incializa a Serial(Software) com um Baud Rate de 9600
  cel.Verbose(true); //Função de configuração da biblioteca SerialGSM.h
  cel.Boot(); //Função de inicialização do Módulo SM5100B
  cel.DeleteAllSMS(); //Função para deletar todas as SMS do chip
  cel.FwdSMS2Serial(); //Função utilizada para enviar as SMS para a Serial

Serial.println(">>>>> Celular Shield Inicializado <"); //Mensagem de início da aplicação
  Serial.println(); //Pula linha
}

void loop()
{
  if (cel.ReceiveSMS()) //Se o chip no Celular Shield receber uma SMS
  {
    Serial.println(); //Pula linha
    Serial.println(); //Pula linha
    Serial.println(); //Pula linha
    Serial.println(); //Pula linha
    Serial.println("~~NOVA MENSAGEM RECEBIDA~~"); //Imprime na serial "NOVA MENSAGEM RECEBIDA"
    Serial.println(); //Pula linha

Serial.print("REMETENTE: "); //Imprime na serial a palavra "REMETENTE:"
    Serial.println(cel.Sender()); //Imprime o número do remetente que a SMS foi enviada

numeroRemetente = cel.Sender(); //Armazena na variável numeroRemetente o número do remetente

if(numeroRemetente != numeroPermitido) //Se o número do remetente não for o mesmo que o número permitido
    {
      Serial.println("Não Permitido"); //Imprime a mensagem "Não Permitido" e não executa nada
    }

else //Senão, o número é o permitido e executará os comandos
    {
      Serial.print("MENSAGEM: "); //Imprime na serial a palavra "MENSAGEM:"
      Serial.println(cel.Message()); //Imprime a mensagem que foi recebida
      SMS = cel.Message(); //Guarda na mensagem na variável SMS

//++++++++Tratamento do Primeiro Caractere++++++++
      if(SMS[0] == '1') //Se o primeiro caractere da SMS for igual a 1
      {
        digitalWrite(5,HIGH); //Acende o LED verde
        Serial.println();//Pula uma linha na serial
        Serial.println("LED VERDE ACESO"); //Imprime a mensagem "LED VERDE ACESO"
      }
      else if(SMS[0] == '0') //Senão, se o primeiro caractere for igual a 0
      {
        digitalWrite(5,LOW); //Apaga o LED verde
        Serial.println(); //Pula uma linha na serial
        Serial.println("LED VERDE APAGADO"); //Imprime a mensagem "LED VERDE APAGADO"
        Serial.println(); //Pula uma linha na serial
      }
      //=================================================
    }   

//++++++++Tratamento do Segundo Caractere++++++++
    if(SMS[1] == '1') //Se o segundo caractere da SMS for igual a 1
    {
      digitalWrite(6,HIGH); //Acende o LED amarelo
      Serial.println(); //Pula uma linha na serial
      Serial.println("LED AMARELO ACESO"); //Imprime a mensagem "LED AMARELO ACESO"
    }
    else if(SMS[1] == '0') //Senão, se o segundo caractere for igual a 0
    {
      digitalWrite(6,LOW); //Apaga o LED amarelo
      Serial.println(); //Pula uma linha na serial
      Serial.println("LED AMARELO APAGADO"); //Imprime a mensagem "LED AMARELO APAGADO"
    }
    //=================================================

//++++++++Tratamento do Terceiro Caractere++++++++
    if(SMS[2] == '1') //Se o terceiro caractere da SMS for igual a 1
    {
      digitalWrite(7,HIGH); //Acende o LED vermelho
      Serial.println(); //Pula uma linha na serial
      Serial.println("LED VERMELHO ACESO"); //Imprime a mensagem "LED VERMELHO ACESO"
    }
    else if(SMS[2] == '0') //Senão, se o terceiro caractere for igual a 0
    {
      digitalWrite(7,LOW); //Apaga o LED vermelho
      Serial.println(); //Pula uma linha na serial
      Serial.println("LED VERMELHO APAGADO"); //Imprime a mensagem "LED VERMELHO APAGADO"
    }
    //=================================================

cel.DeleteAllSMS(); //Deleta todas as SMS
  }
}

Alguém poderia me ajudar?

Exibições: 130

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço