Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmSMS - Driver do komunikacji z modemami GSM przy pomocy wiadomości SMS

Driver komunikacyjny do przesyłania wiadomości SMS umożliwia przy pomocy modemu GSM wysyłanie i odbieranie wiadomości SMS (Short Message Service).

Moduł GSM musi wspierać AT polecenia w trybie tekstowym (standard GSM ETSI 07.05). Standard ten wspiera większość modemów GSM.

 
Przykłady modułów GSM, z którymi driver został przetestowany:
- TC35, TC35i, MC35, MC35i, MC39i firmy SIEMENS
- GS-01 firmy WESTERMO
- Wavecom (np. WMOD2) firmy WISMO
 
Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy zaznajomić się z rozdziałem: Komunikacja przy pomocy driverów PROMOTIC.
 
Podstawowe właściwości drivera:
- Zastosowanie tego drivera wymaga zakup licencji: PmSMS. Z wersją freeeware PmFree lub przy opracowywaniu aplikacji (z licencją deweloperską w celach testowania) element ten zawsze funkcjonuje.
- Komunikacja przebiega poprzez Ethernet lub po łączu szeregowym komputera (COM1, COM2 ...). W chwili obecnej jest zaimplementowana transmisja po Ethernecie takich samych danych jak dla łącza szeregowego.

Nawet jeżeli urządzenie nie posiada łącza Ethernet, można do niego podłączyć przetwornik "łącze szeregowe-Ethernet" a po stronie PROMOTIC aplikacji wtedy przeprowadzać komunikację poprzez Ethernet.

- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmComm.

Driver umożliwia wykorzystanie obiektu PmCommMsg. Obiekt PmCommData nie można zastosować.

Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracja wstępna "PmSMS - wysyłanie i odbiór SMS z aplikacji"

 

Zalecone wartości parametrów:

Zalecane wartości dla pozycji Parametry łącza szeregowego:
Prędkość transmisji9600 Bd (zależne od ustawienia modemu GSM)
Ilość bitów informacji8
ParzystośćNO (żaden)
Ilość bitów stopu2 (zależne od ustawienia modemu GSM)
Ilość powtórzeń przy nieudanej transmisji0
Limit czasu pomiędzy odbiorem 2 znaków100 ms
Zwłoka pomiędzy odbiorem-wysyłaniem200 ms
Sterowanie działaniem RTSlog.1
Sterowanie działaniem DTRlog.1
Zalecane wartości dla pozycji Parametry Ethernet:
W chwili obecnej jest zaimplementowana transmisja po Ethernecie takich samych danych jak dla łącza szeregowego. W tym przypadku można parametry Ethernetu ustawić według parametrów konwertera Ethernet/łącze szeregowe.
Opis i zalecane wartości dla pozycji Parametry protokołu:
Limit czasu odbioru odpowiedzi2000 ms. Wyłącznie dla łącza szeregowego. Okres czasu (w milisekundach) w którym driver będzie oczekiwać na odpowiedć po odesłaniu wiadomości. Jeżeli do tego czasu nie zostanie odebrana żadna odpowiedć, wtedy transmisja wiadomości zostanie zakończona (zostanie wywołane zdarzenie onEndOfTransfer z błędem 24 lub 66).
Zwłoka w nawiązaniu połączenia przy inicjalizacji2000 - 5000 ms
Wykonaj inicializacyjne ustawienie modemuokreśla polecenie, które jest przesyłane do modemu podczas inicjalizacji
Tak - Polecenie "AT&F" (fabryczne ustawienie modemu)
Nie - Nie zostanie wysłane nic
W wiadomości odbieranej będzie także odesłana wiadomość (tzn. jest ECHO)Tak Niniejszy parametr jest nadrzędny niż odpowiedni parametr "Filtrować znaki ECHO" w konfiguratorach Ustawienie parametrów łącza szeregowego. Z tego powodu jest konieczne ustawić "Filtrować znaki ECHO"=Nie.
Format wiadomościIstnieje kilka rodzai modemów GSM, które nie są razem w pełni kompatybilne. Z tego powodu w driverze można określić rodzaj formatu wiadomości:
Tryb tekstowy wg. GSM 07.05 - Zalecamy wykorzystanie tego trybu. Dane są transmitowane w trybie tekstowym. Ten tryb jest kompatybilny na przykład z GSM modemami: Siemens M20,TC35,TC35i,MC35,MC35i,MC39i, Westermo-GS01, Wavecom-WMOD2, itd.
PDU tryb dla starego modemu GSM M1 - Dane są transmitowane w tzw. danych PDU, które są kompatybilne z GSM modemem M1 firmy Siemens.
PDU tryb dla starego modemu GSM A1 - Dane są transmitowane w danych TPDU (wg. GSM 03.40), kompatybilne z modemem A1 (lecz prawdopodobnie także z modemem M20 oraz Westermo-GS01). W tym protokole jest jednak zabudowane tylko wysyłanie wiadomości SMS (odbiór nie)!

