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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage