hangCall()

描述

挂断连线中的通话或是来电。该函式回传的值在同步与非同步的情况下意义不同,底下会有详细的介绍。

语法


voice.hangCall()

参数

无参数

回传

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()
answerCall()
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.