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

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.

Библиотека GSM
(Обсуждение Arduino:Библиотеки/GSM#disqus_thread)

Функции:

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

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

Синтаксис

voice.answerCall()

Параметры

Нет.

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

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

Пример

 1 #include <GSM.h>
 2 
 3 // PIN-код:
 4 #define PINNUMBER ""
 5 
 6 // инициализируем экземпляр библиотеки:
 7 GSM gsmAccess; // чтобы включить режим отладки, в скобочках нужно поставить параметр «true»
 8 GSMVoiceCall vcs;
 9 
10 char numtel[20];           // буфер для входящего звонка
11 
12 void setup()
13 {
14   // инициализируем последовательную коммуникацию:
15   Serial.begin(9600);
16   Serial.println("Receive Voice Call");  //  "Прием голосового звонка"
17 
18   // состояние соединения:
19   boolean notConnected = true;
20 
21   // запускаем GSM-модуль; если у SIM-карты есть PIN-код,
22   // вписываем его в скобочки функции begin():
23   while(notConnected)
24   {
25     if(gsmAccess.begin(PINNUMBER)==GSM_READY)
26       notConnected = false;
27     else
28     {
29       Serial.println("Not connected");  //  "Соединение не удалось"
30       delay(1000);
31     }
32   }
33 
34   // кладем трубку на тот случай, если через это устройство 
35   // уже идет звонок; это нужно для того, чтобы модем корректно 
36   // реагировал на входящие события:
37   vcs.hangCall();
38 
39   Serial.println("Waiting Call");  //  "Ожидание звонка"
40 }
41 
42 void loop()
43 {
44   // проверяем статус голосового звонка:
45   switch (vcs.getvoiceCallStatus()) 
46   {
47     case IDLE_CALL: // ничего не происходит
48 
49       break;
50 
51     case CALLING: // этого произойти не должно, потому что звоним не мы
52 
53       Serial.println("CALLING");  //  "ЗВОНОК"
54       break;
55 
56     case RECEIVINGCALL: // Да! Нам кто-то звонит
57 
58       Serial.println("RECEIVING CALL");  //  "ПРИЕМ ЗВОНКА"
59 
60       // считываем номер звонящего:
61       vcs.retrieveCallingNumber(numtel, 20);
62 
63       // показываем этот номер на мониторе порта:
64       Serial.print("Number:");  //  "Номер:"
65       Serial.println(numtel);
66 
67       // отвечаем на звонок, устанавливаем соединение:
68       vcs.answerCall();         
69       break;
70 
71     case TALKING:  // в этом случае связь будет установлена
72 
73       Serial.println("TALKING. Enter line to interrupt.");    //  "РАЗГОВОР. Введите Enter, чтобы прервать."
74       while(Serial.read()!='\n')
75         delay(100);
76       vcs.hangCall();
77       Serial.println("HANG. Waiting Call.");  //  "ВЕШАЕМ ТРУБКУ. Ждем звонка."     
78       break;
79   }
80   delay(1000);
81 }

См.также

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

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