logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dlaczego SE T630 zwraca ERROR na komendę AT+CNMI z Mega16?

fazolek 08 Lip 2008 16:28 2350 8
REKLAMA
  • #1 5323800
    fazolek
    Poziom 12  
    Posty: 90
    Pomógł: 1
    Prubuję zrobić komunikację poprzez SMS z telefonem SE T630 jednak napotkałem spore schody.
    Wysyłam z procka (atmega16) komende AT telefon zwraca OK wsyzstko fajnie, dzwonie na ten telefon i wypisuje mi RING też fajnie ale na komende at+cnmi? zwraca mi ERROR a np komenda at+csq działa poprawnie? Oczywiście przy podłączeniu do kompa wszystko działa OK.
    Gdzie szukać problemu? Z góry dzięki za podpowiedź.


    Poprawiłem tytuł - Regulamin. [c_p]
  • REKLAMA
  • #3 5323825
    fazolek
    Poziom 12  
    Posty: 90
    Pomógł: 1
    dokładnie, zwraca +CNMI: 2,0,0,0,0
  • REKLAMA
  • REKLAMA
  • #5 5323862
    fazolek
    Poziom 12  
    Posty: 90
    Pomógł: 1
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <stdlib.h>
    #include "uart.h"
    #include <string.h>
    
    /*--------------------------------------------------------------------- */
    /*			Deklaracje tablic i zmiennych			*/
    /*--------------------------------------------------------------------- */
    
    prog_char ANSI_NEWLINE[] = {'\n','\r',0}; 
    	// tablica zawiarająca znaki nowej linii
    prog_char ANSI_CLEAR[] = {27,'[','H',27,'[','2','J',0};
    	// j.w. ale czyszczącza ekran terminala
    
    
    /*--------------------------------------------------------------------- */
    /*		  Definicje stalych i makroinstrukcji			*/
    /*--------------------------------------------------------------------- */
    
    #define PRINT(p)	UART_putstr_P(PSTR(p))
    #define CLEAR()		UART_putstr_P(ANSI_CLEAR)
    #define NEWLINE()	UART_putstr_P(ANSI_NEWLINE)
    
    /*--------------------------------------------------------------------- */
    /* ----------------		Program glowny 	    ------------------- */
    /*--------------------------------------------------------------------- */
    
    int main(void)
    {            
      char c;			// bufor na znak
      char s[UART_MAX_GETSTR+1],r[UART_MAX_GETSTR+1];	// bufor na łańcuch znaków
      s16 i;		// liczba do testowania
      UART_init();			// inicjalizacja portu szeregowego
      DDRC=0xff;
      char tab[]="AT+CNMI?"; 
    
    //*** KOMENDA AT+CNMI
    PRINT("at+cnmi?");
    UART_putstr(tab);
    NEWLINE();
    
    do{
    UART_getstr(s);
    }
    while(strlen(s)==0);
    UART_putstr(s);
    NEWLINE();
    
    
    //*** OCZEKIWANIE NA OK
    
    do{
    UART_getstr(s);
    }
    while(strlen(s)==0);
    UART_putstr(s);
    NEWLINE();
    while(1);
    }
    
    /*--------------------------------------------------------------------- */
    /*			Koniec programu					*/
    /*--------------------------------------------------------------------- */
    


    mniej więcej coś takiego...

    Jednak stawiam na błędy w bibliotekach do UARTu które za chwile wrzuce

    Dodano po 31 [minuty]:

    W załączniku wrzucam pełną biblioteke UARTu włącznie z niezbędnym config.h ustawiającym bufor i prędkość transmisji.

    Wszystkie moje próby tyczyły się pracy normalnej (nie przerwaniowej UARTU).

    Proszę umieszczać listingi programów w znacznikach "Code". [c_p]
    Załączniki:
    • UART.rar (6.38 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #6 5323993
    fazolek
    Poziom 12  
    Posty: 90
    Pomógł: 1
    Ok jeszcze jedno bo teraz już zgłupiałem do reszty: wysyłając z procka at+cnmi=? odpowiada listą możliwości jak ustawić +CNMI.
    at+cnmi? zwraca nadal ERROR
    więc wątpie że problem leży po stronie softu, myślałem, że za krótka tablica z której wysyłam, ale jednak at+cnmi=? wysyła i zwraca poprawną odpowiedź.
  • #8 5324307
    tomsyty

    Poziom 26  
    Posty: 696
    Pomógł: 102
    Ocena: 20
    A co wyświetla (może być pod kompem), jak otrzymujesz SMS? 2,0,0,0,0 to raczej nie jest prawidłowa odpowiedź, powinieneś mieć raczej 1,1,0,2,0 ale możliwe że to zależy od telefonu (korzystałem tylko z takich, gdzie SMS można zapisać jedynie na karcie SIM, T630 ma chyba wewnętrzną pamięć i możliwe, że trzeba dokonać wyboru, chyba za pomocą AT+CPMS). Spróbuj ustawić AT+CNMI=1,1,0,2 i wtedy odczytać.
    Konto firmowe:
    Tomasz Jędras (tomsyty)
    Wierzbowa 30a, Lubin, 59-300 | Tel.: 601XXXXXX (Pokaż) | Strona WWW: https://tomsyty.pl
  • REKLAMA
  • #9 5325176
    fazolek
    Poziom 12  
    Posty: 90
    Pomógł: 1
    więc tak właśnie wysłałem do telefonu at+cnmi=2,1,0,0,0 co daje mi powiadomienie o nowym smsie, wysłałem smsa na ten tel i otrzymałem +CMTI: "ME",42 tak jak powinno być wszystko jest pięknie dalej można komende at+cpms=ME i kolejno at+cmgr=42 i odbiore smsa -tak też się stało po krótkiej zabawie, co ciekawsze ten model ma tryb PDU i tekstowy co wiele ułatwia. Jednak bierze mnie ... bo nie moge sprawdzić ustawień żadnej z komend kończącej się "?" oprócz ate? nie wiem co jest nie tak

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy komunikacji SMS z telefonem Sony Ericsson T630 za pomocą mikrokontrolera Atmega16. Komendy AT wysyłane z mikrokontrolera są częściowo poprawnie obsługiwane: np. AT zwraca OK, RING pojawia się przy połączeniu, a AT+CSQ działa prawidłowo. Jednak komenda AT+CNMI? zwraca błąd ERROR, mimo że z komputera ta sama komenda działa poprawnie i zwraca np. +CNMI: 2,0,0,0,0. Próby wysłania AT+CNMI=? z mikrokontrolera zwracają listę możliwych ustawień, co wskazuje, że problem nie leży w długości bufora transmisji. Ustawienie AT+CNMI=2,1,0,0,0 powoduje poprawne powiadomienie o nowym SMS (+CMTI: "ME",42) i umożliwia odczyt wiadomości przez AT+CPMS i AT+CMGR. Model T630 obsługuje tryb PDU i tekstowy, co ułatwia komunikację. Problemem pozostaje brak możliwości odczytu ustawień komend zakończonych znakiem zapytania (np. AT+CNMI?), które zwracają ERROR tylko przy komunikacji z mikrokontrolera, podczas gdy z komputera działają poprawnie. Sugerowano sprawdzenie konfiguracji pamięci SMS (AT+CPMS) oraz potencjalne błędy w oprogramowaniu mikrokontrolera, jednak problem nie został jednoznacznie rozwiązany.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA