Pobieranie kontaktów / przechowywanie kontaktów na karcie SIM

11

Mam tarczę GSM i czy są jakieś sposoby na zapisanie kontaktów na karcie SIM? Wydaje się, że biblioteka GSM nie obsługuje zapisywania danych na / odczytywania danych z karty SIM?

Moim celem jest zapisanie numeru telefonu karty SIM i niektórych zmiennych na samej karcie SIM, tak więc od czasu do czasu nie musiałbym zmieniać programu.

Wszystko, co muszę zrobić, to wprowadzić wszystkie zmienne na karcie SIM za pomocą dowolnego telefonu komórkowego (być może poprzez przechowywanie zmiennych jako kontaktów, ponieważ funkcja książki telefonicznej powinna być bardzo powszechna na telefonach).

MW_hk
źródło

Odpowiedzi:

6

Co do tej pory badałeś? Pod linkiem podanym dla tarczy, około trzeciego wiersza opisu jest odniesienie do zestawu poleceń AT używanego przez układ.

Właśnie przeprowadziłem kilka szybkich wyszukiwań i znalazłem:

2.2.4 ATD><n> Rozpocznij połączenie telefoniczne z numerem w pamięci

3.2.26 AT+CPBF Znajdź wpisy książki telefonicznej

3.2.27 AT+CPBR Przeczytaj aktualne wpisy książki telefonicznej

3.2.28 AT+CPBS Wybierz pamięć telefonu

prawdopodobnie dobre miejsce na rozpoczęcie.

Madivad
źródło
1

Dzięki @Madivad za inspirację polecenia AT. Nie znam się dobrze na GSM i Arduino. Ale i tak poniżej działało dla mnie.

Podziękowania dla @Madivad i osób z 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
źródło