我使用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,如果它正在振鈴?