2009-09-14 6 views
8

Ich habe ein GSM-Modem an meinen Computer angeschlossen, ich möchte es sendete Textnachrichten erhalten ein Python-Programm mit i geschrieben haben, frage mich nur, was die beste Technik für Daten abzufragen ist.Was ist das beste Design für die Abfrage eines Modems für eingehende Daten?

Sollte ich ein Programm schreiben, das eine Endlosschleife hat, die kontinuierlich nach eingehenden SMS sucht, d. H. Innerhalb der Schleife sendet das Programm die AT-Befehle und liest die Eingabedaten. Oder haben Modems eine Möglichkeit, eine Anwendung von eingehenden Daten (SMS) zu signalisieren.

Ich versuche mir vorzustellen, ein Mobiltelefon ist nur ein GSM-Modem, und wenn eine SMS empfangen wird, warnt das Telefon Sie vor dem Ereignis, oder hat die Telefonsoftware eine Endlosschleife, die eingehende Daten abfragt.

+0

Gute Frage! Nur neugierig, welches GSM-Modem haben Sie? –

+0

Huawei, Modell E220 HSDPA USB Modem – gath

Antwort

3

Ich habe etwas Ähnliches vorher geschrieben. Es gibt eine Möglichkeit, AT-Befehle zu verwenden, um dem Modem mitzuteilen, dass es bei jedem Empfang einer SMS angezeigt wird.

Als Referenz verwendete ich eine Maestro 100 GSM Modem in einer eingebetteten Anwendung.

Zuerst müssen Sie das Modem ordnungsgemäß initialisieren. Ich habe den Textmodus für die SMS verwendet, aber Sie verwenden möglicherweise etwas anderes. Wählen Sie aus diesen, was Sie wollen. AT + CNMI ist am wichtigsten.

AT&F0 # Restore factory defaults 
ATE0 # Disable command echo 
AT+CMGF=1 # Set message format to text mode 
AT+CNMI=1,1,0,1,0 # Set new message indicator 
AT+CPMS="SM","SM","SM" # Set preferred message storage to SIM 

Sie würden dann auf eine Benachrichtigung warten, die so aussieht. (Nicht auf die Indexnummer übereinstimmt, die möglicherweise zwischen den Benachrichtigungen abweichen)

+CMTI: "SM",0 # Message notification with index 

Wenn Sie diese Meldung erhalten, rufen Sie die ungelesenen SMS suchen:

AT+CMGL="REC UNREAD" # Retrieve unread messages 

Ich würde Ihnen empfehlen, auch eine Umfrage hinzufügen, vielleicht alle 5 Minuten oder so, nur für den Fall, dass Sie eine Benachrichtigung verpassen. Mit serieller Kommunikation können Sie nie sicher sein!

+0

Dank, kann es kaum erwarten. – gath

+0

Ok, bearbeitet. Hoffe das hilft. Ich habe diese Befehle in einer eingebetteten Anwendung mit einem externen GSM-Modem verwendet. –

+0

Großartig, lass es mich ausprobieren. – gath

0

Ich finde ich kann mich nicht viel von dem AT-Befehlssatz erinnern, der sich auf SMS bezieht. Andre Millers Antwort scheint ein paar Glocken zu läuten. Wie auch immer, du solltest die Dokumentation sehr sorgfältig lesen, ich bin mir sicher, dass es einige Fehler gab.

Meine Empfehlung für die Abfrage ist mindestens alle 5 Sekunden - dies ist nur für Robustheit und Reaktionsfähigkeit angesichts der Trennung.

Ich habe eine Zustandsmaschine verwendet, um zwischen Initialisierung, Lesen und Löschen von Nachrichten zu navigieren.

Verwandte Themen