
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
- ale także każdy inny, który obsługuje standard GSM ETSI 07.05
Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy obejżeć "
PROMOTIC wideo kurs 4 - Drivery komunikacyjne".
Podstawowe właściwości drivera:
- Zastosowanie tego drivera wymaga zakup
licencji PmSMS. Podczas wytwarzania aplikacji w trybie freeware
PmFree lub z
licencją deweloperską oraz podczas jej testowania w runtime element ten jest zawsze funkcjonalny.
- Komunikacja jest 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 komunikować poprzez Ethernet.
Zalecone wartości parametrów obiektu PmaComm:
Prędkość transmisji | 9600 Bd (jest zależne od ustawienia modemu GSM) |
Ilość bitów informacji | 8 |
Parzystość | NO (żaden) |
Ilość bitów stopu | 2 (jest zależne od ustawienia modemu GSM) |
Ilość powtórzeń przy nieudanej transmisji | 0 |
Timeout pomiędzy odbiorem 2 znaków | 100 ms |
Opóźnienie pomiędzy odbiorem-wysyłaniem | 200 ms |
Zarządzanie działaniem RTS | log.1 |
Zarządzanie 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 / Nie.
Parametr ten jest nadrzędny niż odpowiedni parametr Filtrować znaki ECHO w konfiguratorach Ustawienie parametrów łącza szeregowego. Z tego powodu jest konieczne wybrać "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 według 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 (według 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 polecenie 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 tym 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. W tym przypadku 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ć typy wiadomości:
-
Inicjalizacja SMS: Wiadomość ta 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: Tu można ustawić, która to pamięć modemu zostanie wykorzystana do transmisji wiadomości. Możliwości są następujące:
- Według 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 (Short Message Service Center).
-
Wysłanie wiadomości SMS:
Wiadomość ta wyśle wiadomość SMS pod wprowadzony numer telefoniczny.
- Karta "
Parametry":
-
Timeout przyjęcia potwierdzenia wysłania [ms]:
W tym miejscu można ustawić jak długo driver będzie czekał (w milisekundach) na potwierdzenie odebrania transmisji.
Wartość
0 oznacza, że będzie czekał zgodnie z wartością parametru
Timeout transmisji jednego pakietu [ms].
Jeżeli do tego czasu nie zostanie odebrane żadne potwierdzenie, wtedy transfer wiadomości zostanie zakończony z błędem
24.
- 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 "+48602505647".
Czasami konieczne jest wpisanie tej liczby bez cudzysłowu, a czasem z cudzysłowem.
- 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".
-
Odbiór wiadomości SMS:
Wiadomość ta 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.2023 15:40"
- FROM (Phone number): Numer telefoniczny nadawcy wiadomości.
Przykład: "+48602505648"
- MSG (Content of message): Tekst przyjętej wiadomości SMS.
-
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 jednej wiadomości.
Jeżeli odpowiedź dociera na przykład najpierw 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 dynamicznie 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 łą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:
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 wątku (threadu) - patrz
Jak uruchamiać skrypty w innym wątku (threadu).