Bogusław Kempny

sms

Autor adres
Początek HC-SR04 LCD Kamera fork() sms strfry() GPIO impulsy Klawiatura Brama GPIO PWM SG90 ....

checkok()










Wysyłamy do modemu nasz przekodowany tekst, po nim znak 1A szesnastkowo (CTRL Z), czekamy na odpowiedź modemu co z tym naszym smsem zrobił, zamykamy otwarty na początku port szeregowy (lock zostanie zdjęty), zamykamy plik logu i kończymy działanie:

       
       write (fd2, buf , strlen(buf));
       write (fd2, "\x1a", 1);
       checkresp();
    close(fd2);
 } //od open fd
fclose(fp);
} //od main

Funkcje checkok() i checkprompt() chyba nie wymagają specjalnego opisu, checkresp() jednak o parę słów komentarza się prosi. Odbiera ona odpowiedź modemu, co stało się z naszym sms-em i zapisuje tę informację w logu.

Po wysłaniu sms modem odpowie czymś takim:

+CMGS: 200

OK

Trzy linie, w pierwszej numer kolejny wysłanego smsa, druga pusta, w trzeciej rezultat. Niestety komunikaty te mogą się różnić nieznacznie w zależności od modelu modemu, jeśli nie udało się wysłać smsa drugiego i trzeciego wiersza nie będzie...

Tak ogólnie, odbieramy trzy wiersze, kończąc timeoutem jak się nie udało i zapisujemy to do pliku z logiem wysłanych smsów:

W logu znajdzie się coś w tym rodzaju:

2018-07-09 16:49:  +48605223344 test | Status:  +CMGS: 202   OK

Nie zamieścimy tu zródeł funkcji checkok(), checkprompt(), ani checkresp(), są w zródłowym programie wskazywanym linkiem na stronie 3.

Niczego ciekawego w nich nie ma.

Noże kiedyś jeszcze opiszę trochę bardziej skomplikowany program do wysyłania smsów, taki serwer sms, numer telefonu i treść sms odbiera przez sieć, trochę na wzór opisanego już serwera kamer.