Witam kolegów, mam problem, wzorując się na programach ściągniętych z sieci napisałem własny program do wysyłania smsa z C35. Telefon niestety nie chce nic wysyłać... Sprawdzałem w terminalu co wysyła mikroporcek i wszystko wydaje się być ok.
Na komendy AT telefon oczywiście reaguje poprawnie.
proszę o pomoc kolegów, z góry dzięki
pozdrawiam.
Na komendy AT telefon oczywiście reaguje poprawnie.
proszę o pomoc kolegów, z góry dzięki
pozdrawiam.
Cytat:
prog_char dlugoscSCA = {0x07}; //dlugosc numeru SCA +1
prog_char typSCA = {0x91}; //typ numeru centrum obslugi
unsigned char numerSCA[6]; //zakodowany numeru centrum obslugi, zapisywany przez funkcje numerSCA
prog_char pierwszyOktet = {0x11};
prog_char numerOdniesienia = {0x00};
prog_char dlugoscNumeruOdbiorcy = {0x09};
prog_char typNumeruOdbiorcy = {0x81};
unsigned char numerOdbiorcy [5];
prog_char identyfikatorProtokolu = {0x00};
prog_char schematKodowania = {0x00};
prog_char okresWaznosci = {0x8F};
[...]
//wysłanie wiadomości SMS
void sendsms( char *tekst)
{
char len, i, n, ch_1, ch_2;
n = len = strlen(tekst); //obliczenie długości łańcucha znaków
i = n / 8; //licząc od “pierwszego oktetu”
n = i * 7 + i % 8 + 13;
WyslijStrNaUART("AT+CMGS=");
WyslijStrNaUART("20"); //tymczasowo!!!!!!!!!!!!!
TransmitUSART(0x0D);
while(ReceiveUSART() != '>'); //oczekiwanie na znak “zachęty”
TransmitUSART(pgm_read_byte(&dlugoscSCA));
TransmitUSART(pgm_read_byte(&typSCA));
unsigned char numerekSCA[] = {0x84, 0x06, 0x92, 0x15, 0x11, 0xF1};
WyslijHexNaUART (numerekSCA,6); //wysyła 6 bajtow z tablicy numerekSCA
TransmitUSART(pgm_read_byte(&pierwszyOktet));
TransmitUSART(pgm_read_byte(&numerOdniesienia));
TransmitUSART(pgm_read_byte(&dlugoscNumeruOdbiorcy));
TransmitUSART(pgm_read_byte(&typNumeruOdbiorcy));
unsigned char mojnr[] = {0x96, 0x00, 0x00, 0x00, 0xF0};
WyslijHexNaUART(mojnr, 5); //wysyla 5 bajtow z numerem tel
TransmitUSART(pgm_read_byte(&identyfikatorProtokolu));
TransmitUSART(pgm_read_byte(&schematKodowania));
TransmitUSART(pgm_read_byte(&okresWaznosci));
TransmitUSART(len);
i = 0;
while (i < len)
{
ch_1 = *(tekst + i); //pobranie pierwszego znaku tekstu
ch_2 = *(tekst + i + 1); //pobranie następującego za nim znaku
n = i % 8; //obliczenie ilości przesunięć
ch_1 >>= n; //przesunięcie pierwszego znaku w prawo
n = 7-n; //wyliczenie liczby przesunięć dla //2-go znaku
ch_2 <<= n; //przesunięcie drugiego znaku w lewo
ch_1 += ch_2;
TransmitUSART(ch_1); //wyliczenie kodu nowo powstałego znaku
//printf(“%02X”, ch_1); //wysłania znaku szesnastkowego
i++; //następna pozycja w łańcuchu
if (n == 1) i++; //dla każdego 8-go znaku przesunięcie //o 1, znak jest “gubiony”
}
TransmitUSART(0x06);
TransmitUSART(0x1A);
TransmitUSART(0x0D);
}
int main(void){
unsigned long int bauda = 19200;
InitUSART(bauda);
sendsms("WITAJ!");
return 0;
}