Описание
Метод объекта GSMVoiceCall совершает голосовой звонок на указанный номер. Метод возвращает разные значения, в зависимости от установленного режима GSM-подключения (синхронного или асинхронного).
Синтаксис
voice.voiceCall(number);
Параметры
voice - объект класса GSMVoiceCall.
number - массив символов, являющийся набираемым номером.
Возвращаемые значения
int - В асинхронном режиме функция voiceCall() может возвращать следующие значения: 0 - если последняя вызванная команда еще выполняется, 1 - если последняя команда успешно выполнена и >1 - в случае ошибки. В синхронном режиме функция возвращает 1 при успешном вызове, 0 - в случае ошибки.
Пример
// подключаем библиотеку
#include <GSM.h>
// PIN-код. Если на вашей SIM-карте установлен 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;
}
}
}
Смотрите также:
Конструктор GSMVoiceCall
getVoiceCallStatus()
ready()
answerCall()
hangCall()
retrieveCallingNumber()
Библиотека GSM
Справочник
Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.
Источник: http://arduino.cc/en/Reference/GSMVCSVoiceCall |