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/.


Stary wyjadacz :P



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




Moderator Mamut
ja bym probowal parsowac to odrazu przy odbieraniu z uart ...
Offline