Получение контактов/сохранение контактов на SIM-карту

gsm

У меня есть GSM Shield, и есть ли способы получить сохраненные контакты на SIM-карте? Кажется, что библиотека GSM не поддерживает запись данных на SIM-карту/чтение данных с SIM-карты?

Моя цель — сохранить номер телефона SIM-карты и некоторые переменные на самой SIM-карте, чтобы мне не нужно было время от времени менять программу.

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

, 👍11


2 ответа


6

Что вы уже исследовали? По ссылке, которую вы дали для щита, примерно в третьей строке описания находится ссылка на Набор команд AT используется чипом.

Я только что сделал пару быстрых поисков и нашел:

2.2.4 ATD><n> Инициировать телефонный звонок на номер в памяти

3.2.26 AT+CPBF Поиск записей в телефонной книге

3.2.27 AT+CPBR Чтение текущих записей телефонной книги

3.2.28 AT+CPBS Выбрать место в памяти телефонной книги

вероятно, это хорошее место для начала.

,

2

Спасибо @Madivad за вдохновение для AT-команд. Я не очень хорошо знаком с GSM и Arduino. Но в любом случае, нижеприведенное сработало для меня.

Спасибо @Madivad и людям с форума arduino.

#include <GSM.h>
GSM gsmAccess(true);
int sizer = 200;
char myNumber[200];
int timeout = 5000; // в миллисекундах

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

  boolean notConnected = true;

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

  while(notConnected){
    if(gsmAccess.begin() == GSM_READY) // Примечание: 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");

  // поиск имени контакта "тест"
  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");

 // распечатать телефон "теста"
 Serial.println(myNumber);

}

void loop()
{

}
,