Шановні друзі! Сайт знаходиться в процесі перекладу на солов'їну мову. Все буде Україна!
Вернуться к библиотеке GSM

 

retrieveCallingNumber()

Описание

Извлекает номер звонящего абонента и сохраняет его в буфер.

Синтаксис

voice.retrieveCallingNumber(number, size)

Параметры

  • number : массив символов (буфер) для хранения входящего номера
  • size - размер массива

Возвращаемые значения

int

В асинхронном режиме метод retrieveCallingNumber() может возвращать следующие значения:

  • 0 - если последняя вызванная команда еще выполняется,
  • 1 - если последняя команда успешно выполнена
  • >1 - в случае ошибки.

В синхронном режиме функция возвращает 1 в случае успешного получения номера, 0 - в случае ошибки.

Пример

// библиотеки
#include <GSM.h>

// PIN-код
#define PINNUMBER ""

// объявляем экземпляр класса
GSM gsmAccess; // для включения режима отладки добавьте параметр 'true'
GSMVoiceCall vcs;


char numtel[20];           // буфер для хранения входящего номера телефона

void setup()
{
  // инициализируем последовательный интерфейс передачи данных
  Serial.begin(9600);
  Serial.println("Receive Voice Call");

  // состояние соединения
  boolean notConnected = true;

  // запускаем GSM-плату расширения
  // если на вашей SIM-карте установлен PIN-код - укажите его в качестве параметра функции begin()
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }


  vcs.hangCall();  // позволяет гарантировать правильную обработку модемом входящих событий

  Serial.println("Waiting Call");
}

void loop()
{
  // проверяем статус голосового вызова
  switch (vcs.getvoiceCallStatus()) 
  {
    case IDLE_CALL: // если ничего не произошло

      break;

    case CALLING: // этот участок будет пропущен, поскольку мы не совершаем звонков

      Serial.println("CALLING");
      break;

    case RECEIVINGCALL: // Да! Кто-то звонит нам

      Serial.println("RECEIVING CALL");

      // извлекаем номер звонящего абонента
      vcs.retrieveCallingNumber(numtel, 20);

      // выводим входящий номер
      Serial.print("Number:");
      Serial.println(numtel);

      // отвечаем на звонок, принимая вызов
      vcs.answerCall();         
      break;

    case TALKING:  // в случае ответа на вызов

      Serial.println("TALKING. Enter line to interrupt.");
      while(Serial.read()!='\n')
        delay(100);
      vcs.hangCall();
      Serial.println("HANG. Waiting Call.");      
      break;
  }
  delay(1000);
}

Смотрите также