Opis komunikacji przy pomocy obiektów PmCommMsg

W parametrach wiadomości obiektu PmCommMsg można zdefinować 4 rodzaje wiadomości:
1) Inicjalizacja SMS: Ta wiadomość musi zostać uruchomiona przed wszystkimi innymi typami wiadomości. Wykona się inicjalizacja modemu GSM. Ze względu na powolność nawiązania połączenia (prawdopodobnie przy rejestracji w sieci GSM) jest możliwe, że inicjalizacja po raz pierwszy nie uda się. W tym przypadku jest konieczne zwiększenie zwłoki przy nawiązywaniu w parametrach protokołu lub ponownie wywołać wiadomość inicjalizacyjną.
- Zakładka Parametry:
- Preferowaná pamięć wiadomości: Może tu ustawić, która to pamięć modemu zostanie wykorzystana do transmisji danych. Możliwości są następujące:
- Wg. ustawienia w module GSM modulu (domyślnie)
- Pamięć na karcie SIM
- Pamięć modemu GSM
- Pamięć na SIM karcie i w modemie GSM
- W zakładce Dane-wysłanie znajdują się zmienne:
- PIN (Personal Identification Number): Numer PINu SIM (Subscriber Identity Module) karty włożonej do modemu GSM. Przykład: "1589"
- SCA (Service center addres): Numer telefoniczny centrum SMS.
- W zakładce Dane-odbiór nie ma żadnej zmiennej.
2) Wysłanie wiadomości SMS: Ta wiadomość wyśle wiadomość SMS pod wprowadzony numer telefoniczny.
- W zakładce Dane-wysłanie znajdują się zmienne:
- TLF (Phone number): Numer telefoniczny, pod który ma zostać wysłana wiadomość SMS. Przykład: "602505647" lub "+420602505647"
- MSG (Content of message): Tekst wiadomości SMS, który ma zostać wysłany. Tekst może zawierać najwyżej 160 znaków. Przykład: "Kociol1 - doszło do awarii"
- W zakładce Dane-odbiór nie ma żadnej zmiennej.
3) Odbiór wiadomości SMS: Ta wiadomość stwierdzi, czy w modemie GSM znajduje się przyjęta przynajmniej jedna wiadomość SMS. Jeżeli taka wiadomość znajduje się w modemie, wtedy zapisze zawartość wiadomości do danych odbioru, wiadomość SMS następnie zostanie usunięta z modemu GSM i transmisja zostanie zakończona. Jeżeli w modemie GSM nie znajduje się żadna odebrana wiadomość, wtedy transmisja zostanie zakończona (tzn. zostanie wywołane zdarzenie onEndOfTransfer) z błędem 62 (negatywne potwierdzenie). A więc uruchomenie tego rodzaju wiadomości jednorazowo odbierze najwyżej jedną wiadomość. W celu nieustannego odbioru przyjmowanych wiadomości SMS jest konieczne uruchamiać obiekt PmCommMsg z tym rodzajem wiadomości (przy pomocy metody Run) regularnie na przykład co 10 sekund.
- W zakładce Dane-wysłanie nie ma żadnej zmiennej.
- W zakładce Dane-odbiór znajdujuą się zmienne:
- TIME (Time of receive): Czas odbioru wiadomości do modemu GSM. Przykład: "13.5.2017 15:40"
- FROM (Phone number): Numer telefoniczny nadawcy wiadomości. Przykład: "+420602505648"
- MSG (Content of message): Tekst przyjętej wiadomości SMS.
4) Transmisja ogólnej wiadomości: Ta niestandardowa wiadomość jest przeznaczona do bezpośredniego sterowania modemu GSM, na przykład przy pomocy poleceń AT. Lista poleceń AT wychodzi poza zakres niniejszej dokumentacji.
- Zakładka Parametry:
- Typ odbioru danych: Można ustawić, czy dane są odbierane w 1 lub w 2 wiadomościach. Domyślnie znajdują się w 1 wiadomości. Jeżeli odpowiedź dociera na przykład wpierw z modemu GSM i dopiero następnie z centrum SMS, wtedy można ustawić na 2 wiadomości.
- W zakładce Dane-wysłanie znajdują się zmienne:
- DATA (Data for send): Tekst wiadomości (polecenia), które ma zostać wysłane do modemu GSM.
- W zakładce Dane-odbiór znajdujuą się zmienne:
- DATA (Data for receive): Tekst odpowiedzi z modemu GSM.
Notatki:
- Wiadomości SMS nie powinny zawierać znaków diakrytycznych.
- GSM modem może mieć pewne problemy z odbiorem wiadomości szybko następujących po sobie. W niektórych sytuacjach może się nawet rozłączyć i jest konieczne rączne zresetowanie modemu. Jeżeli do takich sytuacji będzie dochodzić, wtedy jest konieczne powiększenie:
a) Zwłoka pomiędzy odbiorem-wysyłaniem w oknie konfiguracyjnym Parametry łącza szeregowego.
b) Limit czasu odbioru odpowiedzi w oknie konfiguracyjnym Parametry protokołu.
 
