Obtention des contacts / stockage des contacts sur la carte SIM

11

J'ai le bouclier GSM et existe-t-il des moyens d'obtenir les contacts stockés sur la carte SIM? Il semble que la bibliothèque GSM ne supporte pas l'écriture de données sur / la lecture de données depuis la carte SIM?

Mon objectif est de stocker le numéro de téléphone de la carte SIM et certaines variables sur la carte SIM elle-même, par exemple, je n'aurais pas besoin de changer le programme de temps en temps.

Tout ce que je dois faire est d'entrer toutes les variables dans la carte SIM via n'importe quel téléphone mobile (peut-être en stockant les variables en tant que contacts, car la fonction d'annuaire devrait être très courante sur les téléphones).

MW_hk
la source

Réponses:

6

Qu'avez-vous recherché jusqu'à présent? En suivant le lien que vous avez donné pour le bouclier, environ la troisième ligne de la description est une référence au jeu de commandes AT utilisé par la puce.

Je viens de faire quelques recherches rapides et j'ai trouvé:

2.2.4 ATD><n> Envoyer un appel téléphonique au numéro en mémoire

3.2.26 AT+CPBF Rechercher des entrées de l'annuaire téléphonique

3.2.27 AT+CPBR Lire les entrées de l'annuaire téléphonique actuelles

3.2.28 AT+CPBS Sélectionner la mémoire de stockage du répertoire téléphonique

probablement un bon point de départ.

Madivad
la source
1

Merci à @Madivad pour l'inspiration de la commande AT. Je ne connais pas très bien le GSM et l'Arduino. Mais de toute façon, ce qui suit a fonctionné pour moi.

Crédits à @Madivad et aux personnes du 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()
{

}
MW_hk
la source