np.:
Kod: Zaznacz cały
if ( 0 == strncasecmp_P(pBuf, polecenia_at[i].polecenie_at, strlen(pBuf)) && (strlen(pBuf) == strlen(pgm_read_word(polecenia_at[i].polecenie_at) )) {// <--- tutaj jest dodatkowe sprawdzenie ilosci znakow wpisanej komendy z komenda zapisana w pamieci programu
if( pgm_read_word(polecenia_at[i].at_service) ) { //<- tutaj był błąd
_at_srv = (void *)pgm_read_word( &polecenia_at[i].at_service );
if( _at_srv) _at_srv(2,0);
}
break;
}
możliwe że przy sprawdzeniu ilości znaków w stringu z pamięci programu będzie trzeba zrobić rzutowanie - powyższe piszę z głowy. Jest to modyfikacja w części która wykonuje komendę bez parametrów, czyli w warunku ostatnim.
Dodatkowa w kodzie co podałeś jest błąd
ma być
Kod: Zaznacz cały
pgm_read_word(polecenia_at[i].at_service)
Kod: Zaznacz cały
pgm_read_word(polecenia_at[i].polecenie_at)