【发布时间】:2017-12-16 11:20:36
【问题描述】:
我创建了一个可以发送和接收短信/语音电话的 Arduino 程序。 但是我不知道怎么接电话。
除Get_Call() 函数外,一切正常。我希望这个函数能够接听电话并使用我的Send_Call 函数之类的串行命令停止此呼叫。
我还没有发现程序如何使用 AT 命令接听电话。
这是我的代码:
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
char message=0;
void setup() {
SIM900.begin(19200);
delay(25000);
Serial.begin(19200);
Serial.println("OK");
digitalWrite(9, HIGH);
delay(1000);
}
void Send_Call() {
SIM900.println("ATD 0608446677;");
delay(100);
SIM900.println();
while(Serial.read() != '1') {
delay(100);
}
SIM900.println("ATH");
delay(1000);
}
void Send_SMS() {
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.println("AT+CMGS=\"0608446677\"");
delay(100);
SIM900.println("test sms");
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
Serial.println("SMS sent successfully");
}
void Get_SMS() {
SIM900.println("AT+CNMI=2,2,0,0,0");
delay(1000);
}
void Get_Call() {
}
void loop() {
if (Serial.available()>0) {
if(Serial.read() == 'p') {
Send_Call();
}
if(Serial.read() == 's') {
Send_SMS();
}
Get_SMS();
Get_Call();
}
if (SIM900.available()>0)
Serial.write(SIM900.read());
}
我为Get_Call()尝试了这个:
void Get_Call() {
SIM900.print("AT+ATA\r\n"); //accept call
SIM900.print("AT+CLIP=1\r\n"); //view phone number
while(Serial.read() != '1') {
delay(100);
}
SIM900.println("ATH"); //exit call when send in com '1'
}
【问题讨论】:
-
我更新了我的消息并添加了我的 get_call 代码
-
运行此草图时会得到什么。不起作用不会提供有关情况的太多信息。
-
我什么都没有... com3 接到电话时不通知。
-
没有人可以帮助我吗?
-
我的对你有用吗?它适用于我。