Komunikacja UART - 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: Komunikacja UART (/watek-komunikacja-uart) |
Komunikacja UART - MarJanPol - 30-12-2017 Witam, próbuję zrozumieć i nauczyć się zasad przechwytywania łańcuchów znaków przychodzących po UART i wykorzystywania ich dalej np. do sterowania Arduino za pomocą SMS, itp. Udaje mi się to już jako tako przy wykorzystaniu klasy String ale spotkałem się z opiniami, że lepiej jest działać na tablicach za pomocą klasy Serial. Np na forum.arduino.cc znalazłem taką oto instrukcję pobierania i przekazywania dalej łańcucha znaków (poniżej skopiowałem kod ze strony http://forum.arduino.cc/index.php?topic=396450.0). Zastanawiam się czy zaproponowany sposób to jest typowe rozwiązanie i czy nie można tego rozwiązać jakoś prościej? Kod: // Example 2 - Receive with an end-marker RE: Komunikacja UART - ANT - 30-12-2017 Chciałbym Ci coś podpowiedzieć ze swojego doświadczenia gdy pisałem program do obsługi modemu GSM. Za jego pomocą odczytywałem SMSy i je wysyłałem. Napotkałem wówczas na pewną trudność z obsługą stringów w funkcji Serial.print("string"). Trudność ta objawiła się gdy zebrało się w programie ileś tam komend Serial.print("string"). Program nagle zaczął się wykładać i działy się dziwne rzeczy. Doszedłem do tego, że zapychała mi się pamięc RAM w procku (tak to sobie wytłumaczyłem). Nie mogłem ograniczyć ilości wysyłanych stringów a docelowo potrzebnych mi ich było ponad 80. Problem rozwiązałem wykorzystując pamięć FLASH mikrokontrolera. Poniżej przykład z którego możesz skorzystać aby uniknąć problemu z jakim ja się borykałem. Efekt pracy programu możesz zobaczyć w serial monitorze IDE Arduino. Kod: // FLASH MEMORY Pozdr. ANT RE: Komunikacja UART - MarJanPol - 30-12-2017 ANT, bardzo Ci dziękuję za te porady. Właśnie czekam na mój pierwszy moduł GSM - SIM800L, który powinien dotrzeć do mnie w ciągu kilku tygodni, żeby zacząć konkretną naukę i testy. Tymczasem, żeby nie tracić czasu uczę się podstaw komunikacji po UART + AT. Ponieważ jestem bardzo początkującym arduinowcem więc wszelkie takie porady są dla mnie bardzo cenne i serdecznie za nie dziękuję. Jeśli pojawią się konkretne problemy z obsługą tego modułu GSM to będę pisał licząc na wsparcie... Tymczasem, odnośnie Twojego kodu - jeśli dobrze rozumiem, to nie używałeś zmiennych w klasie String (przez duże "S") tylko zmienne typu char? MarJanPol RE: Komunikacja UART - MarJanPol - 30-12-2017 ANT, jeśli można przy okazji zapytać - czy zasilałeś moduł GSM bezpośrednio z płytki czy niezależnie? Jeśli np z niezależnej baterii to czy minus baterii połączony z GND płytki? RE: Komunikacja UART - ANT - 30-12-2017 Oczywiście używałem zmiennych typu char Zasilanie modułu jak widać na poniższych zdjęciach prosto z gniazda którym zasilam Arduino. W razie problemów w obsłudze modułu możesz śmiało pisać. Urządzenie które skonstruowałem działa u mnie w firmie od ponad roku. W trakcie pracy łączy się znim kilku serwisantów poprzez smsy i od urzadzenia otrzymują odpowiednie odpowiedzi równiez sms'em. Poniżej widok urządzenia: Pozdr. ANT RE: Komunikacja UART - MarJanPol - 30-12-2017 Wow szacun! Chylę czoło. Bardzo elegancko to wygląda Zastanawiam się tylko cały czas czy do tej komunikacji nie będzie prościej wykorzystać zmiennych w klasie String - bez tablic, które jeszcze sprawiają mi trochę problemów... |