Nhận danh bạ / lưu trữ danh bạ vào thẻ SIM


11

Tôi có tấm chắn GSM và có cách nào để lấy danh bạ được lưu trên thẻ SIM không? Có vẻ như thư viện GSM không hỗ trợ ghi dữ liệu lên / đọc dữ liệu từ thẻ SIM?

Mục đích của tôi là lưu trữ số điện thoại của thẻ SIM và một số biến vào chính thẻ SIM, do đó, tôi sẽ không cần phải thay đổi chương trình theo thời gian.

Tất cả những gì tôi cần làm là nhập tất cả các biến trong thẻ SIM qua bất kỳ điện thoại di động nào (có lẽ bằng cách lưu trữ các biến dưới dạng danh bạ, vì chức năng danh bạ điện thoại sẽ rất phổ biến trên điện thoại).

Câu trả lời:


6

Những gì bạn đã nghiên cứu cho đến nay? Theo liên kết mà bạn đã đưa ra cho tấm khiên, về dòng thứ ba của mô tả là một tham chiếu đến Tập lệnh AT được sử dụng bởi chip.

Tôi chỉ thực hiện một vài tìm kiếm nhanh thông qua nó và tìm thấy:

2.2.4 ATD><n> Bắt đầu cuộc gọi điện thoại đến số trong bộ nhớ

3.2.26 AT+CPBF Tìm mục danh bạ điện thoại

3.2.27 AT+CPBR Đọc các mục danh bạ điện thoại hiện tại

3.2.28 AT+CPBS Chọn bộ nhớ trong danh bạ

có lẽ là một nơi tốt để bắt đầu


1

Cảm ơn @Madivad cho cảm hứng lệnh AT. Tôi không rành lắm về GSM và Arduino. Nhưng dù sao, dưới đây làm việc cho tôi.

Tín dụng cho @Madivad và những người từ diễn đàn 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()
{

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.