Kontakte abrufen / Kontakte auf SIM-Karte speichern

11

Ich habe das GSM-Schild und gibt es Möglichkeiten, die gespeicherten Kontakte auf der SIM-Karte abzurufen? Es scheint, dass die GSM-Bibliothek das Schreiben von Daten auf / Lesen von Daten von der SIM-Karte nicht unterstützt.

Mein Ziel ist es, die Telefonnummer der SIM-Karte und einige Variablen auf der SIM-Karte selbst zu speichern, sodass ich das Programm nicht von Zeit zu Zeit ändern muss.

Alles, was ich tun muss, ist, alle Variablen auf der SIM-Karte über ein beliebiges Mobiltelefon einzugeben (möglicherweise durch Speichern der Variablen als Kontakte, da die Telefonbuchfunktion auf Telefonen sehr häufig sein sollte).

MW_hk
quelle

Antworten:

6

Was haben Sie bisher recherchiert? Nach dem Link, den Sie für die Abschirmung angegeben haben, bezieht sich die dritte Zeile der Beschreibung auf den vom Chip verwendeten AT-Befehlssatz .

Ich habe mich ein paar Mal umgesehen und dabei folgendes herausgefunden:

2.2.4 ATD><n> Rufen Sie die Nummer im Speicher an

3.2.26 AT+CPBF Telefonbucheinträge suchen

3.2.27 AT+CPBR Aktuelle Telefonbucheinträge lesen

3.2.28 AT+CPBS Telefonbuchspeicher auswählen

wahrscheinlich ein guter Ort, um zu beginnen.

Madivad
quelle
1

Vielen Dank an @Madivad für die Inspiration zum AT-Befehl. Ich bin nicht sehr vertraut mit GSM und Arduino. Aber wie auch immer, das Folgende hat bei mir funktioniert.

Dank an @Madivad und Leute aus dem Arduino-Forum.

#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()
{

}
MW_hk
quelle