eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikasscanf() - co robię źle? › sscanf() - co robię źle?
  • Data: 2013-02-23 13:02:00
    Temat: sscanf() - co robię źle?
    Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie 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: