Salve,ho un problema su come confrontare caratteri da un sms, vorrei che quando ricevo un tipo di carattere singolo fai...il problema e che se il carattere sta in una stringa non dovrebbe essere riconosciuto.
[code]
while (( c = sms.read()) != -1) {
char s = c;
Serial.print(s);
if (s == 'a') {
sms.beginSMS(remoteNum);
sms.print("hai scritto 'a'");
sms.endSMS();
Serial.print("\nsms inviato");
[/code]
questo sketch riconoscie la 'a' anche se ci sono più di un carattere.
Ciao ,come si vede nel codice quando riceve un messaggio con il carattere 'a' fai...ma non dovrebbe fare niente se il carattere sta in una stringa come per esempio 'casa'.
Mah, anche io non ho capito bene, comunque farei così, ossia devi accumulare TUTTO il messaggio ricevuto e DOPO verificarne il contenuto:
...
char smsTxt[161]; // Buffer di ricezione SMS
...
// Leggo tutto il testo del messaggio
byte i = 0;
while ( i < 161 && c = sms.read() )
smsTxt[i++]= c;
smsTxt[i] = 0; // Terminatore della stringa nel buffer
Serial.print(smsTxt);
// Se l'INTERO messaggio contiene solo "a" (strcmp confronta tutta la stringa,
// ma in alternativa si può verificare la lunghezza con strlen() oppure
// un singolo carattere in prima posizione con smsTxt[0] )
if ( strcmp(smsTxt, "a") == 0) {
sms.beginSMS(remoteNum);
sms.print("hai scritto 'a'");
sms.endSMS();
Serial.print("\nsms inviato");
...
PS: attento a non mettere tag "code" di troppo, che finiscono dentro al codice
docdoc:
Funziona bene, ma stai continuando ad usare le "String" che sono comode da usare ma che sono ad alto rischio di malfunzionamenti e blocchi su Arduino.
Impara a non usarle, e ad usare le stringhe C. Ma contento tu..
Buongiorno.infatti Arduino si blocca dopo una ventina di minuti ,ora modifico il codice è faccio delle prove.
Grazie.