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

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

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

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

Функции:

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

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

Синтаксис

voice.hangCall()

Параметры

Нет.

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

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

Пример

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

См.также

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

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