Come Cambiare Numero di Telefono tramite SMS

Buon giorno sto creando un programma tramite Arduino collegando un modem SIM900A il programma funziona regolarmente con il numero inserito all'interno di Arduino ma via messaggio vorrei cambiare il numero di telefono mi potreste dire come fare???

Ti segnalo che, nella sezione in lingua Inglese, si può scrivere solo in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.

Grazie.

A quanto detto da pert aggiungo ...

... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (... e, per evitare future possibili discussioni/incomprensioni, prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...

@rayan2016: ma lo leggi con ATTENZIONE ciò che ti viene scritto ??? :open_mouth:

Guglielmo

P.S.: post in inglese eliminato.

Non mi è chiara la domanda ...
... al SIM900 si dice da applicativo, via comando AT (AT+CMGS), a che numero di telefono inviare il SMS ... tu invece cosa vuoi fare?

Guglielmo

Invio_SMS.ino (3.6 KB)
Buona era Sig. Guglielmo
in allegato troverai il mio programma che avrei creato con Arduino per inviare degli SMS su un numero di telefono. Io via SMS vorrei cambiare il numero di telefono inserendo un altro numero per poi inviare i messaggi e purtroppo non riesco a trovare una soluzione. Mi potreste essere di Aiuto???
Grazie in Anticipo
Antonio

Premetto che non ho mai usato una shield GSM quindi ci saranno metodi più efficaci per leggere i dati in arrivo ma non conoscendoli mi limiterò a fornire un suggerimento basandomi sulla strategia che già usi per leggere i dati del gsm ovvero:

inchar=GSM.read();

ogni volta che usi questo metodo leggi un carattere in arrivo dal GSM, quindi dovresti prevedere una serie di caratteri che identificheranno che un certo SMS serve a cambiare il numero Es.

if(inchar=='N'){
   delay(10);
   inchar=GSM.read(); 
   if(inchar=='E'){
       delay(10);
       inchar=GSM.read();
       if(inchar=='W'){
            delay(10);
            inchar=GSM.read();
       }
    }
  }

In questo modo quando ricevi un messaggio del tipo NEW +39847453875438743
leggendo tutti i caratteri successivi a NEW avrai il nuovo numero a cui inviare i messaggi, tale numero dovrai memorizzando in una variabile stringa Es. nuovo_numero.
Avendo questo numero poi dovrai memorizzarlo, ad esempio nella EEPROM di Arduino (Sto generico perché non hai dichiarato quale Arduino usi) Es.

EEPROM.put(INDIRIZZO_NUM_TEL_EEPPROM, nuovo_numero)

e aggiornare anche la variabile che usi ora phone_no con il nuovo numero ricevuto
Nel setup dovrai poi leggere il numero dalla EEPROM Es.

EEPROG.get(INDIRIZZO_NUM_TEL_EEPPROM, phone_no)

in modo da usarlo quando il dispositivo si riavvia.
Se il codice che hai postato è scritto da te non avrai particolari problemi a modificarlo come suggerito.
Ti consiglio comunque di cambiare strategia perché leggere ogni singolo carattere con una serie di if annidati non è pratico, manutenibile e comprensibile.
Prova a modificare il codice in modo che leggi tutto il disponibile in un array di char Es.

while(GSM.available() > 0){
   char inChar = GSM.read();
   receivedChars[index] = inChar;
   index++;
}
if(strcmp_s(receivedChars, "COMANDO1", 8)){
  //Fai cose per il comando 1
}
if(strcmp_s(receivedChars, "COMANDO2", 8)){
  //Fai cose per il comando 2
}

Arduino che sto Utilizzando Arduino UNO

Ok, allora i suggerimenti forniti così come l'uso della librearia EEPROM sono pienamente applicabili

Scusami ma da poco che utilizzo Arduino nel programma che io ho scritto

EEPROM.put(INDIRIZZO_NUM_TEL_EEPPROM, nuovo_numero)
EEPROG.get(INDIRIZZO_NUM_TEL_EEPPROM, phone_no)

Dove la Vado a scrivere perchè non sto riuscendo a capire

while(GSM.available() > 0){
   char inChar = GSM.read();
   receivedChars[index] = inChar;
   index++;
}
if(strcmp_s(receivedChars, "COMANDO1", 8)){
  //Fai cose per il comando 1
}
if(strcmp_s(receivedChars, "COMANDO2", 8)){
  //Fai cose per il comando 2
}

Anche questa funzione. Scusami ma sto abbastanza confuso
Grazie in Anticipo

Ok, allora ti consiglio di partire a ripensare totalmente il programma perché così come è strutturato non riuscirai mai a sistemarlo se non riesci ad afferrare il mio suggerimento precedente.
Il consiglio è quello di iniziare a riscrivere il tutto in modo da poter ricevere il messaggio in arrivo in un array di char come ti ho indicato in precedenza (il while per intendersi) quando sei riuscito a ricevere un messaggio e a stamparlo correttamente sulla seriale allora potrai affrontare la seconda parte, ovvero verificare il messaggio ricevuto (o parte di esso) e in base a cosa ricevuto fare un'azione od un'altra (anche semplicemente stampare su seriale due cose differenti).
A quel punto potrai molto più facilmente comprendere dove inserire la parte di memorizzazione nella EEPROM del nuovo numero, mentre la successiva lettura del numero da usare andrà sempre e comunque nel setup.

Ok Proverò a trovare una soluzione come mi avete detto per adesso grazie mille per l'aiuto.