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?