answerCall()
描述
接聽來電。該函式回傳的值在同步與非同步的情況下意義不同,底下會有詳細的介紹。
語法
voice.answerCall()
參數
無參數
回傳
int
:在非同步模式中回傳 0 表示最後呼叫的指令仍然在執行中,回傳 1 表示接聽來電成功,而回傳大於 1 的值代表有錯誤發生;在同步模式中回傳 1 表示接聽來電成功,回傳 0 表示接聽來電失敗
範例
#include <GSM.h> // PIN 碼 #define PINNUMBER "" // 初始化 GSM 函式庫 GSM gsmAccess; GSMVoiceCall vcs; // 用來存放電話號碼的字元陣列 char numtel[20]; void setup() { // 初始化 Serial Serial.begin(9600); Serial.println("Receive 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); } } // 先掛斷通話,避免待會誤判 vcs.hangCall(); Serial.println("Waiting Call"); } void loop() { // 檢查通話的狀態 switch (vcs.getvoiceCallStatus()) { // 什麼事都沒發生 case IDLE_CALL: break; // 當沒有播打電話的時候,不會發生這個情況 case CALLING: Serial.println("CALLING"); break; // 有來電! case RECEIVINGCALL: Serial.println("RECEIVING CALL"); // 取得來電號碼 vcs.retrieveCallingNumber(numtel, 20); // 輸出來電號碼到序列埠監控視窗 Serial.print("Number:"); Serial.println(numtel); // 接聽來電 vcs.answerCall(); break; // 通話中 case TALKING: Serial.println("TALKING. Enter line to interrupt."); while(Serial.read()!='\n') delay(100); vcs.hangCall(); Serial.println("HANG. Waiting Call."); break; } delay(1000); }
See also
- GSMVoiceCall
- getVoiceCallStatus()
- ready()
- voiceCall()
- 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.