連絡先の取得/連絡先のSIMカードへの保存


11

GSMシールドを持っていますが、SIMカードに保存された連絡先を取得する方法はありますか?GSMライブラリはSIMカードへのデータの書き込み/読み取りをサポートしていないようです?

私の目的は、SIMカードの電話番号といくつかの変数をSIMカード自体に保存することです。そのため、プログラムを時々変更する必要はありません。

必要なのは、携帯電話を介してSIMカードにすべての変数を入力することです(おそらく、電話帳の機能は電話で非常に一般的であるため、変数を連絡先として保存することによって)。

回答:


6

これまでに何を研究しましたか?シールドに指定したリンクに続いて、説明の3行目は、チップで使用されるATコマンドセットへの参照です。

私はそれをいくつか簡単に検索しましたが、見つけました:

2.2.4 ATD><n> メモリ内の番号に電話をかける

3.2.26 AT+CPBF 電話帳のエントリを見つける

3.2.27 AT+CPBR 現在の電話帳エントリを読む

3.2.28 AT+CPBS 電話帳のメモリストレージを選択する

おそらく開始するのに適した場所です。


1

ATコマンドのインスピレーションをくれた@Madivadに感謝します。私は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()
{

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.