Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie smsem przekaznika

rmffm1 29 Mar 2005 16:48 7040 27
  • #1 29 Mar 2005 16:48
    rmffm1
    Poziom 13  

    chciałem sie dowiedziec czy ktoś ma pomysł na sterowanie jakiegos ukladu poprzez wysłanie smsa z komórki na drugi telefon podpiety do takiego ukladu i po tresci smsa strowanie np przekaznikiem na zasadzie wlacz wyłacz

    0 27
  • Pomocny post
    #2 30 Mar 2005 08:58
    bifi
    Poziom 15  

    Na tej stronie www.easy-soft.tsnet.pl znajdziesz ciekawy artykuł na temat sterowania SMSem za pomocą komórki oraz procka.

    0
  • Pomocny post
    #3 02 Kwi 2005 10:39
    wwmajor
    Poziom 14  

    Witam!
    Wszystko tak naprawdę rozbija się o to jakiego telefonu używasz i czego tak naprawdę oczekujesz od układu.
    Ja zrobiłem takie coś ale na drogim telefonie Samaung c100 (bo i wymagania były spore). Miał to być terminal GSM łączący układ mikrokontrolerów (inteligentny dom) ze światem.
    Tu masz opis projektu którym się wzorowałem https://www.elektroda.pl/rtvforum/topic94985-0-asc-0.html
    Ale jeśli miał by to być prosty jednostronny odbiornik to może być tania komóra obsługująca tryb PDU mikrokontroler w pamięci zapisany by miał wzór wiadomości jeśli odebrana wiadomość by się z nim zgadzała to by załączał przekaźnik.
    Komunikacja oczywiście przez UART (bezpośrednie kable od mikrokontrolera do telefonu krosując je TxD<=>RxD).
    [/url]

    0
  • #4 03 Kwi 2005 11:14
    rmffm1
    Poziom 13  

    To ma byc prosta komunikacja najlepiej z nokia 5110 bo jest najtańsza :D chodzi o to ze gdy wysle smsa na ta ta nokie z innej komorki a nawet z internetu to ta komorka go odbierze przekaze komunikat do ukladu sterujacego a on np przełaczy mi przkaznik ktory mi cos tam załaczy

    0
  • Pomocny post
    #5 04 Kwi 2005 23:07
    wwmajor
    Poziom 14  

    Ta twoja komórka obsługuje tryb TXT więc sprawa prosta.
    Załatw sobie kabelek podłącz komórę do PC i poeksperymentuj na terminalu. Potem odcinasz od kabla wtyczkę komputerową i wtykasz bezpośrednio do UARTu mikrokontrolera. Piszesz program który odbiera znaki i jeśli natrafi na tekst WLACZ LAPKE to ustawia stan wysoki na nóżce do której podłączony jest przekaźnik. Ot cała filozofia.

    Oczywiście jest jeszcze kilka poważnych problemów, ale jeśli jesteś uparty to sobie poradzisz.

    0
  • Pomocny post
    #6 25 Kwi 2005 17:04
    juntom
    Poziom 18  

    Co do nokii 5110 to nalezaloby sprostowac: tekst smsa jest kodowany (7 bit). Polecam projekt gnoki. Tam znajdziesz szczegoly. Latwiej jest sterowac ktoregos z erikssonow za pomoca komend AT.

    pozdr.

    0
  • #7 15 Maj 2005 22:19
    wwmajor
    Poziom 14  

    Oj kolego nie pisz jak czegoś nie jesteś pewien:
    Oto opis
    'Message format' Nokia 5110
    wpisujesz taki kod
    AT+CMGF=?
    a komóra odpowie
    +CMGF: (0,1)
    OK
    I to znaczy że obsługuje tryb tekstowy a nie PDU

    0
  • #8 16 Maj 2005 09:17
    juntom
    Poziom 18  

    Do Pana wwmajor :
    Nie sprawdzalem osobiscie komend at na noki 5110, a korzystalem z formatu pdu (wysylanie i odbieranie komunikatu). Moj projekt jest sprawdzony i dziala wiec co do tego jestem absolutnie pewien. Zreszta polecam lekture gnokii . Nie spotkalem jeszcze projektu z wykorzystaniem nokii 5110 i komend at. A udalo sie Tobie wyslac smsa w trybie tekstowym z tej nokii ?

    0
  • #9 07 Gru 2005 16:29
    Kakalia
    Poziom 18  

    Witam

    Mam wykaz komend AT i chcialbym sie pobawic telefonem z poziomu PC. Jakiego oprogramowania mam uzyc?? Probowalem TERM95 i nie nawizalem wspolpracy z telefonem. Pozniej odpalilem Hyperterminal w 98 i tez bez rezultatu. Nie jestem pewien czy uzywam wlasciwego przewodu, podlaczylem telefon przez com2 FBusem(kabelek jest na 100% sprawny) telefon rownierz.

    Prosze o pomoc. :[

    0
  • #10 07 Gru 2006 21:17
    gpql
    Poziom 17  

    Potwierdzam wypowiedz juntom. Niestety NOKIA 5110 nie ma komend AT bezposrednio jedynie emulowane przez kompa po zainstalowaniu softu nokii.

    Mam pytanie bo tez pracuje nad sms-ami z Nokii do kolegi juntom :
    1. poczatek ramki to w/g roznych publikacji; (0x55) 32 razy i (0xC1)
    2. pakiet zaczyna 0x1E ......
    co ciekawe zapis logu z nokii wysyla 201 znakow 0x55 i potem 0xC1 ....
    3. kodowanie numeru jest przez zamiane bajtu (to co bylo w FSB idzie na LSB i odwrotnie
    4. konwersja na 7 bit PDU przez tablice znaków

    Moje pytanko jak zapytac telefon czy jest nowy sms i jak go odczytac
    (wysylac potrafie)

    GP

    0
  • #11 07 Gru 2006 23:35
    juntom
    Poziom 18  

    Ramka o której mówisz (zawierająca bajt 0x55) słuzy do synchronizacji tel z uc. O ile pamiętam to okreslono ,ze nalezy wysłac min 200 razy 0x55. O nadejsciu nowego smsa zostanie uc powiadomiony przez tel wysalniem okreslonej ramki. Dokladnie jest to opsiane w doc dla gnoki ( sms_handling).Dekodowanie tekstu z pdu robie na "piechote" tak :

    Code:
    // dekodowanie tekstu (o dlugosci lenght) sms z 7 na 8 bitow, zdekodowany tekst umieszczony w dest_buf 
    
    unsigned char char_8bit_unpack (unsigned char *text, unsigned char lenght, unsigned char *dest_buf)
    {
    unsigned char i=7,j=0,rest=0;
    while (lenght)
       {
       *dest_buf = ((*text&0x7f)<<(7-i)|rest)&0x7f;
       rest = *text>>i;
       text++;
       dest_buf++;
       j++;
       if (i==1)
          {
          *dest_buf= rest;
          dest_buf++;
          i=7;
          rest=0;
          }
       else
          i--;
       lenght--;
       }
    return (j);
    }

    a tu kodowanie do pdu :)


    // kodowanie 8 bit -> 7 bitów (funkcja zwraca długość łańcucha po kodowaniu , zakodowany łańcuch
    // umieszczony jest w dest_buf
    unsigned char char_7bit_pack (unsigned char*sms_ptr,unsigned char *dest_buf)
    {
    unsigned char temp_buf2[80];
    unsigned char chr,next_chr,val,cnt=7,i=0,j=0;
    unsigned char *temp_ptr;
    temp_ptr = sms_ptr;
    chr= *temp_ptr++;
    do
       {
       if (cnt==0)
          {
          cnt=7;
          j=0;
          chr =*temp_ptr++;
          }
       next_chr=*temp_ptr;
       j= (j<<1)|0x01;
       val = next_chr&j;
       val <<=cnt;
       chr |=val;
       if (chr)
          temp_buf2[i++]=chr;
       chr = next_chr>>(8-cnt);
       cnt--;
       } while (*temp_ptr++);
    j=i;
    memcpy (dest_buf,temp_buf2,i);
    return (i);
    }


    U mnie wszystko bylo zrobione na przerwaniach wiec nie potrzebowalem sprawdzac czy w telefonie sa nieprzeczytane wiadomosci bo robilem to na biezco ale jest to oczywiscie do zrobienia ( w genokii plik n6100.c -> GetSMSStatus )

    pozd. JUNTOM

    0
  • #13 08 Gru 2006 10:40
    darrrrek
    Poziom 22  

    bylby ktos w stanie ten kod przedstawic w bascomie ???

    Code:
    // dekodowanie tekstu (o dlugosci lenght) sms z 7 na 8 bitow, zdekodowany tekst umieszczony w dest_buf 
    
    unsigned char char_8bit_unpack (unsigned char *text, unsigned char lenght, unsigned char *dest_buf)
    {
    unsigned char i=7,j=0,rest=0;
    while (lenght)
       {
       *dest_buf = ((*text&0x7f)<<(7-i)|rest)&0x7f;
       rest = *text>>i;
       text++;
       dest_buf++;
       j++;
       if (i==1)
          {
          *dest_buf= rest;
          dest_buf++;
          i=7;
          rest=0;
          }
       else
          i--;
       lenght--;
       }
    return (j);
    }

    a tu kodowanie do pdu :)


    // kodowanie 8 bit -> 7 bitów (funkcja zwraca długość łańcucha po kodowaniu , zakodowany łańcuch
    // umieszczony jest w dest_buf
    unsigned char char_7bit_pack (unsigned char*sms_ptr,unsigned char *dest_buf)
    {
    unsigned char temp_buf2[80];
    unsigned char chr,next_chr,val,cnt=7,i=0,j=0;
    unsigned char *temp_ptr;
    temp_ptr = sms_ptr;
    chr= *temp_ptr++;
    do
       {
       if (cnt==0)
          {
          cnt=7;
          j=0;
          chr =*temp_ptr++;
          }
       next_chr=*temp_ptr;
       j= (j<<1)|0x01;
       val = next_chr&j;
       val <<=cnt;
       chr |=val;
       if (chr)
          temp_buf2[i++]=chr;
       chr = next_chr>>(8-cnt);
       cnt--;
       } while (*temp_ptr++);
    j=i;
    memcpy (dest_buf,temp_buf2,i);
    return (i);
    }

    0
  • #14 20 Gru 2006 15:53
    bolek
    Specjalista - oświetlenie sceniczne

    Panowie, powiedzcie którą komendą testować gotowość telefonu i karty sim
    sprawdzanie czy odpowie error to takie trochę "nieteges" ;)

    0
  • #15 21 Gru 2006 13:42
    submariner
    Poziom 32  

    a czy nie mozna odpowiednio ustawic grupy wiadomosci (by nie reagowal na kazdy sms) i podpiac przekaznik zamiast silniczka wibratora?

    0
  • #16 21 Gru 2006 15:06
    mirekk36
    Poziom 42  

    do kolegi Bolek - wysyłasz co jakiś czas jakies polecenie AT - np (ATI) i czekasz aż dostaniesz dobrą odpowiedź ;) - to jest jedna z normalnych metod czekania na gotowość modemu i wcale nie jest "nieteges" ;)

    pozdr

    0
  • #17 30 Maj 2007 19:54
    bolek
    Specjalista - oświetlenie sceniczne

    odswierze trochę
    Jeśli chodzi o gotowość to OK jest praktycznie zawsze. Ale gdy rozkaz tyczy sie karty SIM to niekiedy wyskoczy ERROR- zwłaszcza bezpośrednio po włączeniu zasilania.

    Inna, bardziej ważna sprawa. Zrobiłem układ, jednak wyszedł mały problem. Procek nie kiedy nie odczytuje prawidłowo SMSów.
    Początek PDU z treścią SMSa mam mam ustawiony na sztywno. Najwyraźniej niekture telefony wysyłaja go w innej formie. Nie działa np wysłanie SMSa z jakiegoś Siemensa serii ME. Ktoś miał taki problem? wystarczy zmiana ustawień w tym telefonie czy musze przerabiać obsługę PDU?? :(

    0
  • #18 30 Maj 2007 21:26
    mirekk36
    Poziom 42  

    bolek napisał:

    Cytat:
    czy musze przerabiać obsługę PDU??


    tak musisz przerabiać PDU, bo nie chodzi o to, że jedne telefony wysyłają jakieś tam PDU a inne przy tej samej treści jeszcze inaczej zakodowane PDU. Standard PDU jest ten sam, ale np jeśli wiadomość wysłana z telefonu jest długa i zawiera więcej niż 160 znaków a telefon wysyła całą wiadomość jako 2 SMSy - połączone, to już zmienia ci się początek PDU każdego z tych SMSów. Poprostu do PDU dodawany jest UDH (User Data Header) i trzeba umieć go obsłużyć. On powoduje właśnie np że początek PDU jest inny niż gdybyś te same 2 SMSy wysłał oddzielnie.

    pozdrówka

    0
  • #19 30 Maj 2007 22:19
    bolek
    Specjalista - oświetlenie sceniczne

    nie nie, SMSem idzie komenda- raptem 8 znaków (a jak! :) )
    Tak ze nie idzie o kodowanie tego PDU, tylko o to że naglówek wiadomości wysłany z jednego telefonu ma inna długość niż np wysłane z innego telefonu.

    Wg mnie, bardziej mieszają tutaj ustawienia SMSów w telefonie ktory je wysyła, no bo niby co by jeszcze mogło mieć wpływ na to że treść SMSa jest przestawiona...?
    Jutro porównam SMSy. Zobaczy sie w czym różnica,

    0
  • #20 31 Maj 2007 09:36
    bolek
    Specjalista - oświetlenie sceniczne

    Mirek36, wygląda na to że po części miałeś racje z tym UDH. Jeden z telefonów go dodaje mimo że SMSjest krótki. Zastanawia mnie tylko fakt czy będzie on tak robił zawsze, czy jest zakazania tego zbędnego UDH

    SMS prawidłowy
    07918405210077F7040B918405074617F300007050139032808008B81C2E071A6263
    SMS z dodatowym UDH
    07918405210077F7640B918405055534F60000705003919293800F050A0300080470395C0E34C4C600

    0
  • #21 31 Maj 2007 23:31
    mirekk36
    Poziom 42  

    Witam,

    tekst twoich SMSów to

    Cytat:
    "8989 CX1"


    w drugim masz rzeczywiście dodany UDH, i faktycznie nie wiem za bardzo po co ten telefoniusz dziwny dodaje to UDH. W tym przypadku nie jest to UDH odpowiedzialne za tzw "złożoną wiadomość" . Aby się tego pozbyć musisz normalnie to rozkodować i od odpowiedniego pola wyciąć UDH. W twoim przypadku to UDH wygląda tak:

    Cytat:
    USER DATA LENGTH : 15 septets
    UDH LENGTH : 5 octets
    UDH : 0A 03 00 08 04
    UDH ELEMENTS : 0A - EMS text formatting
    3 (0x03) Bytes Information Element
    000 starting character
    008 length in characters
    04 formatting mode:
    text ALIGN left
    text SIZE large


    - naprawdę nie wiem co to jest "EMS text formatting" i po jaką kiszkę jest to tu dodawane. Ale może masz jakiś nie wiem dziwny wyświetlacz czy co?

    tak czy inaczej po wycięciu UDH otrzymasz czysty tekst swojego SMSa

    0
  • #22 01 Cze 2007 03:10
    migol
    Poziom 18  

    Hmmm... a może wysyłasz w Unicode?

    0
  • #23 01 Cze 2007 07:47
    mirekk36
    Poziom 42  

    nie nie, na pewno nie jest to SMS z obsługą znaków narodowych bo byłby znacznie znacznie dłuższy. Wysłanie chociaż jednej np polskiej literki ą powoduje, że treść 1 SMSa skraca się tylko do 70 znaków a resztę ze 160 pożera właśnie obsługa polskich znaków. W tym SMSie dodany jest tylko ten dziwny UDH, który tak jakby tylko formatuje w jakiś sposób tekst

    pozdr

    0
  • #24 01 Cze 2007 07:48
    bolek
    Specjalista - oświetlenie sceniczne

    no wlsnie problem w tym, że to nie ja wysłałem, tylko gość u którego to pracuje . Z przeóbką dekodowania SMSów może być problem bo nie mam tego gdzie robić (RAM). Oby to była własnie sprawa ustawienia wiadomości. Mirku, Spotkałeś sie już z takim przypadkiem? (taki inniejszy SMS) w zalezności od marki aparatu.

    0
  • #25 01 Cze 2007 08:14
    Ch.M.
    Poziom 27  

    Witam
    Może nie siedzę w temacie, ale mam wrazenie ze jest to sformatowany SMS czyli EMS (dodana wielkosc trzcionki, bold, underline, kolor, logo, etc.)
    Zapewne da sie to wyłączyć w telefonie
    Pozdrawiam

    0
  • #26 01 Cze 2007 20:19
    mirekk36
    Poziom 42  

    Witam,

    niestety nie spotkałem się z tym i być może kolega Ch.M. ma rację, że można to poprostu wyłączyć w tym telefonie. Niestety ludziska mają różnie telefony poustawiane a najbardziej cierpią na tym nieświadomi użytkownicy chcący koniecznie pisać polskie literki ąśćń bo wtedy też dostaniesz SMSa z UDH i co wtedy? nie dość że gościu który ci go wyśle nie jest świadomy że telefon naciąga go na dodatkowe SMSy to jeszcze robi ci problem. Oczywiście takie polskie literki na 100% można wyłączyć ale czy to formatowanie EMS? - nie wiem. Tak czy inaczej może być jeszcze wiele różnych przypadków gdy będzie wysyłany UDH i chcąc podejść uniwersalnie to trza pomyśleć o dekodowaniu jednak tego i wyrzucaniu niepotrzebnego śmiecia w tym przypadku UDH.

    chyba że korzystasz z procedur które ktoś inny napisał a ty sam nie za bardzo wiesz jak to przekodować - to wtedy jest klops.

    Ja akurat SMSy rozgryzam od dawna ale na PCcie i właśnie już jakiś czas temu porozgryzałem niektóre UDH dzięki czemu mogę już odbierać polskie znaki itp. Ale jak ktoś mi np wizytówkę wyśle czy logo - o kicha ;) ... muszę jeszcze nad tym popracować

    pozdrówka

    0
  • #27 01 Cze 2007 23:03
    bolek
    Specjalista - oświetlenie sceniczne

    Dzis bawiłem sie różnymi telefonami i nijak nie udało mi sie wygenerowac takiego dziwolonga. Można tylko gdybać co jest przyczyną.
    Chyba faktycznie trzeba będzie zrobić obsługe takiego SMSa.
    Dekodowanie PDU pisałem sam (jakoś nie idzie zastanawianie sie nad gotowym softem- trudno mi dostrzec co podmiot liryczny miał na myśli :) )
    To dekodowanie akurat zrobiłem dla 8 bajtów, tak było wygodnie i starczyło. Nie wiem teraz czy nie bedzie problemu z ramem, bo żeby przemielić tego SMSa to musze go zassać całego i obrabiac od końca. No nic pomyśli się. szkoda tylko że tego telfonu nie mam pod ręką- będzie partyzantka.

    Tak czy siak- treść SMS ZAWSZE zaczyna sie w tym samym momencie (od 43 odebranego bajtu)?

    0
  • #28 01 Cze 2007 23:35
    mirekk36
    Poziom 42  

    chyba cię zmartwię ale nie zawsze od 43 bajtu bo zobacz sobie wyżej gdzie pokazałem ci rozpiskę twojego akurat UDH. Pierwszy paramter UDH to UDH Length. W większości takich prostych przypadków ma on długość 5 oktetów ale jak widać może mieć więcej. Tak więc gdy będziesz sam dekodował to pobierz tą długość i wyrżnij te niepotrzebne bajty o ile rzeczywiście będą niepotrzebne ;) .... w tych twoim przykładzie właśnie było 5 oktetów co daje nam 7 bajtów i gdy się je "wyrżnie" to następne bajty są już czystym niesformatowanym tekstem tegoż SMSa. Tak bym chyba podszedł do tej sprawy

    pozdrawiam

    0