voiceCall()

描述

播打電話至指定的電話號碼。該函式回傳的值在同步與非同步的情況下意義不同,底下會有詳細的介紹。

語法


voice.voiceCall(number)

參數

number:存放電話號碼的字元陣列

回傳

int:在非同步模式中回傳 0 表示最後呼叫的指令仍然在執行中,回傳 1 表示播打電話成功,而回傳大於 1 的值代表有錯誤發生;在同步模式中回傳 1 表示播打電話成功,回傳 0 表示播打電話失敗

範例

#include <GSM.h>

// PIN 碼
#define PINNUMBER ""

// 初始化 GSM 函式庫
GSM gsmAccess;
GSMVoiceCall vcs;

// 用來存放電話號碼
String remoteNumber = "";
char charbuffer[20];

void setup()
{

  // 初始化 Serial
  Serial.begin(9600); 

  Serial.println("Make Voice Call");

  // 連線狀態
  boolean notConnected = true;

  // 啟動 Arduino GSM shield,如果你的 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
    {
      // 加入讀到的字元到 remoteNumber
      if(inChar!='\r')
        remoteNumber += inChar;
    }
  } 
}

See also

GSMVoiceCall
getVoiceCallStatus()
ready()
answerCall()
hangCall()
retrieveCallingNumber()


函式庫參考主頁面

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.