So bearbeiten Sie die SIM800l-Bibliothek, um sicherzustellen, dass ein Anruf hergestellt wird
Ich benutze SIM800l, um Anrufe mit arduino UNO mit @ zu tätigAT Befehle. Mit diesemBibliothe Ich telefoniere mitgprsTest.callUp(number)
Funktion. Das Problem ist, dass es @ zurückgitrue
Auch die Nummer ist falsch oder es gibt keine Gutschrift.
Es ist klar, auf diesem Teil Code von GPRS_Shield_Arduino.cpp library warum es passiert. Es prüft nicht die Rückgabe vonATDnumberhere;
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;
}
Die Rückkehr vonATDnumberhere;
bei serieller Software-Kommunikation ist:
Wenn die Nummer falsch istERROR
Wenn kein Guthaben vorhanden ist
`MO CONNECTED //instant response
+COLP: "003069XXXXXXXX",129,"",0,"" // after 3 sec
OK`
Wenn es ruft und keine Antwort
MO RING //instant response, it is ringing
NO ANSWER // after some sec
Wenn es anruft und auflegt
MO RING //instant response
NO CARRIER // after some sec
Wenn der Empfänger keinen Träger hat
ATD6985952400;
NO CARRIER
Wenn es anruft, antworten und auflegen
MO RING
MO CONNECTED
+COLP: "69XXXXXXXX",129,"",0,""
OK
NO CARRIER
Die Frage is wie man mit dieser Funktion unterschiedliche Retouren für jeden Fall verwendetgprsTest.callUp(number)
, oder zumindest, wie man true zurückgibt, wenn es klingelt?