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 ...). Na razie jest zaimplementowano wysłanie 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 aplikacji PROMOTIC wtedy komunikować poprzez Ethernet.
Zalecone wartości parametrów obiektu PmaComm:
Prędkość transmisji | 9600 Bd (zależy od ustawienia modemu GSM) |
Ilość bitów informacji | 8 |
Parzystość | NO (żaden) |
Ilość bitów stopu | 2 (zależy 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 |
Zarządzanie działaniem RTS | log.1 |
Zarządzanie działaniem DTR | log.1 |
---|
Na razie jest zaimplementowano wysłanie 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. Tylko 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 v 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.2024 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).