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

(edytowany)

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

(edytowany)
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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.