2015-06-20 12 views
7

Ich schrieb das folgende Python-Programm zur Kommunikation mit meinem D-Link DWM-156 GSM modem. Dieses Programm wartet auf eingehende Anrufe und da es eine RING Warnung empfängt, akzeptiert es diesen Anruf.So senden und empfangen Sie einige Daten über ein GSM-Modem während eines aktiven Anrufs (Python und AT-Befehl)

es funktioniert zum Glück gut;)

Das Programm:

import time 
import serial 

phone = serial.Serial("COM10", 115200, timeout=5) 

try: 
    time.sleep(1) 
    while(1): 
     x = phone.readline() 
     print(x) 
     if (x == b'RING\r\n'): 
      phone.write(b'ATA\r') 
      time.sleep(0.5) 

finally: 
    phone.close() 

Output während des Laufens:

>>> ================================ RESTART ================================ 
>>> 
b'' 
b'' 
b'' 
b'\r\n' 
b'RING\r\n' #Here, my friend (named "Jimmy",for example), called me. 
b'OK\r\n' 
b'' 
b'' 
b'' 
b'' 
b'' 

Wie Sie oben sehen, unmittelbar nach einem eingehenden Anruf das GSM-Modem akzeptiert es und von diesem Punkt bis zum Ende haben wir eine aktive cal l.

Meine Fragen:

1- Ist es möglich, einige Daten (SMS zum Beispiel) während dieses aktiven Anrufs senden/empfangen? Oder kann ich zumindest während dieses aktiven Anrufs auf der anderen Seite dieses Kanals (d. H. Auf dem Lautsprecher von Jimmys Handy) ein Geräusch machen? (Ich will nicht erkennbar Ton senden, ein Rauschen ist genug. Obwohl eine Methodik mit erkennbarer Stimme zu senden ist wirklich besser.)

2- Warum dieses Programm eingehende Anrufe erkennen, aber nicht erkennt eingehende SMS? Schau unten. Sie können die Ausgabe meines Programms sehen, wenn Jimmy 3 SMS an mein GSM-Modem gesendet hat (und er für alle eine "gelieferte" Benachrichtigung in seinem Handy erhalten hat).

>>> ================================ RESTART ================================ 
>>> 
b'' 
b'' 
b'' 
b'' 
b'' 
b'' 
b'' 

Wie Sie oben sehen, erhielt ich nichts, während er 3 SMS geschickt! Warum?

+0

Ich verstehe immer noch nicht, welche Art von Daten Sie während eines aktiven Anrufs senden möchten? ... und Sie sagten "Rauschen" ist genug ... zu welchem ​​Zweck? –

+0

Die Art der Daten spielt keine Rolle. Im ersten Schritt möchte ich nur sehen, ob es möglich ist, während des aktiven Anrufs Daten zu empfangen oder nicht. Wenn Sie zum Beispiel einen Freund mit Ihrem Handy anrufen, wenn Ihr Freund plötzlich eine der Tasten drückt (1,2 ....), hören Sie einen Signalton, richtig? Ich möchte diesen Piepton hören! Was ist der Zweck? Der Zweck ist, ein Programm zu schreiben, das diese Art von Befehlen behandelt (Befehle nach Aufruf).) Hast du jemals diese automatischen Antworten erlebt, dass eine Frau auf der anderen Seite sagt "drücke 1 für x, drücke 2 für y" und so weiter? Ich möchte fast ein Programm schreiben wie Dieses (nicht genau) – Abraham

+0

@ KhalilAmmour- خليلعمور I Ich sagte, ich möchte "Rauschen" senden, weil: ** 1 - ** Diese Befehle sind nicht wirklich erkennbare Sounds für uns und das sind nur einige Zahlen. ** 2 - ** Ich wollte das Problem nicht kompliziert machen. – Abraham

Antwort

0

Die meisten GSM-Modems benötigen eine Initialisierung, damit sie eingehende SMS signalisieren. Ich glaube, das ist es, worauf sich Khalil bezieht. Diese kommen als eine Reihe von AT-Befehlen, die Sie senden sollten, bevor Sie Ihre Schleife betreten.

Ich habe dies erfolgreich in der Vergangenheit mit ein paar verschiedenen GSM-Modems gemacht und erinnere mich, dass, obwohl es einige gerätespezifische Details gibt, die allgemeinen Befehle, die Sie senden müssen, die gleichen sind.

Eine schnelle Suche führt mich zu:

Vielleicht können Sie diese als Ausgangspunkt verwenden.

Verwandte Themen