获取联系人/将联系人存储到SIM卡


11

我有GSM屏蔽罩,是否有任何方法可以将已存储的联系人存储在SIM卡上?似乎GSM库不支持将数据写入SIM卡或从SIM卡读取数据?

我的目的是将SIM卡的电话号码和一些变量存储到SIM卡本身上,这样,我就不需要不时更改程序。

我需要做的就是通过任何一部手机在SIM卡中输入所有变量(也许通过将变量存储为联系人,因为电话簿功能在手机上应该很常见)。

Answers:


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()
{

}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.