Ottenere i contatti / memorizzare i contatti sulla carta SIM


11

Ho lo scudo GSM e c'è un modo per ottenere i contatti memorizzati sulla carta SIM? Sembra che la libreria GSM non supporti la scrittura o la lettura dei dati dalla scheda SIM?

Il mio obiettivo è quello di memorizzare il numero di telefono della SIM card e alcune variabili sulla SIM card stessa, ad esempio, non avrei bisogno di cambiare il programma di volta in volta.

Tutto quello che devo fare è inserire tutte le variabili nella scheda SIM tramite qualsiasi telefono cellulare (magari memorizzando le variabili come contatti, poiché la funzione della rubrica dovrebbe essere molto comune sui telefoni).

Risposte:


6

Cosa hai cercato finora? Seguendo il collegamento fornito per lo scudo, circa la terza riga della descrizione è un riferimento al set di comandi AT utilizzato dal chip.

Ho appena fatto un paio di ricerche rapide e ho trovato:

2.2.4 ATD><n> Iniziare una telefonata al numero in memoria

3.2.26 AT+CPBF Trova le voci della rubrica

3.2.27 AT+CPBR Leggi le voci attuali della rubrica

3.2.28 AT+CPBS Seleziona la memoria della rubrica

probabilmente un buon punto di partenza.


1

Grazie a @Madivad per l'ispirazione del comando AT. Non ho molta familiarità con GSM e Arduino. Ma comunque, il seguito ha funzionato per me.

Crediti a @Madivad e alle persone del forum Arduino.

#include <GSM.h>
GSM gsmAccess(true);
int sizer = 200;
char myNumber[200];
int timeout = 5000; // in milli seconds

void setup()
{
  Serial.begin(9600);

  boolean notConnected = true;

  Serial.println("Connecting to the GSM network");

  while(notConnected){
    if(gsmAccess.begin() == GSM_READY) // Note: I do not require PIN #
      notConnected = false;
    else {
      Serial.println("Not connected, trying again");
      delay(1000);
    }
  }

  Serial.println("Connected");

  theGSM3ShieldV1ModemCore.println("AT+CPBS=\"SM\"");  
  int start1 = millis();   
  while((millis() - start1) < timeout){
    Serial.print(theGSM3ShieldV1ModemCore.theBuffer().read());
  }   
  Serial.print("Set to look at SIM card storage");

  // search for contact name "test"
  theGSM3ShieldV1ModemCore.println("AT+CPBF=\"test\"");  
  start1 = 0;
  start1 = millis();   
  while((millis() - start1) < timeout && !theGSM3ShieldV1ModemCore.theBuffer().extractSubstring(",\"", "\",", myNumber, sizer)){
    Serial.print(theGSM3ShieldV1ModemCore.theBuffer().read());
  }   
  Serial.print("Got contact number");

 // print out the phone of "test"
 Serial.println(myNumber);

}

void loop()
{

}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.