Elvis Listopad 21, 2022 Udostępnij Listopad 21, 2022 @ethanak Pytanie było raczej o macOS, a nie Linux-a. @StefanekP Najpierw musisz uruchomić terminal, ale to już robiłeś w pierwszym kroku instrukcji którą linkowałeś: Cytat Press Command+Space and type Terminal and press enter/return key. Później wystarczy uruchomić polecenie "minicom", na początek najlepiej z opcją -s, czyli: Uruchomi się wówczas menu konfiguracji: Wujek Google bez problemu znajdzie kilka tutoriali odnośnie minicom-a, przykładowo: https://derrekito.github.io/Minicom-tutorial/ https://wiki.emacinc.com/wiki/Getting_Started_With_Minicom https://www.cyberciti.biz/tips/connect-soekris-single-board-computer-using-minicom.html Różnice w porównaniu z Linux-em to inne nazwy portów, przykładowo /dev/tty.usbserial-10 zamiast /dev/ttyUSB0, oraz inne klawisze skrótów. Pod linuxem jako przycisk Meta domyślnie używane jest Ctrl+A, natomiast na macu to zwykły Esc. Czyli naciśnięcie Esc, a następnie Z wywołuje menu: Ale zawsze możesz na początek używać CoolTerm, pewnie będzie łatwiej zacząć 🙂 2 Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Listopad 21, 2022 Udostępnij Listopad 21, 2022 30 minut temu, Elvis napisał: Pytanie było raczej o macOS, a nie Linux-a Aj sorki, czymś sie zasugerowałem 😞 Tak przy okazji - jest PuTTY na maca? Cytuj Link do komentarza Share on other sites More sharing options...
StefanekP Listopad 21, 2022 Udostępnij Listopad 21, 2022 @Elvis dziękuję bardzo, jak po południu jak będę miał chwilę to zibaczę czy działa. Jeszcze jedno, jak to jest z portami com na MAC OS? W Windowsie był ten menedżer urządzeń, czy na macu jest jakiś odpowiednik? Też nie umiałem znaleźć. Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Listopad 21, 2022 Udostępnij Listopad 21, 2022 Przyznaję, że od dawna nie używałem porty szeregowego na macu i sporo zapomniałem - więc zamiast /dev/tty.usbserial-10 lepiej chyba użyć /dev/cu.usbserial-10 Do wyświetlenia dostępnych portów wystarczy polecenie ls, czyli: ls -1 /dev/cu.* 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
StefanekP Listopad 21, 2022 Udostępnij Listopad 21, 2022 Tęsknię za windowsem😥 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 21, 2022 Udostępnij Listopad 21, 2022 @StefanekP możesz zainstalować na Mac'u Windowsa na maszynie wirtualnej :) Cytuj Link do komentarza Share on other sites More sharing options...
StefanekP Listopad 21, 2022 Udostępnij Listopad 21, 2022 Przed chwilą, Treker napisał: @StefanekP możesz zainstalować na Mac'u Windowsa na maszynie wirtualnej :) Ale do tego muszę się nauczyć używać maca 😉 1 Cytuj Link do komentarza Share on other sites More sharing options...
StefanekP Listopad 26, 2022 Udostępnij Listopad 26, 2022 @Elvis ,@Treker , bardzo dziękuję za pomoc. Po zainstalowaniu i otwarciu Minicom-a rzeczywiście trochę zniechęciłem się brakiem interfejsu graficznego, ale udało mi się wykonać wszystkie ćwiczenia z CoolTerma. Jutro wezmę się za zadania domowe. 1 Cytuj Link do komentarza Share on other sites More sharing options...
dragolice Luty 19, 2023 Udostępnij Luty 19, 2023 (edytowany) Cześć. Nie wiem dlaczego, ale u mnie prawidłowe polecenia są rozpoznawane jako prawidłowe polecenia. Program działa poprawnie, a nie jak przewidziano w kursie, z czego to może wynikać? Przedstawiam kod programu z STM32CubeIDE: void dodaj_linie(uint8_t wiadomosc) { if (wiadomosc == '\n') { if (dlugosc_linii > 0) { bufor_linii[dlugosc_linii] = '\0'; printf("\rOtrzymano: %s\r\n\n", bufor_linii); if(strcmp(bufor_linii, "Włącz") == 0) { HAL_GPIO_WritePin(DIODA_GPIO_Port, DIODA_Pin, GPIO_PIN_SET); } else if(strcmp(bufor_linii, "Wyłącz") == 0) { HAL_GPIO_WritePin(DIODA_GPIO_Port, DIODA_Pin, GPIO_PIN_RESET); } else { printf("\rNieznane polecenie: %s\r\n\n", bufor_linii); } dlugosc_linii = 0; } } else { if (dlugosc_linii >= MAX_DLUGOSC_LINII) { dlugosc_linii = 0; } bufor_linii[dlugosc_linii++] = wiadomosc; } } Korzystam z terminala MobaXtemr, a oto jego ustawienia: Odpowiedź w termianlu: Układ włącza i wyłącza diodę, ale nie mam w terminalu czegoś takiego jak "Nieznane polecenie". Dziwne, że nie wysyła polecenia za pomocą klawisza "Enter", lecz trzeba wcisnąć kombinację Ctrl+J, ale działa. Edytowano Luty 19, 2023 przez dragolice Cytuj Link do komentarza Share on other sites More sharing options...
H1M4W4R1 Luty 19, 2023 Udostępnij Luty 19, 2023 (edytowany) Albo jestem ślepy, albo w TerraTerm masz wyraz rozpoczęty małą literą, gdy program oczekuje wyrazu rozpoczętego wielką literą... 26 minut temu, dragolice napisał: Nie wiem dlaczego, ale u mnie prawidłowe polecenia są rozpoznawane jako prawidłowe polecenia. Program działa poprawnie, a nie jak przewidziano w kursie, z czego to może wynikać? Edytowano Luty 19, 2023 przez H1M4W4R1 Cytuj Link do komentarza Share on other sites More sharing options...
dragolice Luty 19, 2023 Udostępnij Luty 19, 2023 (edytowany) Tak, tak tak, zmieniłem to, program oczekuje wyrazu rozpoczętego wielką literą. Chodziło mi bardziej o to, że z wykorzystaniem kodu, który jest pokazany w kursie powinienem się spodziewać odpowiedzi "Nierozpoznane polecenie: ...." niezależnie od wpisanego tekstu. Jak widać u mnie program działa prawidłowo i dociekam teraz z czego to może wynikać. Czy mój terminal jest jakiś mądry, czy o co może chodzić. Reasumując, wpisując do terminala słowo "Włącz", program powinien wychwycić to słowo, zapalić diodę na PCB i wypisać odebrane polecenie w terminalu jako "Otrzymano: Włącz". I dokładnie tak robi. Gdy program otrzyma nierozpoznane polecenie powinien wypisać "Nierozpoznane polecenie: ..." i dokładnie tak robi. Natomiast według kursu, niezależnie czy wpiszę rozpoznawalne polecenie, czy nie terminal powinien wykryć je jako nierozpoznawalne. W dalszej części jest opis jak to poprawić, tylko, że u mnie nie ma co poprawiać i zgłupiałem🙂 Zaznaczę jeszcze, że terminal z którego korzystam to MobaXterm. Edytowano Luty 19, 2023 przez dragolice Cytuj Link do komentarza Share on other sites More sharing options...
H1M4W4R1 Luty 19, 2023 Udostępnij Luty 19, 2023 53 minuty temu, dragolice napisał: Tak, tak tak, zmieniłem to, program oczekuje wyrazu rozpoczętego wielką literą. Chodziło mi bardziej o to, że z wykorzystaniem kodu, który jest pokazany w kursie powinienem się spodziewać odpowiedzi "Nierozpoznane polecenie: ...." niezależnie od wpisanego tekstu. Znów moje czytanie kontekstowe usunęło jedno zdanie, które było istotne... W takim razie to kwestia kodowania znaków (zamiany tekstu na liczby) - jeżeli system kodowania nie jest identyczny w nadajniku i odbiorniku to dane słowo wygląda inaczej w każdym z nich (wymaga innych danych binarnych aka. jest zapisane za pomocą innych liczb). W ten sposób porównujesz dwie różne wartości. U Ciebie działa, bo widocznie Twój terminal sam koduje w UTF-8 zamiast Win1250 (co robi TerraTerm), co automatycznie usuwa ten problem i program działa poprawnie. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 19, 2023 Udostępnij Luty 19, 2023 @dragolice niestety nie mam teraz dostępu do Nucleo, aby sprawdzić to w praktyce, ale na 99,9% jest dokładnie tak jak napisał wyżej @H1M4W4R1. W ramach testu możesz pobrać TeraTerm i przeprowadź ten sam eksperyment. Zachowanie układu powinno być takie, jak w kursie. Cytuj Link do komentarza Share on other sites More sharing options...
dragolice Luty 19, 2023 Udostępnij Luty 19, 2023 (edytowany) Dzięki za odpowiedzi. Mam jeszcze takie pytanko do tej tematyki, ponieważ myślałem, że bufor jest czyszczony i chciałbym wiedzieć jak z tego bufora wyłapywane jest słowo "Włącz" i "Wyłącz". Czy funkcja strcmp porównuje od pierwszego znaku do pasującego wyrażenia? Przykładowo w buforze mam mały bałagan wpisując nieodpowiednie polecenie, które jest długie, np. "hahahahahahahahaha(ha)" i wysyłam znak końca linii "\n" do bufora. Zgodnie z kodem gdy wysłany zostanie znak końca linii jest on podmieniany w buforze na "\0". Następnie zapis znaków do bufora jest prowadzony od pierwszego znaku nadpisując wcześniejsze wartości. Najlepiej widać to na obrazku: W takiej sytuacji polecenie jest uznawane za prawidłowe, instrukcja która służy do porównywania znaków wyłapała słowo "Włącz" i włączyła diodę. Natomiast gdy mamy taką sytuację, gdzie słowo "Włącz" nie jest na początku bufora, lecz gdzieś później instrukcja nie włącza diody. Jak rozumiem instrukcja ta sprawdza znak po znaku bufor i gdy znajdzie niezgodność to odpuszcza? W takim razie Dlaczego nie działa np. polecenie "Włączzzzz"? Czy ten znak "\0" ma na to wpływ? Edytowano Luty 19, 2023 przez dragolice Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 19, 2023 Udostępnij Luty 19, 2023 @dragolice działanie tych programów zależy dokładnie od tego jak napisaliśmy funkcję line_append - z bufora odczytujemy dane do momentu znalezienie znaku końca linii. To dość standardowa i popularna metoda. Przeanalizuj dokładnie działanie tej funkcji to wszystko powinno być jasne. Jednym jest bufor, do którego sprzętowo trafiają odczytane dane, a czym innym są nasze funkcje, które pracują na danych z buforu. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!