eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikakomendy AT - ustawienie zajętości linii GSM
Ilość wypowiedzi w tym wątku: 25

  • 1. Data: 2013-01-01 10:13:24
    Temat: komendy AT - ustawienie zajętości linii GSM
    Od: Atlantis <m...@w...pl>

    Mam kolejne pytanie związane z moim projektem wykorzystującym moduł GSM.
    Mianowicie czy istnieje jakaś komenda AT, która uniemożliwiłaby
    nawiązanie połączenia przychodzącego z modułem (dzwoniący usłyszałby
    sygnał zajętości) bez wylogowywania go z sieci, tal aby samemu ciągle
    można było nawiązywać połączenia?
    Krótko mówiąc chodzi mi o odpowiednik słuchawki zdjętej z widełek w
    standardowym, analogowym telefonie. Co więcej - chodzi dokładnie o taką
    sytuację. Jak już kiedyś mówiłem w ramach nauki programowania AVR
    próbuję zamontować moduł GSM w obudowie starego telefonu, sterując nim
    za pomocą tarczy numerowej, widełek itp.

    Pierwszym pomysłem jaki przyszedł mi do głowy było "ręczne" odrzucanie
    połączenia, gdy przy podniesionej słuchawce nadszedł komunikat "RING".
    Niestety, rozwiązanie się nie sprawdza. Zbadanie zawartości bufora
    zajmuje na tyle dużo czasu, że jeśli taka konieczność zajdzie w momencie
    kręcenia tarczą, program może przeoczyć część impulsów, co z kolei
    prowadzi do przekłamania numeru. Poza tym od strony dzwoniącego także
    nie wygląda to tak, jak powinno - najpierw przez moment słychać sygnał
    wybierania, a dopiero w chwilę potem pojawia się sygnał zajętości.

    W dokumentacji modemu znalazłem coś takiego jak "AT+CHLD". Użycie
    "AT+CHLD=0" ma oznaczać "Ignore the incoming call". Jednak z tego co
    widzę to połączenie odnosi się do obsługi kilku połączeń przychodzących
    jednocześnie. Czy jego użycie w sytuacji, gdy żadnego połączenia nie ma,
    da właśnie taki efekt, jakiego oczekuję? A może jest do tego inne
    polecenie, które umknęło mojej uwadze?

    Niestety chwilowo nie mam pod ręką modemu, więc sprawdzić nie mogę...


  • 2. Data: 2013-01-01 11:25:48
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: Atlantis <m...@w...pl>

    Mały update:

    Jednak przeprowadziłem próbę. Użycie "AT+CHLD=x" (gdzie x to liczna z
    przedziału 0-2) w sytuacji, gdy nie ma aktywnej rozmowy powoduje
    zwrócenie komunikatu "ERROR" i niczego nie zmienia - połączenie
    przychodzące w żadnym z tych przypadków nie są odrzucane z automatu.

    Jest jakieś inne rozwiązanie? W tej chwili mój jedyny pomysł opiera się
    na wykorzystaniu linii RI w roli sygnalizatora połączenia
    przychodzącego. Sprawdzenie stanu linii potrwa krócej niż odczytywanie
    bufora. Niemniej ciągle mam nadzieję, że może dałoby się to załatwić w
    samym modemie, bez ręcznego odrzucania połączenia.


  • 3. Data: 2013-01-01 11:47:21
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: "Anerys" <s...@s...pl>


    Użytkownik "Atlantis" <m...@w...pl> napisał w wiadomości
    news:kbudjh$sjc$1@portraits.wsisiz.edu.pl...
    > Jest jakieś inne rozwiązanie? W tej chwili mój jedyny pomysł opiera się na
    > wykorzystaniu linii RI w roli sygnalizatora połączenia

    Po chłopsku - skojarzenie wywołania z wciśnięciem czerwonej słuchawki. Może
    to mało eleganckie, ale chyba zadziała? Dodatkowo - jeśli jakiś numer jednak
    miałby się połączyć (różnie to w życiu bywa), można przeanalizować numer,
    który pojawi się z wywołaniem - i zamiast odrzucić, to przekierować to
    wywołanie do aparatu, aby zadzwonił.
    Tyle ode mnie, taki się wyczerpany czuję, rąbnąłem kawę, ale wiele nie dała.
    Piłem tylko trochę szampana... Tak jakby ktoś telepatycznie chciał zagrać na
    moich uczuciach... ale zostawmy ten temat p.s.medycyna, czy parapsychologia
    :)
    Pozdro noworocznie!

    --
    Pod żadnym pozorem nie zezwalam na wysyłanie mi jakichkolwiek reklam,
    ogłoszeń, mailingów, itd., ani nawet zapytań o możliwość ich wysyłki.
    Nie przyjmuję ŻADNYCH tłumaczeń, że mój adres e-mail jest ogólnodostępny
    i nie został ukryty. Wszelkie próby takich wysyłek potraktuję jako stalking.


  • 4. Data: 2013-01-01 12:02:24
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: Atlantis <m...@w...pl>

    W dniu 2013-01-01 11:47, Anerys pisze:

    > Po chłopsku - skojarzenie wywołania z wciśnięciem czerwonej słuchawki.
    > Może to mało eleganckie, ale chyba zadziała?

    Nie wiem czy dobrze zrozumiałem, ale chyba właśnie na tym opiera się
    (faktycznie mało eleganckie) rozwiązanie, które chciałem zastosować.
    Wciśnięcie czerwonej słuchawki = wysłanie komendy "ATH".
    Żeby skojarzyć z nim wywołanie trzeba najpierw stwierdzić jego obecność,
    a to wymaga dwóch kroków:
    1) Sprawdzenia, czy w buforze odbiorczym są jakieś nieodczytane znaki.
    2) Jeśli tak, sprawdzenia czy znaki te składają się na ciąg "RING\r\n".

    Ponieważ kolejnych znaków trzeba oczekiwać przez określony z góry czas,
    całość zajmuje pewną chwilę (kilkaset ms) i jeśli w tym czasie tarcza
    się kręci, istnieje poważne niebezpieczeństwo (graniczące z dużą dozą
    pewności), że jakieś impulsy zostaną pominięte i numer ulegnie
    przekłamaniu... Praktyczna próba potwierdziła te obawy - połączenia
    wychodzące wykonywane wtedy, gdy ktoś akurat dzwoni do nas, nie dochodzą
    do skutku.


  • 5. Data: 2013-01-01 12:27:59
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: Marek <f...@f...com>

    On Tue, 01 Jan 2013 10:13:24 +0100, Atlantis <m...@w...pl>
    wrote:
    > Mam kolejne pytanie związane z moim projektem wykorzystującym moduł
    GSM.
    > Mianowicie czy istnieje jakaś komenda AT, która uniemożliwiłaby
    > nawiązanie połączenia przychodzącego z modułem (dzwoniący
    usłyszałby
    > sygnał zajętości) bez wylogowywania go z sieci, tal aby samemu
    ciągle
    > można było nawiązywać połączenia?

    Ja używam AT+CLCC, które daje listę połączeń wraz z numeramu i
    odpowiednimi flagami (przychodzące, wychodzące, odebrane, oczekujące
    itp.) Jeśli przy połączeniu jest flaga oczekujace (w sensie jeszcze
    nieodebrane), to wysylam at+chup. Połączenie jest odrzucone, ale wiem
    jaki nr dzwonił, więc mogę powiązać zdarzenie z okreslonym numerem
    (np. tak sobie bramę otwieram).

    --
    Marek


  • 6. Data: 2013-01-01 12:52:51
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: "Anerys" <s...@s...pl>


    Użytkownik "Atlantis" <m...@w...pl> napisał w wiadomości
    news:kbufo4$t98$1@portraits.wsisiz.edu.pl...
    >W dniu 2013-01-01 11:47, Anerys pisze:
    >
    >> Po chłopsku - skojarzenie wywołania z wciśnięciem czerwonej słuchawki.
    >> Może to mało eleganckie, ale chyba zadziała?
    >
    > Nie wiem czy dobrze zrozumiałem, ale chyba właśnie na tym opiera się
    > (faktycznie mało eleganckie) rozwiązanie, które chciałem zastosować.
    > Wciśnięcie czerwonej słuchawki = wysłanie komendy "ATH".

    Może i tak... jak pisałem, z niewiadomego mi powodu czuję się kompletnie
    wyczerpany (choć kawa już trochę zadziałała) i nie przyuważyłem niuansu,
    pardon :)

    > Żeby skojarzyć z nim wywołanie trzeba najpierw stwierdzić jego obecność,

    A to nie pojawia się natychmiast? Nie znam komórkowego, bawiłem się tylko
    POTS-owymi.

    > a to wymaga dwóch kroków:
    > 1) Sprawdzenia, czy w buforze odbiorczym są jakieś nieodczytane znaki.

    A nie lepiej sprawdzać stan linii... Oj... zaciemnienie, muszę odkimać...
    Ale zajrzałem tu i mam wrażenie, że tu się da coś znaleźć...
    http://pl.wikipedia.org/wiki/RS-232

    > 2) Jeśli tak, sprawdzenia czy znaki te składają się na ciąg "RING\r\n".

    Jak się nie da sprawdzić linii, to tak...

    >
    > Ponieważ kolejnych znaków trzeba oczekiwać przez określony z góry czas,
    > całość zajmuje pewną chwilę (kilkaset ms) i jeśli w tym czasie tarcza się
    > kręci, istnieje poważne niebezpieczeństwo (graniczące z dużą dozą

    To buforować impulsy z tarczy (choćby nawet układem autonomicznym, nie
    angażującym procesora), a cyfrówce podawać już gotową informację.

    > pewności), że jakieś impulsy zostaną pominięte i numer ulegnie
    > przekłamaniu... Praktyczna próba potwierdziła te obawy - połączenia
    > wychodzące wykonywane wtedy, gdy ktoś akurat dzwoni do nas, nie dochodzą
    > do skutku.

    To rozdzielić sterowanie impulsami, od ich aktywnej, że tak powiem,
    rejestracji. Buforem właśnie... Dodatkowo, jak zadzwoni, opróżnić bufor (dla
    uniknięcia błędnego wywołania), zasymulować sygnał
    zajętości/nieosiągalności, aby trzeba było całość powtórzyć. Może na
    dzieńdobry tak będzie łatwiej, a jak zadziała, dopieszczać w kierunku
    ostatecznego rozwiązania?
    Łatwiej było by mi to rozrysować przy osobistej rozmowie (w końcu trochę w
    Tepsie przepracowałem przy tych sprawach), ale pardon, nie dziś... :) Jak
    odsapnę, to może mnie tzw. wena trafi i podpowiem coś sensowniejszego? :)
    (przypomniało mi się, jak pisałem kiedyś program do odzyskiwania danych z
    dyskietki Commodore) :))

    --
    Pod żadnym pozorem nie zezwalam na wysyłanie mi jakichkolwiek reklam,
    ogłoszeń, mailingów, itd., ani nawet zapytań o możliwość ich wysyłki.
    Nie przyjmuję ŻADNYCH tłumaczeń, że mój adres e-mail jest ogólnodostępny
    i nie został ukryty. Wszelkie próby takich wysyłek potraktuję jako stalking.


  • 7. Data: 2013-01-01 13:14:59
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: Atlantis <m...@w...pl>

    W dniu 2013-01-01 12:52, Anerys pisze:

    > A to nie pojawia się natychmiast? Nie znam komórkowego, bawiłem się
    > tylko POTS-owymi.

    Pojawia się. Modem wysyła przy każdym sygnale dzwonka ciąg znaków
    "RING\r\n\" które są zapisywane w kolejnych slotach bufora (circular
    buffer). Program musi odczytać odczytać kolejne nieodczytane znaki i
    porównać je z oczekiwanym ciągiem. Funkcja porównująca zwraca wartość
    "fałsz", jeśli w ustalonym czasie w buforze nie pojawią się znaki
    składające się na oczekiwany komunikat. Jeśli pojawią się wcześniej -
    zwraca wartość "prawda".
    Problem w tym, że operacja chwilę zajmuje. Jeśli właśnie wtedy kręci się
    tarcza, program może nie zauważyć jakiegoś impulsu...


    > A nie lepiej sprawdzać stan linii... Oj... zaciemnienie, muszę
    > odkimać... Ale zajrzałem tu i mam wrażenie, że tu się da coś znaleźć...
    > http://pl.wikipedia.org/wiki/RS-232

    Tak, wiem - linia RI. To jest następny pomysł, jeśli nic innego nie
    wypali. Po prostu chciałem uniknąć korzystania z kolejnej linii, gdyby
    dało się to zrobić inaczej - w końcu linia RX i tak odbiera redundantną
    informację o połączeniu przychodzącym.


    > To buforować impulsy z tarczy (choćby nawet układem autonomicznym, nie
    > angażującym procesora), a cyfrówce podawać już gotową informację.

    To jest kolejny pomysł. Można by wykorzystać jedno z przerwań,
    generowanych w przypadku zmiany stanu jednej linii (tarcza zwiera jedną
    parę styków na czas zliczania impulsów składających się na jedną cyfrę
    numeru).


  • 8. Data: 2013-01-01 13:59:47
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: "Anerys" <s...@s...pl>


    Użytkownik "Atlantis" <m...@w...pl> napisał w wiadomości
    news:kbuk07$ul1$1@portraits.wsisiz.edu.pl...
    >W dniu 2013-01-01 12:52, Anerys pisze:
    >
    >> A to nie pojawia się natychmiast? Nie znam komórkowego, bawiłem się
    >> tylko POTS-owymi.
    >
    > Pojawia się. Modem wysyła przy każdym sygnale dzwonka ciąg znaków
    > "RING\r\n\" które są zapisywane w kolejnych slotach bufora (circular
    > buffer). Program musi odczytać odczytać kolejne nieodczytane znaki i

    Nasunął mi się taki pomysł - nie porównywać całości, ale po pojedynczym
    znaku. Dopiero, jeśli się zgodzi, porównać następny i tak da capo al fine,
    aż do końca.

    > porównać je z oczekiwanym ciągiem. Funkcja porównująca zwraca wartość
    > "fałsz", jeśli w ustalonym czasie w buforze nie pojawią się znaki
    > składające się na oczekiwany komunikat. Jeśli pojawią się wcześniej -
    > zwraca wartość "prawda".

    Już tu mam wrażenie (nie znam środowiska w którym programujesz), że za
    bardzo się koncentrujesz wokół odbioru informacji z bufora, zaniedbując
    odbiór impulsowania... Ale to tylko takie bardzo luźne wrażenie.

    > Problem w tym, że operacja chwilę zajmuje. Jeśli właśnie wtedy kręci się
    > tarcza, program może nie zauważyć jakiegoś impulsu...

    To może skoncentruj program wokół odbioru impulsowania, a jak znak z bufora
    przyjdzie te kilka ms pźniej, to czyżby miał się przekłamać?

    >> A nie lepiej sprawdzać stan linii... Oj... zaciemnienie, muszę
    >> odkimać... Ale zajrzałem tu i mam wrażenie, że tu się da coś znaleźć...
    >> http://pl.wikipedia.org/wiki/RS-232
    >
    > Tak, wiem - linia RI. To jest następny pomysł, jeśli nic innego nie

    Może to podpiąć pod obsługę przerwania i wtedy odebrać szybciutko bufor,
    może się wyrobi w 33 ms (czas zwarcia - nominał w .pl to 33/67 ms
    zwarcie/przerwa)?

    > wypali. Po prostu chciałem uniknąć korzystania z kolejnej linii, gdyby
    > dało się to zrobić inaczej - w końcu linia RX i tak odbiera redundantną
    > informację o połączeniu przychodzącym.

    Trudno mi podać ci przepis, ale tak sobie pomyślałem, że zamiast np.
    oczekiwać zboczy impulsów, to badać stan 0/1, co nawet przy przegapieniu
    zbocza, jeśli dało by się np. oszacować, ile czasu straciliśmy na odbiorze
    znaków, przypasować do jakiegoś wirtualnego szablonu, odtworzyć szybciutko
    przebieg - i od tego uzależnić dalsze działania...
    >
    >
    >> To buforować impulsy z tarczy (choćby nawet układem autonomicznym, nie
    >> angażującym procesora), a cyfrówce podawać już gotową informację.
    >
    > To jest kolejny pomysł. Można by wykorzystać jedno z przerwań,
    > generowanych w przypadku zmiany stanu jednej linii (tarcza zwiera jedną
    > parę styków na czas zliczania impulsów składających się na jedną cyfrę
    > numeru).

    Ja myślę, żeby nawet to bardziej dla procka uprościć - śjakiś licznik
    dziesiętny (na pierwszy ogień idzie 7490, ale on w BCD podaje, chyba da się
    oprogamować?), który po zakończeniu cyfry da prockowi znak (nie sam licznik,
    ale jego prosta oprawa) "odebrałem coś", procek piorunem zrobi przerwanie,
    może nie straci się znaku z bufora?
    Znów kojarzę to z komputerem Commodore i jego stacją dysków... Zasadniczo,
    podczas transmisji stacja dysków - komputer, przerwania i reszta programu
    schodza na daleki plan - jeśli gra muzyka, na czas transmisji jest
    wstrzymywana. Ale jakaś grupa popełniła demko, które działa tak: Turbo ok.
    10 razy, sample doczytywane on-line (jest ich więcej, niż mieści się w
    pamięci), ale nie cały czas, proces przypomina nieco tzw. swapowanie pamięci
    (stosowane w GEOSie), bez przerywania grania muzyki, nawet, gdy nastąpi błąd
    odczytu, muzyka nie jest przerywana, a jedynie niemożliwy do wczytania
    fragment jest pomijany, co czasem daje dość niecodzienny efekt, jak muzyka
    nagle przeskoczy, czy się zapętli.
    Podrzucam Ci to jako inspirację :)

    --
    Pod żadnym pozorem nie zezwalam na wysyłanie mi jakichkolwiek reklam,
    ogłoszeń, mailingów, itd., ani nawet zapytań o możliwość ich wysyłki.
    Nie przyjmuję ŻADNYCH tłumaczeń, że mój adres e-mail jest ogólnodostępny
    i nie został ukryty. Wszelkie próby takich wysyłek potraktuję jako stalking.


  • 9. Data: 2013-01-01 15:59:19
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: Atlantis <m...@w...pl>

    W dniu 2013-01-01 13:59, Anerys pisze:

    > Nasunął mi się taki pomysł - nie porównywać całości, ale po pojedynczym
    > znaku. Dopiero, jeśli się zgodzi, porównać następny i tak da capo al
    > fine, aż do końca.

    Chyba faktycznie to będzie najlepsze rozwiązanie (nie licząc użycia
    linii RI). Dziwne, że nie przyszło mi to do głowy...
    Porównywanie po jednym znaku w każdej iteracji głównej pętli nie powinno
    w żaden sposób przeszkadzać pozostałym instrukcjom (to zaledwie kilka
    wykonań if), a sama operacja także powinna w miarę sprawnie przebiegać.


  • 10. Data: 2013-01-01 16:44:21
    Temat: Re: komendy AT - ustawienie zajętości linii GSM
    Od: "J.F." <j...@p...onet.pl>

    Dnia Tue, 01 Jan 2013 10:13:24 +0100, Atlantis napisał(a):
    > Mianowicie czy istnieje jakaś komenda AT, która uniemożliwiłaby
    > nawiązanie połączenia przychodzącego z modułem (dzwoniący usłyszałby
    > sygnał zajętości) bez wylogowywania go z sieci, tal aby samemu ciągle
    > można było nawiązywać połączenia?
    > Krótko mówiąc chodzi mi o odpowiednik słuchawki zdjętej z widełek w
    > standardowym, analogowym telefonie. Co więcej - chodzi dokładnie o taką
    > sytuację. Jak już kiedyś mówiłem w ramach nauki programowania AVR
    > próbuję zamontować moduł GSM w obudowie starego telefonu, sterując nim
    > za pomocą tarczy numerowej, widełek itp.

    A moze sie nie przejmowac ? Sytuacja na tyle rzadka, ze mozna odebrac.

    Do sprawdzenia - a co bedzie jesli w takim stanie wyslesz normalna
    komende ATDnnn; ? Nie uda sie zadzwonic bo "linia zajeta" czy wlasnie
    polaczy, a nie odbierze ?

    > Pierwszym pomysłem jaki przyszedł mi do głowy było "ręczne" odrzucanie
    > połączenia, gdy przy podniesionej słuchawce nadszedł komunikat "RING".
    > Niestety, rozwiązanie się nie sprawdza. Zbadanie zawartości bufora
    > zajmuje na tyle dużo czasu, że jeśli taka konieczność zajdzie w momencie
    > kręcenia tarczą, program może przeoczyć część impulsów, co z kolei
    > prowadzi do przekłamania numeru.

    No nie przesadzajmy - sprawdzenie bufora to pare, moze parenascie rozkazow.

    I wcale nie wiadomo czy chcesz sprawdzac w czasie krecenia - rozsadne
    byloby wlaczyc dzwonek, i niech uzytkownik decyduje - naciska widelki,
    podnosi i odbiera, czy kreci dalej - a pod koniec sprawdzasz czy nic nie
    czeka.

    A w ogole jest jakies polecenie do odrzucenia ? ATH nie wiem czy zadziala.
    W zaleznosci od telefonu/modulu, moze jest jakies polecenie wciskania
    klawiszy (AT+CKPD) i "czerwona sluchawke" da sie nacisnac.

    > W dokumentacji modemu znalazłem coś takiego jak "AT+CHLD". Użycie
    > "AT+CHLD=0" ma oznaczać "Ignore the incoming call". Jednak z tego co
    > widzę to połączenie odnosi się do obsługi kilku połączeń przychodzących
    > jednocześnie.

    Czy moze raczej - do polaczenia przychodzacego w czasie rozmowy.
    Mozesz pierwsza dac na "hold", pogadac z druga, wrocic do pierwszej.

    Nie uzywalem, ale jest taka obiecujaca:
    http://gatling.ikk.sztaki.hu/~kissg/gsm/at+c.html

    Facility lock
    +CLCK= fac ,mode [,passwd [,class]]
    "AI": barr all incoming calls

    J.

strony : [ 1 ] . 2 . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: