2016-04-23 16 views
0

Ich benutze Putty, um das Modem meines Telefons über die serielle Schnittstelle zu simulieren. Wenn mein Telefon einen Anruf empfängt, gibt es 'RING' in Putty aus, aber wenn der Anrufer den Anruf abbricht, gibt Putty keine Antwort oder Ergebnis aus.Wie Sie wissen, ob Sie einen eingehenden Anruf in AT-Befehlen verpasst haben

Wie würde das Modem wissen, dass der Anrufer den Anruf trennt/löscht, aber nicht in Putty ausgibt?

Dank

Antwort

2

Um verpasste Anrufe zu erkennen, können Sie drei Dinge versuchen.

Überprüfen Sie, ob eine geeignete AT+CIND Anzeige vorhanden ist, die Sie einschalten können. Ich glaube nicht, call werde tun, da ich davon ausgehe, es geht nur auf 1, wenn der Anruf beantwortet wird. Wenn Ihr Telefon callsetup oder etwas Ähnliches unterstützt, sollte das sein, was Sie brauchen (Sie müssen eine Logik implementieren, um zu erkennen, wenn ein Anruf nicht in den Status "Aktiv" geht).

Ein Beispiel für die Aktivierung von AT + CIND-Indikatoren finden Sie in Kapitel "8.57 Informative Beispiele" in 27.007 für weitere Erläuterungen, und achten Sie auf The subparameter order in the command is defined by the query command order, z. wenn AT + CIND =?

kehrt
+CIND: ("abc",(0-1)),("xyz",(0,1)),("call",(0,1)) 

dann nennen, ist Index 3 und für

+CIND: ("abc",(0-1)),("call",(0,1)),("xyz",(0,1)) 

Anruf Index 2. Wählen Sie nicht harten Code alle Annahmen, hier sollte diese Laufzeit (ein Check analysiert und geprüft werden am Anfang ist genug).


Alternativ können Sie auf RING Start Polling Anrufstatus mit AT+CLCC, bis der Anruf wird nicht mehr aufgeführt.


Oder Sie könnten die MC Telefonbuchspeicher abfragen und Änderungen erkennen.

+0

Ich habe deine zweite Methode verwendet. Jedes Mal, wenn mein Modem klingelt, sende ich das AT + CLCC und sehe, ob es etwas anderes als nur "OK" zurückgibt. Danke für Ihre Hilfe. – Dac

2

Die meisten Modems zeigen die eingehende Telefonnummer und eine RING, wenn ein Anruf und eine END empfangen wird, wenn der Anruf abgebrochen wird. Um die verpassten Anrufe anzuzeigen, können Sie die folgenden AT Befehle verwenden.

AT+CPBS="MC" 
AT+CPBR=1,99 

erste Befehl weist das Modem in den verpassten Anruf Telefonbuch zu suchen und den zweiten Befehl lädt Einträge 1 bis 99. Beachten Sie, dass dieses Verhalten nicht Standard ist. Ich konnte dies auf einem GSM-Modul replizieren, aber nicht auf meinem 3G-Modem. Versuchen Sie es an Ihrem Modem und prüfen Sie, ob das funktioniert. Alles Gute.

+0

Nur um zu klären, die 'MC' - verpasste Anrufe - Telefonbuchspeicher ist in jeder möglichen Weise Standard. Die Anzahl der Einträge, z.B. 99, ist vollständig herstellerspezifisch (und streng genommen ist MC nur ein "definierter" Speicherwert von AT + CPBR, und nicht unbedingt erforderlich. In der Praxis unterstützen jedoch alle Hersteller von Mobiltelefonen dies, aber vielleicht Hardware-Dongles von Unternehmen, die dies nicht tun auch Handys haben eine weniger vernünftige Untergruppe von unterstützten Standard-AT-Befehlen? Es gibt keine guten Gründe, MC heute nicht zu unterstützen (und tat es in den frühen 90ern kaum)). – hlovdal

+0

Um herauszufinden, welche Telefonbuchspeicher unterstützt werden und wie viele Einträge sie unterstützen, sehen Sie das letzte Beispiel im Kapitel "8.57 Informative Beispiele" im [27.007 Standard] (http://www.3gpp.org/ftp/Specs/html-info /27007.htm), die beide die Befehle gibt und erklärt. – hlovdal

+0

In Bezug auf den 'END'-Ergebniscode ist dies nicht Standard, es gibt weder in V.250 noch in 27.007 Verweise darauf. Die nächste Sache wäre der 'NO CARRIER' [Doppel-Endergebnis-Code] (http://Stackoverflow.com/a/15591673/23118) für Sprachanrufe, die mit ATD initiiert wurden, aber das ist dann nicht für ankommende Anrufe. – hlovdal