Arduino Polska Forum
Kilka komend w 1 jednej wiadomości SMS - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Kilka komend w 1 jednej wiadomości SMS (/watek-kilka-komend-w-1-jednej-wiadomo%C5%9Bci-sms)



Kilka komend w 1 jednej wiadomości SMS - dydel - 28-12-2018

Witam.
Tworzę projekt inżynierski oparty na Arduino Uno i Sim800c.
Kod programu który użyłem do mojego systemu sterowania jest w bardzo dużej mierze oparty na kodzie z tego poradnika ( oczywiście za zgodą autora, mogę kod normalnie modyfikować i użyć w swojej pracy ):
Cytat:https://mikrokontrolery.blogspot.com/2011/04/Kurs-Arduino-GSM-Siemens-TC35-Sterowanie-za-pomoca-SMS.html

Aktualnie mój system:
- łączy się z siecią i wysyła wiadomość powitalną
- co chwilę sprawdza skrzynkę, jeżeli jest w niej SMS to sprawdza czy numer dozwolony
- jak numer dozwolony, to odczytuje komendę z SMS
- wysłanie SMS "STATUS" zwraca nam w wiadomości status wyjść cyfrowych ( w moim przypadku przykładowo "Dioda 10 WL 7 WYL").

Niestety nie wiem jak zrobić, by program odczytywał kilka komend z 1 SMS oddzielonych jakimś znakiem ( np średnikiem ). Aktualnie by sterować diodami, muszę wysyłać osobno SMS dla każdej z diod. Polecono mi na jednym z for użycia funkcji  strtok, niestety nie mam pojęcia jak zaimplementować to w moim kodzie. Istnieje może jakiś prostszy sposób?

Kod całego programu podaję w linku poniżej ( miałem problem by wkleić go w posta, wyskakiwał błąd z uprawnieniami )
https://pastebin.com/6zyvWxNL


RE: Kilka komend w 1 jednej wiadomości SMS - es2 - 28-12-2018

(28-12-2018, 03:16)dydel napisał(a): Tworzę projekt inżynierski oparty na Arduino Uno
To brzmi śmiesznie. Jak taki jest poziom inżynierów to strach się bać.

(28-12-2018, 03:16)dydel napisał(a): Niestety nie wiem jak zrobić, by program odczytywał kilka komend z 1 SMS oddzielonych jakimś znakiem ( np średnikiem ).
Użyj strstr.


RE: Kilka komend w 1 jednej wiadomości SMS - dydel - 28-12-2018

(28-12-2018, 14:38)es2 napisał(a):
(28-12-2018, 03:16)dydel napisał(a): Tworzę projekt inżynierski oparty na Arduino Uno
To brzmi śmiesznie. Jak taki jest poziom inżynierów to strach się bać.

(28-12-2018, 03:16)dydel napisał(a): Niestety nie wiem jak zrobić, by program odczytywał kilka komend z 1 SMS oddzielonych jakimś znakiem ( np średnikiem ).
Użyj strstr.

Może brzmi, ale miałem ogólny temat by stworzyć System Sterowania urządzeń oparty na poleceniach w SMSie. Więc postanowiłem się oprzeć na Arduino. I tak to był jeden z ciekawszych tematów z puli.

Widzę że funkcja strstr znajduje wybrane słowa w łańcuchu słów.
Rozumiem że w moim przypadku tymi słowami szukanymi będą komendy z sms?


RE: Kilka komend w 1 jednej wiadomości SMS - es2 - 28-12-2018

(28-12-2018, 15:57)dydel napisał(a): Widzę że funkcja strstr znajduje wybrane słowa w łańcuchu słów.
Tak. Wszelkie operacje na stringach to podstawy programowania.

(28-12-2018, 15:57)dydel napisał(a): Rozumiem że w moim przypadku tymi słowami szukanymi będą komendy z sms?
Można szukać całych komend, jeśli mają parametr to części komendy.


RE: Kilka komend w 1 jednej wiadomości SMS - dydel - 28-12-2018

(28-12-2018, 16:07)es2 napisał(a):
(28-12-2018, 15:57)dydel napisał(a): Widzę że funkcja strstr znajduje wybrane słowa w łańcuchu słów.
Tak. Wszelkie operacje na stringach to podstawy programowania.

(28-12-2018, 15:57)dydel napisał(a): Rozumiem że w moim przypadku tymi słowami szukanymi będą komendy z sms?
Można szukać całych komend, jeśli mają parametr to części komendy.

Zmieniłem tylko kilka rzeczy:
Kod:
if(strstr(buffer,"WL 10")){
             digitalWrite(10,HIGH);
           }
           if(strstr(buffer,"WYL 10")){
             digitalWrite(10,LOW);
           }
           if(strstr(buffer,"WL 7")){
             digitalWrite(7,HIGH);
           }
           if(strstr(buffer,"WYL 7")){
             digitalWrite(7,LOW);
           }
           if(strstr(buffer,"STATUS")){
             send_resp=1;//Raport
           }
         }
 I działa, wykrywa kilka różnych komend i po kolei je wykonuje. Dziękuję za pomoc.


RE: Kilka komend w 1 jednej wiadomości SMS - es2 - 28-12-2018

Ale napisałeś źle. Zastanów się, jeśli będziesz szukał z wykluczeniem (else) najpierw "a" a następnie "aa" to czy program kiedykolwiek znajdzie "aa"?


RE: Kilka komend w 1 jednej wiadomości SMS - kaczakat - 28-12-2018

Można wszystkiego oczywiście nie wiedzieć, ale tu na forum to już było, a nie tylko na tym forum o tym pisałem, więc i google pewnie by to znalazło: https://forum.arduinopolska.pl/watek-sterowanie-przeka%C5%BAnikiem-za-pomoc%C4%85-sms-arduino-uno-modu%C5%82-gsm, https://forum.arduinopolska.pl/watek-odczyt-danych-z-jednego-ci%C4%85gu-liczb .


RE: Kilka komend w 1 jednej wiadomości SMS - es2 - 28-12-2018

(28-12-2018, 19:46)kaczakat napisał(a): Można wszystkiego oczywiście nie wiedzieć, ale tu na forum to już było, a nie tylko na tym forum o tym pisałem, więc i google pewnie by to znalazło: https://forum.arduinopolska.pl/watek-sterowanie-przeka%C5%BAnikiem-za-pomoc%C4%85-sms-arduino-uno-modu%C5%82-gsm, https://forum.arduinopolska.pl/watek-odczyt-danych-z-jednego-ci%C4%85gu-liczb .

@kaczakat, daj spokój człowiekowi (zapomniał wół jak cielęciem "buł").
Akurat autor tego tematu, jest jednym z nielicznych w 2018 roku, który potrafi używać Google.