Arduino dane z serial portu. - 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: Arduino dane z serial portu. (/watek-arduino-dane-z-serial-portu) |
Arduino dane z serial portu. - Sk0tcraft - 22-08-2017 Mam problem z danymi które przychodzą do arduino (Uno R3) przez serial port. Mam funkcję która wyszukuję dany ciąg znaków i obrabia go zamieniając go w liczbę. Kiedy dodałem funkcję Serial.find() program przestał działać. Program ma za zadanie odebrać dane <D255> zamienić je w liczbę i zaświecić diodę z mocą 255. Kod programu: Kod: #define ledPin 9 RE: Arduino dane z serial portu. - Robson Kerman - 22-08-2017 Szczerze powiedziawszy, to nigdy nie używałem funkcji .find(); Ja takie problemy rozwiązuję w ten sposób: Sprawdzam w pętli, na przykład while (Serial.available() > 0){}; jakie stringi dostaję -> Serial.readString(); i jeśli trafię na mojego stringa, to wywołuję odpowiednią funkcję. W Twoim przypadku było by jakoś tak: String jakasWartosc = Serial.readString(); if (jakasWartosc=="D255"){ dane = Serial.readStringUntil('\n'); Serial.println(dane); dane.remove(0, 2); Serial.println(dane); dane.remove(3, 4); Serial.println(dane); dane.toCharArray(str , sizeof(str)); long liczba = atol(str); Serial.println(liczba); analogWrite(ledPin , liczba); } RE: Arduino dane z serial portu. - Sk0tcraft - 23-08-2017 Tak , zrobiłem i wygląda na to że arduino w ogóle nie przyjmuje tych danych. Po kolei się nic nie wyświetlało a liczba wyszła zero. Jakiś pomysł jak temu zaradzić? RE: Arduino dane z serial portu. - Sk0tcraft - 23-08-2017 Udało mi się rozwiązać problem . Okazało się że funkcja Serial.find() zabiera sobie to co wpisałem i czyści bufor. Zamieniłem linikę if (Serial.find("<D255>")) { } na dane = Serial.readStringUntil('\n'); if (dane == "<D255>") {} i działa . |