Вернуться к библиотеке GSM

 

voiceCall()

Описание

Совершает голосовой звонок на указанный номер. Метод возвращает разные значения, в зависимости от установленного режима GSM-подключения (синхронного или асинхронного). Подробности см. ниже.

Синтаксис

voice.voiceCall(number)

Параметры

  • number: массив символов - набираемый номер.

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

int

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

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

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

Пример

#include <GSM.h>

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

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

String remoteNumber = "";  // набираемый номер
char charbuffer[20];

void setup()
{

  // инициализируем последовательный интерфейс передачи данных
  Serial.begin(9600); 

  Serial.println("Make 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);
    }
  }

  Serial.println("GSM initialized.");
  Serial.println("Enter phone number to call.");

}

void loop()
{

  // добавляем все входящие символы в строку String:
  while (Serial.available() > 0)
  {
    char inChar = Serial.read();
    // при поступлении символа конца строки необходимо совершить вызов:
    if (inChar == '\n')
    {
      // убеждаемся, что длина телефонного номера не слишком велика:
      if (remoteNumber.length() < 20)
      {
        // сообщаем пользователю о вызове:
        Serial.print("Calling to : ");
        Serial.println(remoteNumber);
        Serial.println();

        // набираем удаленный номер
        remoteNumber.toCharArray(charbuffer, 20);


        // проверяем, принят ли наш вызов на той стороне
        if(vcs.voiceCall(charbuffer))
        {
          Serial.println("Call Established. Enter line to end");
          // ожидаем ввода каких-либо данных
          while(Serial.read() !='\n' && (vcs.getvoiceCallStatus()==TALKING));          
          // и кладем трубку.
          vcs.hangCall();
        }
        Serial.println("Call Finished");
        remoteNumber="";
        Serial.println("Enter phone number to call.");
      } 
      else
      {
        Serial.println("That's too long for a phone number. I'm forgetting it"); 
        remoteNumber = "";
      }
    } 
    else
    {
      // добавляем последний символ к отправляемому сообщению:
      if(inChar!='\r')
        remoteNumber += inChar;
    }
  } 
}

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