Modem GSM, sieć GPRS i wysyłanie SMS-ów:

Jeżeli istnieje konieczność podłączenia modemu GSM/GPRS także do sieci GPRS, wtedy jest konieczna instalacja modemu w SO Windows. W czasie połączenia GPRS łącze szeregowe jest kontrolowane przez SO Windows (poprzez zainstalowany modem) i driver w tym czasie nie ma dostępu do tego łącza - a więc nie można poprzez niego wysyłać wiadomości SMS. Rozwiązaniem jest dynamiczne odłączenie sieci GPRS, podłączenie drivera, wysłanie/odbiór SMSów a następnie ponowne odłączenie drivera i podłączenie sieci GPRS. Siecią GPRS można sterować przy pomocy programu użytkowego rasphone.exe (jest częścią SO Windows)..

Przykład:

Na początku konfigurator PmComm > Ustawienie parametrów łącza szeregowego > Port szeregowy jest ustawiony na "Nieustawione". Sieć GPRS jest podłączona (nazwa modemu w SO Windows jest na przykład "GSMname") i nie można zastosować z tego powodu na przykład portu "COM1". W przypadku konieczności wysłania wiadomości SMS:

VBScriptWybierz oraz skopiuj do schowka

Dim b1, b2
b1 = Pm.CreateProcessSync("rasphone -h GSMname", ".")  'odłączenie od sieci GPRS
If b1 Then
  b2 = pMe.Pm("/PmCommSMS").OpenPort("COM1")
  If b2 Then
    pMe.Pm("/PmCommSMS/Msg1").Run  'wysłanie wiadomości SMS
  Else
    'Error OpenPort !!!
  End If
Else
  'Error Disconnect Rasphone !!!
End If
Jeżeli nie doszło do błędu, wtedy za pomocą tych poleceń zostało zainicjowane wysłanie wiadomości SMS. Po wysłaniu wiadomości SMS zostanie wywołane zdarzenie PmCommMsg.onEndOfTransfer w którym można odłączyć port i ponownie podłączyć się do sieci GPRS:
VBScriptWybierz oraz skopiuj do schowka

Dim b1
pMe.Pm("/PmCommSMS").ClosePort
b1 = Pm.CreateProcessSync("rasphone -d GSMname", ".")  'podłączenie do sieci GPRS
If Not b1 Then
  'Error Connect Rasphone
End If
Polecenia odłączenia i ponownego podłączenia sieci są synchroniczne i mogą trwać dłuższy czas (kilka sekund). Z tego powodu jest zalecane wykorzystanie opisanych algorytmów w innym thredzie - patrz W jaki sposób uruchamiać skrypty w innym wątku (threadu).
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice