eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikasscanf() - co robię źle?sscanf() - co robię źle?
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!wsisiz.edu.pl!.POSTED!not-for-mail
    From: Atlantis <m...@w...pl>
    Newsgroups: pl.misc.elektronika
    Subject: sscanf() - co robię źle?
    Date: Sat, 23 Feb 2013 13:02:00 +0100
    Organization: http://www.wit.edu.pl
    Lines: 32
    Message-ID: <kgab3v$bmc$1@portraits.wsisiz.edu.pl>
    NNTP-Posting-Host: bse195.neoplus.adsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: portraits.wsisiz.edu.pl 1361620927 11980 83.29.124.195 (23 Feb 2013 12:02:07
    GMT)
    X-Complaints-To: a...@w...edu.pl
    NNTP-Posting-Date: Sat, 23 Feb 2013 12:02:07 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130215
    Thunderbird/17.0.3
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:643048
    [ ukryj nagłówki ]

    Co prawda pytanie dotyczy programowania, ale chodzi o programowanie AVR,
    więc chyba mieści się w tematyce tej grupy. ;)

    Mianowicie kontynuuję temat analizy odpowiedzi na komendy AT przy
    komunikacji między Atmegą8 a modułem GSM. Do tej pory stosowałem mało
    eleganckiego i mało rozwiązania nie wymagającego angażowania stdio.h.
    Teraz jednak potrzebuję możliwości odczytania wartości liczbowych
    zwracanych przez niektóre polecenia (AT+CPAS, AT+CSQ) i zapisania ich do
    zmiennej liczbowej.

    W przypadku polecenia AT+CPAS mój moduł GSM zawsze odpowiada w
    następujący sposób:

    "+CPAS: 00x\r\n" (x to liczba z zakresu 0-5)

    W odpowiedniej funkcji przepisuję znaki pojawiające się w buforze
    (circular buffer) do tabeli. Gdy pojawi się znak \r dopisuję za nim
    jeszcze zero, a potem przystępuję do wydzielenia wartości liczbowej:

    sscanf(tablica, "+CPAS: %d\r", &zmienna_int);

    następnie funkcja zwraca wartość zapisaną w zmiennej.

    Robię coś nie tak? A może %d nie przyjmie liczby poprzedzonej zerami? Z
    drugiej strony próbowałem także zapisu "+CPAS: 00%d\r" i także nic nie
    dało...


    Jak powinno wyglądać pobranie wartości zwracanych przez "AT+CSQ"?
    Format wygląda następująco: "+CSQ: xxx, xxx\r\n"
    Rozumiem, że sscanf(tablica, "+CSQ: %d, %d\r", zmienna1, zmienna2)
    również nie zadziała?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: