Arduino:Библиотеки/GSM/Класс GSMVoiceCall/voiceCall()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.

Функция voiceCall()[1]

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

Синтаксис

voice.voiceCall()

Параметры

number  массив символов. Номер, на который будет совершен звонок

Что возвращает

В асинхронном режиме: если последняя команда еще выполняется  «0», если успешно выполнена  «1», если ошибка  меньше «1». 
В синхронном режиме: если связь установлена  «1», если нет  «0». Тип данных  int.

Пример

#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.");  //  "GSM инициализирован"
  Serial.println("Enter phone number to call.");  //  "Введите номер для звонка."

}

void loop()
{

  // добавляем все входящие символы в строку:
  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");    //  "Связь установлена. Введите Enter, чтобы завершить звонок"
          // ждем, не нажмет ли пользователь Enter:
          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;
    }
  } 
}

См.также

  1. getVoiceCallStatus()
  2. ready()
  3. voiceCall()
  4. answerCall()
  5. hangCall()
  6. retrieveCallingNumber()

Внешние ссылки