Bogusław Kempny

sms

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











No to teraz oprogramowanie. Jak wykle przykładowy program i prosty skrypt do jego kompilowania, ściągnąć, skompilować, uruchomić:

./sendsms numer_telefonu treść

Numer telefonu pełny, z numerem kierunkowym kraju, a więc na przykład +48605223344

Sms zostanie wysłany, a w pliku /var/log/sms.log pojawi się wpis co, kiedy i na jaki numer telefonu zostało wysłane.
2018-05-23 15:00:   Nietrzezwy pracownik JAN SEBASTIAN BACH,
zawartosc alkoholu: 0.1 | Status (+48605223344): +CMGS: 1 OK

Jeśli nie interesuje Cię jak ten program działa, to w tym miejscu możesz juz zakończyć lekturę.

Program wysyła do modemu standardową sekwencję komend AT, nic ciekawego, ale po każdej komendzie musi poczekać na odpowiedź modemu i nie zawisnąć albo wybuchnąć jak jej nie dostanie.

Musi też wcześniej zaprogramować port szeregowy. I to jest ciekawe.

Unix (a więc w pewnym sensie i Linux) ma już prawie 60 lat. W czasach jego powstawania komputery i ich interfejsy były całkiem inne.

To, co teraz wydaje się jedynym rozwiązaniem, tak oczywistym, że nie przychodzi nam do głowy, że mogłoby być inaczej, w tamtych archaicznych, licząc czas w skali czasu informatyki, wcale nie było oczywiste.

Weźmy na przykład bajt. 8 bitów. Jakie to piękne i proste dla informatyka. Potęga liczby 2. I jak łatwo to zapisać szesnastkowo!

Pamiętajcie jednak, że w tamtych czasach, kiedy procesor komputera wykonany na pojedynczych tranzystorach, często germanowych, ważył tonę, pamięć (na przykład ferrytowa) miała pojemność liczoną w kilobajtach, każdy bit kosztował koszmarne pieniądze!

Na zdjęciu pamięci ferrytowej w powiększeniu widać to wyraźnie. Każdy z tych ferrytowych koralików ma średnicę okolo 1 milimetra, przewleczono przez niego trzy druciki (ręcznie!), do każdego drucika układ sterowania na tranzystorach germanowych. Pamiętał jeden bit. Ile mógł kosztować hardware obsługujący jeden bit?

Słowo maszynowe jakie teraz znamy, 4, 8, 16, 32 itd. bitów upowszechniło się w latach 70 ubiegłego wieku, wraz z pojawieniem się pierwszych mikroprocesorów. Wcześniej panowała pełna dowolnośc, 22, 50, 27, 48...

Kodowanie znaków też było wynikiem decyzji konstruktora komputera, nie tylko nie było UNICODE, co może nie dziwić, używa się przecież jeszcze ISO, cp1250 itp., ale nawet ASCII o którym z pewnością słyszeliście nie używał 8 bitów, a 7. Kod EBCDIC firmy IBM był ośmiobitowy, ale kody znaków w EBCDIC były inne, niż w ASCII.

W takich to warunkach powstawał Unix. Do teraz widać to w niektórych starych jego elementach, na przykład w obsłudze portu szeregowego. Wydawałoby się niemożliwe, że koncepcje opracowane 50 lat temu mogą beż problemu pasować do współczesnych rozwiązań. A jednak. Te opracowane dla ubsługi portu szeregowego (znak 7 lub 8 bitowy, różne prędkość transmisji przychodzącej i wychodzącej, konwersja transmitowanycgh znaków itd.) świetnie obsługują porty USB, modemy GSM!