Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

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

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.

Библиотека 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()

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

  1. Arduino - hangCall()