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

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

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

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

Функции:

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

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

Синтаксис

voice.voiceCall()

Параметры

number  массив символов. Номер, на который будет совершен звонок

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

В асинхронном режиме: если последняя команда еще выполняется  «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 String remoteNumber = "";  // номер, на который будем звонить
11 char charbuffer[20];
12 
13 void setup()
14 {
15 
16   // инициализируем последовательную коммуникацию:
17   Serial.begin(9600); 
18 
19   Serial.println("Make Voice Call");  //  "Голосовой звонок на другой номер"
20 
21   // состояние соединения:
22   boolean notConnected = true;
23 
24   // запускаем GSM-модуль; если у SIM-карты есть PIN-код,
25   // вписываем его в скобочки функции begin():
26   while(notConnected)
27   {
28     if(gsmAccess.begin(PINNUMBER)==GSM_READY)
29       notConnected = false;
30     else
31     {
32       Serial.println("Not connected");  //  "Соединение не удалось"
33       delay(1000);
34     }
35   }
36 
37   Serial.println("GSM initialized.");  //  "GSM инициализирован"
38   Serial.println("Enter phone number to call.");  //  "Введите номер для звонка."
39 
40 }
41 
42 void loop()
43 {
44 
45   // добавляем все входящие символы в строку:
46   while (Serial.available() > 0)
47   {
48     char inChar = Serial.read();
49     // если встретили символ новой строки, это значит, что пора делать звонок:
50     if (inChar == '\n')
51     {
52       // убеждаемся, что номер не слишком длинный:
53       if (remoteNumber.length() < 20)
54       {
55         // информируем пользователя о факте звонка:
56         Serial.print("Calling to : ");  //  "Звонок на : "
57         Serial.println(remoteNumber);
58         Serial.println();
59 
60         // звоним по номеру:
61         remoteNumber.toCharArray(charbuffer, 20);
62 
63 
64         // проверяем, взяли ли на том конце трубку:
65         if(vcs.voiceCall(charbuffer))
66         {
67           Serial.println("Call Established. Enter line to end");    //  "Связь установлена. Введите Enter, чтобы завершить звонок"
68           // ждем, не нажмет ли пользователь Enter:
69           while(Serial.read() !='\n' && (vcs.getvoiceCallStatus()==TALKING));          
70           // и кладем трубку:
71           vcs.hangCall();
72         }
73         Serial.println("Call Finished");    //  "Звонок завершен"
74         remoteNumber="";
75         Serial.println("Enter phone number to call.");    //  "Введите номер для звонка"
76       } 
77       else
78       {
79         Serial.println("That's too long for a phone number. I'm forgetting it");  //  "Слишком длинный номер. Я такой не запомню"
80         remoteNumber = "";
81       }
82     } 
83     else
84     {
85       // добавляем последний символ к отправляемому сообщению:
86       if(inChar!='\r')
87         remoteNumber += inChar;
88     }
89   } 
90 }

См.также

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

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