2015-06-20 19 views
7

Napisałem poniższy program w języku Python, aby komunikować się z moim D-Link DWM-156 GSM modem. Ten program czeka na połączenia przychodzące i po otrzymaniu alertu RING akceptuje to połączenie.Jak wysyłać i odbierać dane za pośrednictwem modemu GSM podczas aktywnego połączenia (Python i polecenie AT)

szczęście to działa dobrze;)

Program:

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() 

wyjściowy podczas pracy:

>>> ================================ 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'' 

Jak widać powyżej, niezwłocznie po otrzymaniu połączenia przychodzącego , modem GSM akceptuje to i od tego momentu do końca mamy aktywny cal l.

Moje pytania:

1- Czy można wysyłać/odbierać niektóre dane (na przykład SMS) podczas tej rozmowy telefonicznej? Lub przynajmniej mogę zrobić hałas po drugiej stronie tego kanału (np. Na głośniku telefonu Jimmy'ego) podczas tego aktywnego połączenia? (Nie chcę wysłać rozpoznawalny dźwięk, hałas jest wystarczająco. Chociaż o metodologię wysłać rozpoznawalny głos jest naprawdę lepsze.)

2- Dlaczego ten program wykrywa połączenia przychodzące, ale nie wykrywa przychodzące SMS-y? Zobacz poniżej. Możesz zobaczyć wyjście mojego programu, gdy Jimmy wysłał 3 SMS-y do mojego modemu GSM (I otrzymał "dostarczone" powiadomienie w swoim telefonie komórkowym dla wszystkich z nich).

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

Jak widać powyżej, otrzymałem nic, natomiast wysłał 3 SMS-ów! Czemu?

+0

Nadal nie wiem, jakie dane chcesz wysłać podczas aktywnego połączenia? ... a ty powiedziałeś, że "hałas" wystarczy ... w jakim celu? –

+0

Typ danych nie ma znaczenia. W pierwszym kroku chcę tylko sprawdzić, czy możliwe jest odebranie danych podczas aktywnego połączenia, czy nie. Kiedy dzwonisz do swojego przyjaciela, używając na przykład telefonu komórkowego, jeśli znajomy nagle naciśnie jeden z klawiszy (1,2 ....), usłyszysz sygnał dźwiękowy, prawda? Chcę odebrać ten sygnał! Co jest celem? Celem jest napisanie programu, który obsługuje tego rodzaju polecenia (komendy po wywołaniu.Czy kiedykolwiek doświadczyłeś tych automatycznych odpowiedzi, które kobieta po drugiej stronie mówi "naciśnij 1 na x, naciśnij 2 na y" i tak dalej, prawie chcę napisać program taki jak ten (niezupełnie) – Abraham

+0

@ KhalilAmmour- خليلعمور I powiedziałem, że chcę wysłać "hałas", ponieważ: ** 1 - ** Polecenia te nie są dla nas naprawdę rozpoznawalnymi dźwiękami i są to tylko liczby. ** 2 - ** Nie chciałem, aby problem był skomplikowany. – Abraham

Odpowiedz

0

Większość modemów GSM wymaga pewnej inicjalizacji, aby zasygnalizować przychodzące wiadomości SMS. Sądzę, że tak właśnie miał na myśli Khalil. Są one zbiorem poleceń AT, które należy wysłać przed wejściem do pętli.

Z powodzeniem dokonałem tego w przeszłości przy użyciu kilku różnych marek modemów GSM i pamiętam, że pomimo pewnych specyficznych dla urządzenia szczegółów, ogólne polecenia, które należy wysłać, są takie same.

Szybkie wyszukiwanie doprowadzić mnie do:

Może je wykorzystać jako punkt wyjścia.

Powiązane problemy