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:
- Wykorzystanie tego drivera jest powiązane z zakupem 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. Nie można stosować obiekt PmCommData.

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 i 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: Ten komunikat 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 narzędzia SO Windows rasphone.exe. 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 wykorzystywać z tego powodu na przykład portu "COM1". W przypadku konieczności wysłania wiadomości SMS:

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:
Dim b1
pMe.Pm("/PmCommSMS").ClosePort
b1 = Pm.CreateProcessSync("rasphone -d GSMname", ".") 'podłączenie do sieci GPRS
If Not b1 Then ... 'Error Connect Rasphone
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