Skocz do zawartości

Wyświetlanie tekstu przez Serial


AndrzejRa

Pomocna odpowiedź

@AndrzejRa witam na forum 🙂 Z jakiego monitora portu szeregowego korzystasz? Czy te kwadraty wyświetlają się tylko podczas pierwszego uruchomienia programu (zaraz po wgraniu), czy po resecie jest identyczny efekt?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

while (!Serial); jest używany z Arduino Leonardo czy MICRO, gdzie port USB musi się uruchomić wewnątrz uC, dla UNO czy NANO jest osobny chip działający niezależnie od stanu uC programowanego przez użytkownika Arduino. 

W sumie to nie napisałeś jakie Arduino ma te dolegliwości, ale dodanie w setup jakiegoś delay (10) by nie zaszkodziło w żadnym, od podania napięcia na układ mija parę us, zanim napięcia się ustabilizują na wyjściach IO i zaczną odzwierciedlać intencje twórcy programu.

  • Lubię! 1
Link do komentarza
Share on other sites

1 godzinę temu, AndrzejRa napisał:

 Sugerujesz, że tekst rozpoczyna się wyświetlać zanim port się otworzy/otworzy i oczyści?

 

Nic nie sugeruję. Nie używam płytek arduinowych, więc nie znam niuansów ich "wewnętrznego życia" 🙂

Uruchom kod i zobacz czy pomoże. Albo podłącz to do mądrzejszego terminala (np Realterm) i zobacz jakie kody ascii tam na początku wypluwa.

Link do komentarza
Share on other sites

A w sumie podanie płytki na której się pracuje nie byłoby głupim pomysłem... tak samo jak podanie współpracującego softu.

Ale co ja tam wiem... przecież ja nawet kursu Arduino nie skończyłem 😞

  • Lubię! 1
Link do komentarza
Share on other sites

Płytka to arduio uno, a edytor to IDE Arduino i jego monitor.

Nie musisz być złośliwy myślałem, że w Arduino jest jakiś ekstra sposób na czyszczenie pamięci o którym nic nie mogłem znaleźć. Do tej pory pisząc cokolwiek nie musiałem się zastanawiać czy sprzęt zdąży coś uruchomić, dokładnie zmierzyć, czy ustabilizować napięcia.

sposób z dopisaniem while (!Serial) i pustymi wąsami zadziałał. Nie bardzo rozumiałem dlaczego. Domyślam się, że sprawdzenie warunku musiało dać czas, żeby wszystko zadziałało.

Link do komentarza
Share on other sites

A swoją drogą, dlaczego while (!Serial); nie wywala błędu? Rozumiał bym coś w stylu while (!Serial.ok());  "Serial" jest obiektem (?) więc mamy negację obiektu. Poza tym, skoro wróciło z "Serial.begin(...)" to nigdy nie powinno być null. Jak dokładnie to działa?

Edytowano przez bjrk
Link do komentarza
Share on other sites

4 godziny temu, bjrk napisał:

A swoją drogą, dlaczego while (!Serial); nie wywala błędu? Rozumiał bym coś w stylu while (!Serial.ok());  "Serial" jest obiektem (?) więc mamy negację obiektu. Poza tym, skoro wróciło z "Serial.begin(...)" to nigdy nie powinno być null. Jak dokładnie to działa?

HardwareSerial.h:135

operator bool() { return true; }

Oznacza, że jak Serial jest prawidłowym obiektem to zwróci true. W przypadku kodu portu USB operator trochę bardziej skomplikowany i bierze pod uwagę to, czy USB CDC zostało zainicjowane poprawnie.

Dla przykładu w rdzeniu RP2040 funkcja operatora dla USB Serial wygląda tak:

SerialUSB::operator bool() {
    CoreMutex m(&__usb_mutex, false);
    if (!_running || !m) {
        return false;
    }

    tud_task();
    return tud_cdc_connected();
}

Operator if(Serial) można zapisać jako

if((bool) Serial) // ...

A przeciążając operator konwersji daliśmy kompilatorowi informację co ma w tym miejscu począć, stąd nie wrzuca błędów 😉 

Stąd też działają negacje. W przypadku pętli while zmienia się tylko operator z if na while 😉 

Edytowano przez H1M4W4R1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.