Отримання контактів / зберігання контактів на SIM-картці


11

У мене є щит GSM і чи є способи отримати збережені контакти на SIM-картці? Здається, що бібліотека GSM не підтримує запис даних на / зчитування даних із SIM-картки?

Моя мета - зберегти номер телефону SIM-карти та деякі змінні на самій SIM-картці, наприклад, мені не потрібно час від часу змінювати програму.

Все, що мені потрібно зробити, - це ввести всі змінні в SIM-карту через будь-який мобільний телефон (можливо, зберігаючи змінні як контакти, оскільки функція телефонної книги повинна бути дуже поширеною на телефонах).

Відповіді:


6

Що ви досліджували поки що? Перейшовши за посиланням, яке ви надали для щита, приблизно в третьому рядку опису йде посилання на набір команд AT, який використовується чіпом.

Я щойно зробив кілька швидких пошуків і виявив:

2.2.4 ATD><n> Створіть телефонний дзвінок на номер у пам'яті

3.2.26 AT+CPBF Знайдіть записи телефонної книги

3.2.27 AT+CPBR Прочитайте поточні записи телефонної книги

3.2.28 AT+CPBS Виберіть пам'ять телефонної книги

напевно, гарне місце для початку.


1

Дякуємо @Madivad за натхнення команди AT. Я не дуже знайомий з GSM та Arduino. Але все одно, нижченаведене працювало для мене.

Подяки @Madivad та людям з форуму 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()
{

}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.