logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Różnice między modemami EDGE a GPRS w aplikacjach SMS - jak wybrać?

festusior 19 Lip 2014 22:39 2016 23
REKLAMA
  • #1 13809948
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    Witam

    Interesuje się tworzeniem aplikacji przy użyciu modemu USB.
    Wdziałem, że są 2 typy modemów. Jednym z nich jest modem USB GSM (Modem EDGE, koszt ~100zł), którym ja się posługuje, drugim jest modem GPRS (~800zł).

    Nie rozumiem różnicy pomiędzy nimi, w działaniu i zastosowaniu. Czyż nie pełnią one tej samej funkcjonalności?

    Tworze aplikacje przy użyciu modemu GSM USB (Modem EDGE). Tutaj kontrolnie się zapytam, czy prawidłowo to robię, że aplikacje do czytania i wysłania SMSów tworze poprzez program uruchamiający linie komand i wykonującym w nim komendy AT. Czy jest to dobre rozwiązanie, czy można wykonać jakieś „lepsze” w rozumieniu bardziej uniwersalne, bardziej prawidłowe (tak jak powinno się to robić) rozwiązanie.

    Moje główne pytanie jest następujące:
    Czym różni się modem przemysłowy np. F1303 (zresztą dowolny GPRS – bo tak chyba mówi się na przemysłowe) od modemu GSM oferowanych przez operatorów komórkowych?

    Funkcjonalność ta sama, to wysyła wiadomości i ta…
    Jestem laikiem więc mogę (i pewnie tak jest) grubo się mylić dlatego piszę ten post o wytłumaczenie.

    Byłbym wdzięczny za polecenie również literatury dotyczącej wykorzystania i obsługi takich modemów. Również na temat programowania na takie rządzenia poszukuje informacji. Czy modemy przemysłowe mają jakieś API, własny system operacyjny, czy też dobywa się to w standardowy sposób za pomocą komand AT?

    Proszę o pomoc
  • REKLAMA
  • #2 13810028
    Wojtek(KeFir)
    Poziom 42  
    Posty: 7605
    Pomógł: 678
    Ocena: 560
    Jeżeli używasz komend AT do komunikacji z modemem. To nie można tego robić bardziej prawidłowo. A co do nazewnictwa, są przecież jeszcze modemy HDSPA! I inne WCDMA czy jakieś. Musisz porównać konkretne specyfikacje konkretnych modemów, wtedy zobaczysz za co jest te 800zł.
  • #3 13810034
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    No właśnie o to pytam, jestem programistą, piszę aplikacje. Kiepsko znam się na elektronice, nie zbyt rozumiem specyfikacje - dlatego stąd moje pytanie.
    Co mi daje jeden modem, a co drugi? Co to zmienia od strony użytkowej?
  • #4 13810367
    Wojtek(KeFir)
    Poziom 42  
    Posty: 7605
    Pomógł: 678
    Ocena: 560
    Zależy co programujesz i w jakim celu. Generalnie te wszystkie skróty nic nie znaczą, bo to wszystko jest kompatybilne ze sobą - więc działać będzie.

    Generalnie techniką komunikacji radiowej w telefonach był GSM, w w jego obrębie GPRS i EDGE jako standardy transmisjii pakietowej. GPRS wolny, EDGE nieco szybszy - ale dziś to i tak obydwa nadają się do zdalnego odczytywania liczników prądu, za mała przepustowość.

    Potwm GSM to było mało, więc zstapiono je UMTSem, i tutaj transmisja pakietowa to różne warianty CDMA i HSPA. I tutaj mamy już 21MBit czyli całkiem rozsądnie. No a potem jest LtE.
    Na wikipedi masz wszystko w ładnych tabelkach. h
  • #5 13810405
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    Dziękuje, jeszcze 2 pytania na koniec:

    1. Już tak bardziej od strony programowej. Mam aplikacje odbierającą SMSy. Moim rozwiązaniem było napisanie programu, który co określony interwał czasowy wysyłał komendę AT, która sprawdzała, czy jakiś SMS przyszedł. Z doświadczenia wiem, ze takie rozwiązania nie są optymalne. Jest inny optymalniejszy sposób, aby dowiedzieć się, czy SMS przyszedł?
    2. @wojtek__(KeFir) wspominałeś o odczytywaniu stanu licznika za pomocą takiego modemu? Jak to wygląda? Otrzymujemy SMSa? Ciekawe zagadnienie, jak można coś takiego wykonać?
  • #6 13810822
    jdanecki
    Poziom 23  
    Posty: 632
    Pomógł: 30
    Ocena: 29
    Tak dla precyzji dodam, że wszystkie modemy komórkowe (2G, 3G, LTE) są urządzeniami, które potrafią (i to jest ich główne zadanie) przesyłać dane połączeniem GPRS.
    EDGE, HSPA itd to tylko nazwy kolejnych rozszerzeń prędkościowych.
    W kwestii obsługi SMS 95% modemów działa identycznie i bez znaczenia dla ciebie, czy to 2G, czy 3G, czy coś innego - póki nie chcesz przesyłać danych łączem pakietowym.

    1. Polling to zło. Możesz ustawić niektóre modemy tak, żeby wysyłały powiadomienie po COMie. Zawieszasz metodę/funkcję tak, aby wróciła z oczekiwania jak coś do niej przyjdzie i wtedy wyzwalać parsowanie tych informacji. Koniecznie w osobnym wątku.

    2. Wojtek mówił, o obsłudze liczników prądu :) jako zastosowaniu M2M. Nie pamiętam, ale jak już robisz polling, to można chyba poprosić przez AT o licznik SMSów na karcie SIM lub w pamięci urządzenia, o ile ją ma.
  • REKLAMA
  • #7 13811223
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    @jdanecki
    Rozwiązanie nie jest dla mnie do końca jasne. Znalazłem komendę "at+cnmi=2,1" która spowoduje, że jak tylko przyjdzie SMS to na konsoli wypisze się informacja o tym + sektor pamięci, w którym został zapisany SMS. No ale co po tym? Czy tak czy siak, muszę stworzyć metodę, która będzie sprawdzała mi czy coś zostało wypisane na konsoli?
  • REKLAMA
  • #8 13811322
    jdanecki
    Poziom 23  
    Posty: 632
    Pomógł: 30
    Ocena: 29
    Możesz podłączyć się do portu COM tak, aby metoda była kontynuowana dopiero, gdy przyjdą jakieś dane. To system cię "poinformuje" o tym zdarzeniu.
  • REKLAMA
  • #9 13811343
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    @jdanecki
    Masz na to jakiś przykład?
    To również zadziała w przypadku, kiedy podłączam się przez port USB?
  • #10 13811457
    jdanecki
    Poziom 23  
    Posty: 632
    Pomógł: 30
    Ocena: 29
    Od strony programistycznej nie ma różnicy - w systemie masz przecież wystawiony COM. Gotowego przykładu nie mam, nie programowałem tego osobiście, tylko z tego korzystałem dalej, ale np. jest kod przykładowy choćby w MSDN - nie napisałeś w czym kodujesz.
  • #11 13811493
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    Nie widzę tego... możesz podrzucić linka do MSDN?
    Programuje w JAVA i C#
  • #12 13811588
    Wojtek(KeFir)
    Poziom 42  
    Posty: 7605
    Pomógł: 678
    Ocena: 560
    Wszystkie przemysłowe liczniki energii elektrycznej to małe komputerki, mają w sobie modemy GSM. Tak samo jak tablety czy komputery, (lenovo taki modem nazywa WWAN). Po prostu co jakiś okres czasu łączy się z siecią, i wysyła na serwer dane o stanie licznika, stanie sieci, temperaturze w stacji, napięciu i kilkadziesiąt innych parametrów środowiskowych. I to nie jest SMS, to po prostu upload pliku na FTP. Teraz dla klientów indywidualnych też to wprowadzają pomału.

    Na stornie programowej się nie znam kompletnie, programistą nie jestem.
  • #14 13867682
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    Rozwiązanie nie do końca działa.
    Już nie mówię o implementacji lecz samej notyfikacji o nowym SMS.
    Używam putty do komunikacji z modemem. Bez problemu mogę wysyłać SMS'y, czytać itp. Wszystko ładnie na konsoli mi wypisuje.
    Lecz kiedy wykonuję komendę "at+cnmi" (z różnymi parametrami, już przeszukałem google wzdłuż i w szerz), która teoretycznie powinna informować mnie o nadchodzącej informacji, ona zupełnie nie działa.
    Wysyłam sobie SMS'a i mogę manualnie go odczytać. Ale co zrobić aby sprawdzać SMS'y nie wykorzystując ze "złego" pollingu?

    Dodano po 25 [minuty]:

    Wzorowałem się na
    "Notification - when a SMS is recieved, the host computer ( DTE ) will be notified of the new message. The computer will then have to read the message from the indicated memory location and clear the memory location.

    AT+CMGF=1 To format SMS as a TEXT message
    AT+CNMI=1,1,0,0,0 Set how the modem will response when a SMS is received"
  • #15 13867923
    Atreyu Makiavel
    Poziom 34  
    Posty: 3761
    Pomógł: 112
    Ocena: 318
    Po co wywarzać otwarte drzwi? Przecież programów i aplikacji do zarządzania modemami przy pomocy komend AT jest co najmniej kilka. Po co męczysz się nad własną?
    Pomogłem? Kup mi kawę.
  • #16 13868122
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    Bo chciałbym się tego nauczyć/zrozumieć
  • #17 13868249
    Atreyu Makiavel
    Poziom 34  
    Posty: 3761
    Pomógł: 112
    Ocena: 318
    Przecież komend AT możesz śmiało poznawać i bawić się przez putty, a po co to czas swój marnować nad dopracowywaniem własnej aplikacji... Jak już pisałem - wyważanie otwartych drzwi.
    Pomogłem? Kup mi kawę.
  • #18 13869135
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    No dobra. Więc chce się pobawić przez putty.
    To jak mam się zabawić, aby w momencie kiedy przyjdzie nowy SMS - putty wypisał mi informacje o tym?
  • #19 13869196
    Atreyu Makiavel
    Poziom 34  
    Posty: 3761
    Pomógł: 112
    Ocena: 318
    Nie wypisze. Wysyłasz komendę AT do modemu a ten odsyła odpowiedź. Komunikacja zaczyna się w momencie kiedy klikniesz "wyślij" komendę do modemu a kończy na potwierdzeniu poprawnego odebrania odpowiedzi zwrotnej na właśnie odebraną przez modem komendę. Możesz co jakiś interwał czasowy pobierać wiadomości i porównywać odpowiedzi na obecność zmian.
    Pomogłem? Kup mi kawę.
  • #20 13869423
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    To co mówisz jest sprzeczne z :

    "Notification - when a SMS is recieved, the host computer ( DTE ) will be notified of the new message. The computer will then have to read the message from the indicated memory location and clear the memory location.

    AT+CMGF=1 To format SMS as a TEXT message
    AT+CNMI=1,1,0,0,0 Set how the modem will response when a SMS is received"
  • #21 13869767
    Atreyu Makiavel
    Poziom 34  
    Posty: 3761
    Pomógł: 112
    Ocena: 318
    festusior napisał:
    To co mówisz jest sprzeczne z :

    "Notification - when a SMS is recieved, the host computer ( DTE ) will be notified of the new message. The computer will then have to read the message from the indicated memory location and clear the memory location.

    A skąd żeś to wygrzebał?
    Pomogłem? Kup mi kawę.
  • #24 13869892
    festusior
    Poziom 11  
    Posty: 71
    Ocena: 9
    I dlatego wykonałem pkt b z powyższej instrukcji.
    Jednak nadal nie działa....
    Nie wiem jak to skonfigurować... ja chce dostawać tylko powiadomienia o przychodzącym sms...

Podsumowanie tematu

✨ W dyskusji poruszono różnice między modemami EDGE a GPRS w kontekście aplikacji SMS. Użytkownik, programista, zastanawia się nad wyborem modemu USB GSM (EDGE) oraz GPRS, wskazując na różnice w cenie i funkcjonalności. Odpowiedzi wskazują, że oba typy modemów mogą pełnić podobne funkcje, jednak GPRS oferuje wyższą prędkość transmisji danych. Użytkownicy podkreślają, że do komunikacji z modemem można używać komend AT, a optymalnym rozwiązaniem do odbierania SMS-ów jest ustawienie notyfikacji zamiast polling. Wskazano również na możliwość wykorzystania modemu do zdalnego odczytu liczników energii elektrycznej. Problemy z konfiguracją komendy AT+CNMI do notyfikacji o przychodzących SMS-ach były również omawiane, z sugestiami dotyczącymi poprawnej implementacji.
Wygenerowane przez model językowy.
REKLAMA