Arduino:Библиотеки/GSM/Класс GSMVoiceCall/hangCall()
Материал из Онлайн справочника
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Функция hangCall()[1]
Вешает трубку во время установленного соединения или звонков, информирующих о входящем вызове. Возвращаемые данные отличаются в зависимости от режима GSM-соединения (он может быть синхронным и асинхронным). Подробнее читайте ниже.
Синтаксис
voice.hangCall()
Параметры
Нет.
Что возвращает
В асинхронном режиме: если последняя команда еще выполняется – «0», если успешно выполнена – «1», если ошибка – меньше «1».
В синхронном режиме: если трубка повешена – «1», если нет – «0». Тип данных – int.
Пример
// библиотеки:
#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."); // "РАЗГОВОР. Введите Enter, чтобы прервать."
while(Serial.read()!='\n')
delay(100);
vcs.hangCall();
Serial.println("HANG. Waiting Call."); // "ВЕШАЕМ ТРУБКУ. Ждем звонка."
break;
}
delay(1000);
}
См.также
- getVoiceCallStatus()
- ready()
- voiceCall()
- answerCall()
- hangCall()
- retrieveCallingNumber()