Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
witam
mam problem z którym dość długo się juz męcze bezskutecznie :(
odbieram sms z telefonu simens który wygląda tak:
+CMGR: "REC READ","+48xxxxxxxxx",,"09/09/14,12:33:57+08" tresc sms
odbieram go w przerwaniach :
volatile char buffor_rx = 0 ; SIGNAL (SIG_UART_RECV) { znak = UDR ; if(znak == 0x0d || znak == 0x0A ) { count = 0 ; buffor_rx = 1 ; }else{ if(count > 34 ) count = 34 ; buffor[count] = znak ; ++count; } } volatile char timeout = 10 ; SIGNAL(SIG_OVERFLOW1) { // TIMER oczekiwania na moduł if(timeout > 0) { --timeout; } } void sms_read(unsigned char numer) { char sms_ok = 0 ; send_str("AT+CMGR="); send_byte(48+numer); send_byte(0x0D); while(timeout) { if(buffor_rx == 1) { if(strncmp(buffor,"tresc sms",9) == 0 ) { buffor_rx = 0 ; sms_ok = 1; }else{ buffor_rx = 0 ; sms_ok = 0 ; timeout = 0 ; } } if(sms_ok == 1 && buffor_rx == 1) { if(strncmp(buffor,"+CMGR",5) == 0 ) { PORTA |= (1<<PA1); // zapal led timeout = 0 ; } } } }
ale nijak to idze działać prawidłowo :(
Jak najlepiej podzielić tak długi string (tablice char) aby "wyłuskać" numer telefonu oraz treść ?
Offline
ja bym probowal parsowac to odrazu przy odbieraniu z uart ...
Offline