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