+1 голос

В примере, приведенном в вики gprs shield определяет, что новый звонок, а как определить от кого этот звонок?

#include <GPRS_Shield_Arduino.h>   

// создаём объект класса GPRS и передаём в него объект Serial1
GPRS gprs(Serial1);

// можно указать дополнительные параметры — пины PK и ST 
// по умолчанию: PK = 2, ST = 3 
// GPRS gprs(Serial1, 2, 3);   


void setup() { 
  // открываем последовательный порт для мониторинга действий в программе 
  Serial.begin(9600); 
  
  // ждём, пока не откроется монитор последовательного порта 
  // для того, чтобы отследить все события в программе 
  while (!Serial) { } 
  Serial.print("Serial init OK\r\n"); 
  // открываем Serial-соединение с GPRS Shield 
  Serial1.begin(9600); 
  
  // включаем GPRS шилд 
  gprs.powerOn(); 
  
  // проверяем есть ли связь с GPRS устройством 
  while (!gprs.init()) { 
    // если связи нет, ждём 1 секунду 
    // и выводим сообщение об ошибке 
    // процесс повторяется в цикле, 
    // пока не появится ответ от GPRS устройства 
    delay(1000); 
    Serial.print("GPRS Init error\r\n"); 
  } 
  // вывод об удачной инициализации GPRS Shield 
  Serial.println("GPRS init success"); 
  // сообщаем об ожидании звонка 
  Serial.println("Wait to call "); 
}   


void loop() { 
  // ожидаем звонка 
  if (gprs.ifcallNow()) { 
    // если поступает входящий звонок 
    // выводим сообщение 
    Serial.println("Incoming call"); 
    // по истечении 5 секунд берём трубку 
    delay(5000); 
    gprs.answer(); 
    // выводим сообщение о начале разговора 
    delay(1000); 
    Serial.println("Call a conversation"); 
    while (!gprs.ifcallEnd()) { 
      // ждём пока месть абонент не положит трубку 
    } 
    // выводим сообщение о конце разговора 
    Serial.println("Call over"); 
  } 
}

(3 баллов) 2
исправил

1 Ответ

+4 голосов


В начале кода добавьте:

char incomingPhoneNumber[46];

Далее в коде ловите звонок и вытягиваете номер:

if (gprs.ifcallNow()) {
  gprs.isCallActive(incomingPhoneNumber);
}

В incomingPhoneNumber будет номер.

(1.4 тыс. баллов) 2 9 31 1 отметил
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. dartWaiter

    42 балл(ов)

  2. parovoZZ

    14 балл(ов)

  3. Тигрыч

    12 балл(ов)

  4. Un_ka

    10 балл(ов)

  5. issaom

    7 балл(ов)

  6. andrewejder

    6 балл(ов)

Награды месяца
1-е место: Teensy 3.6
2-е место: Teensy 3.5
3-е место: Teensy 3.2

...