
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 od firmy SIEMENS
- GS-01 od firmy WESTERMO
- Wavecom (np. WMOD2) od 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
dla Ethernetu (aplikacja PROMOTIC jest klientem) lub
dla łącza szeregowego (
COM1,
COM2 ...). W chwili obecnej jest zaimplementowana transmisja poprzez Ethernet takich samych danych jak dla łącza szeregowego.
Nawet jeżeli urządzenie nie posiada łącza Ethernet, można do niego podłączyć konwerter "łącze szeregowe-Ethernet" a po stronie PROMOTIC aplikacji wtedy przeprowadzać komunikację poprzez Ethernet.
Zalecone wartości parametrów obiektu PmaComm:
Prędkość transmisji | 9600 Bd (zależne od ustawienia modemu GSM) |
---|
Ilość bitów informacji | 8 |
---|
Parzystość | NO (żaden) |
---|
Ilość bitów stopu | 2 (zależne od ustawienia modemu GSM) |
---|
Ilość powtórzeń przy nieudanej transmisji | 0 |
---|
Timeout pomiędzy odbiorem 2 znaków | 100 ms |
---|
Zwłoka pomiędzy odbiorem-wysyłaniem | 200 ms |
---|
Sterowanie działaniem RTS | log.1 |
---|
Sterowanie działaniem DTR | log.1 |
---|
W chwili obecnej jest zaimplementowana transmisja poprzez Ethernet takich samych danych jak dla łącza szeregowego. W tym przypadku można ustawić parametry Ethernetu według parametrów konwertera Ethernet/łącze szeregowe.
Timeout odbioru odpowiedzi | 2000 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 inicjalizacji | 2000 - 5000 ms |
---|
Wykonaj inicializacyjne ustawienie modemu | okreś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 Parametr ten jest nadrzędny niż odpowiedni parametr "Filtrować znaki ECHO" w konfiguratorach Ustawienie parametrów Ethernet-klient. Z tego powodu jest konieczne ustawić "Filtrować znaki ECHO"=Nie. |
---|
Format wiadomości | Istnieje 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 od 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)! |
---|
Kodowanie znaków | Podczas inicjalizacji drivera zostanie wysłane polocenie AT+CSCS, które przełączy modem do trybu, w którym wiadomości tekstowe będą wysyłane w określonym zestawie znaków. No - Polecenie AT+CSCS nie zostanie wysłane. Wszystkie wiadomości tekstowe będą wysyłane w postaci znaków ASCII. W takim przypadku nie można wysyłać znaki diakrytyczne (np. znaki ż,ą,ć ...). UTF-8 - Podczas inicjalizacji zostanie wysłane polecenie AT+CSCS=UTF-8. Wszystkie wiadomości tekstowe będą wysyłane w postaci Unicode UTF-8. Wtedy można wysyłać teksty zawierające dowolne znaki diakrytyczne. |
---|
Opis komunikacji przy pomocy obiektu PmaCommMsg
W parametrach wiadomości obiektu
PmaCommMsg można określić 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ą.
- Karta "
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 karcie "
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.
2)
Wysłanie wiadomości SMS: Ta wiadomość wyśle wiadomość SMS pod wprowadzony numer telefoniczny.
- W karcie "
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"
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
PmaCommMsg z tym rodzajem wiadomości (przy pomocy metody
Run) regularnie na przykład co 10 sekund.
- W karcie "
Dane-odbiór" znajdujuą się zmienne:
- TIME (Time of receive): Czas odbioru wiadomości do modemu GSM. Przykład: "13.5.2020 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ść służy do bezpośredniego sterowania modemu
GSM, na przykład przy pomocy poleceń AT. Lista poleceń AT wychodzi poza zakres niniejszej dokumentacji.
- Karta "
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 karcie "
Dane-wysłanie" znajdują się zmienne:
- DATA (Data for send): Tekst wiadomości (polecenia), które ma zostać wysłane do modemu GSM.
- W karcie "
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:
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 "PmaComm > Ustawienie parametrów Ethernet-klient > 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:
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
PmaCommMsg.onEndOfTransfer w którym można odłączyć port i ponownie podłączyć się do sieci GPRS:
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).