voiceCall()
Описание
Совершает голосовой звонок на указанный номер. Метод возвращает разные значения, в зависимости от установленного режима GSM-подключения (синхронного или асинхронного). Подробности см. ниже.
Синтаксис
voice.voiceCall(number)
Параметры
- number: массив символов - набираемый номер.
Возвращаемые значения
int
В асинхронном режиме функция voiceCall() может возвращать следующие значения:
- 0 - если последняя вызванная команда еще выполняется,
- 1 - если последняя команда успешно выполнена
- >1 - в случае ошибки.
В синхронном режиме функция возвращает 1 при успешном вызове, 0 - в случае ошибки.
Пример
#include <GSM.h> // PIN-код #define PINNUMBER "" // объявляем экземпляр класса GSM gsmAccess; // для включения режима отладки добавьте параметр 'true' GSMVoiceCall vcs; String remoteNumber = ""; // набираемый номер char charbuffer[20]; void setup() { // инициализируем последовательный интерфейс передачи данных Serial.begin(9600); Serial.println("Make 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); } } Serial.println("GSM initialized."); Serial.println("Enter phone number to call."); } void loop() { // добавляем все входящие символы в строку String: while (Serial.available() > 0) { char inChar = Serial.read(); // при поступлении символа конца строки необходимо совершить вызов: if (inChar == '\n') { // убеждаемся, что длина телефонного номера не слишком велика: if (remoteNumber.length() < 20) { // сообщаем пользователю о вызове: Serial.print("Calling to : "); Serial.println(remoteNumber); Serial.println(); // набираем удаленный номер remoteNumber.toCharArray(charbuffer, 20); // проверяем, принят ли наш вызов на той стороне if(vcs.voiceCall(charbuffer)) { Serial.println("Call Established. Enter line to end"); // ожидаем ввода каких-либо данных while(Serial.read() !='\n' && (vcs.getvoiceCallStatus()==TALKING)); // и кладем трубку. vcs.hangCall(); } Serial.println("Call Finished"); remoteNumber=""; Serial.println("Enter phone number to call."); } else { Serial.println("That's too long for a phone number. I'm forgetting it"); remoteNumber = ""; } } else { // добавляем последний символ к отправляемому сообщению: if(inChar!='\r') remoteNumber += inChar; } } }