我使用SIM800l通过使用AT commands的arduino UNO拨打电话。通过使用这个library我使用gprsTest.callUp(number)
功能拨打电话。问题是它返回true
即使数字是错误的或没有信用。如何编辑SIM800l库以确保呼叫建立
这部分代码清楚地表明GPRS_Shield_Arduino.cpp library为什么会发生。它不检查ATDnumberhere;
bool GPRS::callUp(char *number)
{
//char cmd[24];
if(!sim900_check_with_cmd("AT+COLP=1\r\n","OK\r\n",CMD)) {
return false;
}
delay(1000);
//HACERR quitar SPRINTF para ahorar memoria ???
//sprintf(cmd,"ATD%s;\r\n", number);
//sim900_send_cmd(cmd);
sim900_send_cmd("ATD");
sim900_send_cmd(number);
sim900_send_cmd(";\r\n");
return true;
}
返回
的ATDnumberhere;
软件串行通信的回报是:
如果号码有误 ERROR
如果没有信用
`MO CONNECTED //instant response
+COLP: "003069XXXXXXXX",129,"",0,"" // after 3 sec
OK`
如果是通话而没有回答
MO RING //instant response, it is ringing
NO ANSWER // after some sec
如果通话和挂断
MO RING //instant response
NO CARRIER // after some sec
如果接收机没有载体
ATD6985952400;
NO CARRIER
如果呼叫,接听和挂断
MO RING
MO CONNECTED
+COLP: "69XXXXXXXX",129,"",0,""
OK
NO CARRIER
问题是如何使用不同的回报f或通过这个函数gprsTest.callUp(number)
,或至少如何返回true,如果它正在振铃?