Mirki, jak znaleźć pracę w #embedded? W kwietniu skończyłem informatykę na UAM w Poznaniu, miałem jeden przedmiot gdzie programowaliśmy mikrokontroler STM32 i spodobało mi się. Zrobiliśmy na nim prosty minutnik obsługiwany jednym guzikiem. Obecnie uczę się C z książki Kinga "C Programming: A Modern Approach" (super książka). W Poznaniu niestety nie ma za dużo ofert dla juniorów jeśli chodzi o embedded, a wolałbym się nie przeprowadzać. Pytanie co waszym
Wszystko
Najnowsze
Archiwum
Pytanie co waszym zdaniem powinien potrafić junior na takim stanowisku?
@stepienz13posterunku:
- C/C++ w zależności od tego w co celujesz
- Git
- W miarę dobrze znać przynajmniej jedną architekturę procków, np ARM, ewentualnie cały ekosystem (na przykład STM32) wraz z konfiguracją
@stepienz13posterunku
Embedded jest fajne dopóki nie zaczniesz szukać sensownej roboty w tym i okazuje się, że jest jeden januszex na całe województwo, który może być potencjalnym pracodawcą. Poza tym ta działka płaci najgorzej ze wszystkich SWE. Zastanów się, co robisz ze swoim życiem.
Embedded jest fajne dopóki nie zaczniesz szukać sensownej roboty w tym i okazuje się, że jest jeden januszex na całe województwo, który może być potencjalnym pracodawcą. Poza tym ta działka płaci najgorzej ze wszystkich SWE. Zastanów się, co robisz ze swoim życiem.
- 0
Cześć, mam 20 lat, pracuje aktualnie na utrzymaniu ruchu i zaczynam studia zaoczne na PWR na kierunku elektrotechnika, jestem jednak wielkim zajawkowiczem embedded i planuje iść w to w 100%. Chciałbym się dowiedzieć czy opłaca się robić te studia i czy wniosą one coś do mojego cv w przyszłości dla pracodawców? Generalnie to planuje zrobić w tym czasie też dużo projektów jednak fajnie mieć te wyższe wykształcenie, z góry dzięki za odpowiedź.
Pytanie do speców od języka C. Chciałem się pobawić trochę w generowanie struktur poprzez makra, ale napotkałem na problem. Mam sobie strukturę, mam makro które w zamyśle ma nadać strukturze nazwę i ją zainicjalizować. Używam tego makra (zobacz komentarz) i się kompiluje. Ale jak już spróbuję cokolwiek przypisać do tak utworzonej struktury, to dostaję błąd. Jesteście w stanie wskazać mi mój błąd? Wyszedłem trochę z założenia, że preprocesor to tylko podmienia tekst,
źródło: obraz_2023-07-12_225553058
Pobierz#programowanie #sieci #siecikomputerowe #jezykc #winsock #socket Hej Mireczki, czy Ktoś z Was ogarnia bibliotekę socket?
Chodzi mi tutaj o podstawową funkcję connect(), czy można ją wykorzystać do tego aby połączyć się z adresem 8.8.8.8 potwierdzając tym samym że mamy dostępne połącznie interenetowe? Gdzieś przeczytałem że to wystarczy - taki prosty PING. Jednak kiedy oglądałem źródła komendy ping.c to tam nie
Chodzi mi tutaj o podstawową funkcję connect(), czy można ją wykorzystać do tego aby połączyć się z adresem 8.8.8.8 potwierdzając tym samym że mamy dostępne połącznie interenetowe? Gdzieś przeczytałem że to wystarczy - taki prosty PING. Jednak kiedy oglądałem źródła komendy ping.c to tam nie
@PlugaweWarzywo: zastanów się na której warstwie chcesz działać. ping działa po ICMP, a connecta zwykle używasz do zestawienia TCP
@PlugaweWarzywo: SIOCGIFCONF to ci powie jaki masz adres IP na karcie sieciowej. Jest to za mało żeby stwierdzić czy masz połączenie z internetem. To nawet nie mówi ci czy masz poprawną komunikację z najbliższym routerem, bo przecież te adresy można ustawiać ręcznie i w cale nie muszą być poprawne.
Jedyny sposób na sprawdzenie czy faktycznie masz połączenie z internetem to wysłanie zapytania w ten internet i oczekiwanie że otrzymasz odpowiedź.
Jedyny sposób na sprawdzenie czy faktycznie masz połączenie z internetem to wysłanie zapytania w ten internet i oczekiwanie że otrzymasz odpowiedź.
#programowanie #jezykc #ping #siecikomputerowe #programista Hej Mireczki, w jaki sposób stworzylibyście własny program który pokazywał by aktualny stan sieci, tj. czy jesteśmy ONLINE czy OFFLINE.
Zrobiłem to w ten sposób, że program rezydentny co np. 5 sekund wywołuje komendę ping 1 raz z adresem (8.8.8.8).. w zależności od wyniku zapisuje ONLINE lub OFFLINE to jakiejś zmiennej środowiskowej.
Zastanawiam się czy powinno się
Zrobiłem to w ten sposób, że program rezydentny co np. 5 sekund wywołuje komendę ping 1 raz z adresem (8.8.8.8).. w zależności od wyniku zapisuje ONLINE lub OFFLINE to jakiejś zmiennej środowiskowej.
Zastanawiam się czy powinno się
@PlugaweWarzywo: Windows i Mac robią request HTTP o prosty plik tekstowy. Dzięki temu dodatkowo wiedzą czy nie trzeba pokazać okienka z akceptowaniem regulaminu do publicznej sieci wifi, bo wtedy oczekiwana zawartość pliku się nie zgadza
https://devblogs.microsoft.com/oldnewthing/20221115-00/?p=107399
W Windowsie masz API żeby pobrać wynik tego sprawdzenia https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetgetconnectedstate
Tu jeszcze dochodzi dodatkowy problem - serwer na którym trzymasz ten plik może przestać działać - mało prawdopodobne w przypadku Microsoftu, ale jednak możliwe. Firewalle też mogą
https://devblogs.microsoft.com/oldnewthing/20221115-00/?p=107399
W Windowsie masz API żeby pobrać wynik tego sprawdzenia https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetgetconnectedstate
Tu jeszcze dochodzi dodatkowy problem - serwer na którym trzymasz ten plik może przestać działać - mało prawdopodobne w przypadku Microsoftu, ale jednak możliwe. Firewalle też mogą
konto usunięte via Wykop
- 3
@PlugaweWarzywo: Myślę, że sensownie to zrobiłeś, protokół ICMP z którego korzysta ping właśnie do tego służy. W C możesz też taki pakiet wysłać ręcznie, pytanie czy warto się męczyć.
- 1
Siemka,
czy jest jakiś sposób, by VS Code podkreślał/oznaczał/kolorował zmienne globalne/lokalne, które nie są używane w kodzie? Bywa nie raz tak, że dużo zmieniam w trakcie i prościej by było, aby edytor oznaczył mi nieużywane zmienne. Może ktoś to już ogarnął u siebie? Jakieś rozszerzenie?
#arduino #c #c++ #jezykc #programowanie #mikrokontrolery #esp8266 #visualstudio #visualstudiocode #platformio
czy jest jakiś sposób, by VS Code podkreślał/oznaczał/kolorował zmienne globalne/lokalne, które nie są używane w kodzie? Bywa nie raz tak, że dużo zmieniam w trakcie i prościej by było, aby edytor oznaczył mi nieużywane zmienne. Może ktoś to już ogarnął u siebie? Jakieś rozszerzenie?
#arduino #c #c++ #jezykc #programowanie #mikrokontrolery #esp8266 #visualstudio #visualstudiocode #platformio
@MisiekD: nie siedzę w temacie, skopiowałem całe twoje pytanie i wrzuciłem do https://chat.openai.com/ . Wydaje się że sensownie odpowiedział i podał dwa sposoby Spróbuj ( ͡° ͜ʖ ͡°)
- 1
@kecajek: Całkiem ciekawe :) W sumie to głównie do JavaScript, no, ale zobaczę inne czy wykryją w C.
- 0
Siemka, mam duży problem ze swoim ESP8266, chodzi o wypisywanie danych z mikrokontrolera (duża ilość danych) wprost do przeglądarki.
No więc, chciałbym zmodernizować moją funkcję, aby zbierać dane z logów i następnie wysłać je wszystkie do przeglądarki. Najpierw próbowałem funkcji beginResponseStream, ale moja tablica jest zbyt duża, aby można ją było wysłać raz (tablica ma 300 wierszy i każdy wiersz ma 100 wartości typu char). W efekcie tym, do przeglądarki trafia jakieś
No więc, chciałbym zmodernizować moją funkcję, aby zbierać dane z logów i następnie wysłać je wszystkie do przeglądarki. Najpierw próbowałem funkcji beginResponseStream, ale moja tablica jest zbyt duża, aby można ją było wysłać raz (tablica ma 300 wierszy i każdy wiersz ma 100 wartości typu char). W efekcie tym, do przeglądarki trafia jakieś
#matematyka #jezykc #programowaniegrafiki #gamedev Czołem Mireczki, nie macie jakiegoś sprawdzonego kodu żeby przeskalować ładnie obraz RGB(A), testowałem ze dwa algorytmy Bilinear Interpolation ale efekt był słaby w porównaniu z tym samym algorytmem w Photoshopie i w dotaku gubił krawędzie - a testowałem dwa rózne :-O.. moze macie jakiś Bicubic Interpolation, jakos zgrabnie napisamy w C ?
@ZawzietyRobaczek: ja też nie, znalazłem to na necie :D
@ZawzietyRobaczek: Masz racje, kod jest ucięty, zrobiłem taki: https://pastebin.com/U8kdiCns
Musisz do niego pobrac libke
Musisz do niego pobrac libke
stb_image_write.hMireczki, potrzebuję pomysłów niczym Dr House podczas diagnostyki.
Mam sobie mikrokontroler taki 3 rdzeniowy popularny w motoryzacji, wykorzystuję tylko 1 rdzeń i oprócz innych rzeczy, chodzi w nim problematyczny timer 64b. Zegary i peryferia ustawione są tak, by uzyskać rozdzielczość 1 ms.
Gdzie mogę szukać, co mogę sprawdzić, jeżeli robiąc reset inny niż fizyczny, po resecie timer chodzi z rozdzielczością 2 ms (problem się skaluje), podczas gdy rejestry zegarów, PLL się nie
Mam sobie mikrokontroler taki 3 rdzeniowy popularny w motoryzacji, wykorzystuję tylko 1 rdzeń i oprócz innych rzeczy, chodzi w nim problematyczny timer 64b. Zegary i peryferia ustawione są tak, by uzyskać rozdzielczość 1 ms.
Gdzie mogę szukać, co mogę sprawdzić, jeżeli robiąc reset inny niż fizyczny, po resecie timer chodzi z rozdzielczością 2 ms (problem się skaluje), podczas gdy rejestry zegarów, PLL się nie
@AbyssWatcher2137:
1. odczytaj rejestry konfiguracyjne timera po tym jak zaczyna źle pracować i sprawdź czy masz tam to co trzeba. Sprawdź czy nie polegasz na jakichś ustawieniach domyślnych (np. preskalera), których nie ustawiasz w kodzie.
2. sprawdź zegar napędzający domenę z timerem, może warto sprawdzić czy inne urządzenia na tej same domenie nie zwolniły
3. sprawdź czy cały procek nie zwolnił, bo np. kwarc masz pracujący z overtonem a wzbudził
1. odczytaj rejestry konfiguracyjne timera po tym jak zaczyna źle pracować i sprawdź czy masz tam to co trzeba. Sprawdź czy nie polegasz na jakichś ustawieniach domyślnych (np. preskalera), których nie ustawiasz w kodzie.
2. sprawdź zegar napędzający domenę z timerem, może warto sprawdzić czy inne urządzenia na tej same domenie nie zwolniły
3. sprawdź czy cały procek nie zwolnił, bo np. kwarc masz pracujący z overtonem a wzbudził
- 0
@Pan_krecik: w momencie wywołania przerwania, rejestr z aktualną wartością nie jest zerowany, zeruje się jedynie na HW resecie lub jak się całkowicie zapełni pełnymi 64b.
@zetisdead
1. Timer w zasadzie nie ma konfiguracji, można go włączyć i ustawić żądane przerwania, konfiguracja się nie zmienia.
2. Wszystkie zegary, PLL nie zmieniły się. Przykładowo CAN jak działał, tak działa
3. Gdyby cały zwolnił to ogólnie by się też inne peryferia zepsuły,
@zetisdead
1. Timer w zasadzie nie ma konfiguracji, można go włączyć i ustawić żądane przerwania, konfiguracja się nie zmienia.
2. Wszystkie zegary, PLL nie zmieniły się. Przykładowo CAN jak działał, tak działa
3. Gdyby cały zwolnił to ogólnie by się też inne peryferia zepsuły,
- 2
Hej mireczki
Jestem w trakcie robienia pracy dyplomowej. No i wymyśliłam sobie konsultując się z promotorem projekt aplikacji AR w Unity. To ma być aplikacja dla działu utrzymania ruchu do robienia przeglądu albo naprawy awarii.
Kupiłam książkę do nauki unity, ale tam jest tylko moduł jak tworzyć gry.
Powiedzcie mi proszę, dam radę w jakieś dwa miesiące się nauczyć programowania w C#, który jest do tego wykorzystywany i napisać taką prostą apkę?
Jestem w trakcie robienia pracy dyplomowej. No i wymyśliłam sobie konsultując się z promotorem projekt aplikacji AR w Unity. To ma być aplikacja dla działu utrzymania ruchu do robienia przeglądu albo naprawy awarii.
Kupiłam książkę do nauki unity, ale tam jest tylko moduł jak tworzyć gry.
Powiedzcie mi proszę, dam radę w jakieś dwa miesiące się nauczyć programowania w C#, który jest do tego wykorzystywany i napisać taką prostą apkę?
@Amestris: Na inżynierkę napisałem grę na Androida w Unity, nie potrafiąc wcale programować. Gra to turlająca się kulka w 3D sterowana żyrorkopem. Omijasz przeszkody, wyskakuje ci na ekranie działanie matematyczne i musisz wjechać w odpowiednią bramkę. Unity to bardziej zabawa a wszystko masz w necie.
@Amestris: Szczerze? Jako osoba, która programuje w C#, uczy programowania i brała udział w wielu konkursach z tworzenia gier stwierdzam, że SZANSE SĄ BARDZO MAŁE.
Zakładając, że znasz bardzo dobrze podstawy C# wiedział byś przynajmniej co się dzieje w tym Unity. Tymczasem to wszystko cię przerośnie, gdy zaczynasz od totalnego 0, już nie mówiąc o tym, że musiałbyś być niesamowicie zdeterminowanym, żeby nie zrezygnować po paru dniach.
Projekt może
Zakładając, że znasz bardzo dobrze podstawy C# wiedział byś przynajmniej co się dzieje w tym Unity. Tymczasem to wszystko cię przerośnie, gdy zaczynasz od totalnego 0, już nie mówiąc o tym, że musiałbyś być niesamowicie zdeterminowanym, żeby nie zrezygnować po paru dniach.
Projekt może
PSIA KREW! @wykop @m__b ja rozumiem nowy "fajniejszy" frontend ale kurde
czy autorzy tego są dopiero w stadium #naukaprogramowania strona cieknie do ramu jak p------a
mam 16 GB z czego wykop jest w stanie zjeść z 11GB, że nie jest sam w pamięci operacyjnej
ja rozumiem że #javascript nie jest to #jezykc więc można olać zarządzanie pamięcią...
ale można conajmniej nie zajeżdzać komputera na
czy autorzy tego są dopiero w stadium #naukaprogramowania strona cieknie do ramu jak p------a
mam 16 GB z czego wykop jest w stanie zjeść z 11GB, że nie jest sam w pamięci operacyjnej
ja rozumiem że #javascript nie jest to #jezykc więc można olać zarządzanie pamięcią...
ale można conajmniej nie zajeżdzać komputera na
@wytrzzeszcz: chciałem zrzucić winę na FF, ale poklikałem kilka razy i z 150MB wbiłem 500+ na Operce w kilka sekund, więc rzeczywiście może być gdzieś problem.
@wytrzzeszcz: drugi komentarz
hej murki, mam se program w C i chce zrobić tak, że program wczytuje dane w pętli, zwraca wartości funkcji, aż wprowadzona zmienna nie będzie zerem. ogólnie działa, bo nic się potem nie da wprowadzić, ale program zachowuje się tak, jakby oczekiwał na coś (nie kończy się)
kod:
int main(){
int
kod:
int main(){
int
- 0
@hetero_sapiens: ok, zerkniesz czy o to chodziło? https://pastebin.com/txC2ydDf
@BeginEnd: hmm.. daje do myślenia..., teraz działa, dzięki!
@BeginEnd: hmm.. daje do myślenia..., teraz działa, dzięki!
- 1
@ZalgoZalgo:
No i wywal te wskaźniki - do niczego tam nie potrzebne. Ogólnie nie słuchaj nigdy komentarzy typu "zmień X na Y i rób tak i tak" jeżeli nie ma części "bo stanie się to a tamto" bo skończysz tak jak
do while działa dokładnie tak jak wygląda - najpierw do potem sprawdza warunek wwhile. Jak chcesz najpierw sprawdzić warunek to używasz pętli while zamiast do while.No i wywal te wskaźniki - do niczego tam nie potrzebne. Ogólnie nie słuchaj nigdy komentarzy typu "zmień X na Y i rób tak i tak" jeżeli nie ma części "bo stanie się to a tamto" bo skończysz tak jak
Mam coś takiego:
Jak w najprostszy możliwy sposób dodać do char c wartość char d?
#jezykc #naukaprogramowania #programowania
char c = 'abc';char d = 'def';Jak w najprostszy możliwy sposób dodać do char c wartość char d?
#jezykc #naukaprogramowania #programowania
- 6
@Czlowiek_Ludzki: To trochę takie elementarne rzeczy jeśli chodzi o język C.
W C musisz pamiętać że to od ciebie zależy alokacja pamięci na zmienne, tj miejsce jej deklaracji w kodzie oraz typ niosą za sobą spore konsekwencje. W tym przypadku zadeklarowałeś zmienną typu char, czyli linker przeznaczy na to 1 bajt. To przypisanie które robisz jest niepoprawne składniowo bo znak ' służy do specyfikacji jednego kodu ASCII.
Jeśli chcesz operować na ciągach
W C musisz pamiętać że to od ciebie zależy alokacja pamięci na zmienne, tj miejsce jej deklaracji w kodzie oraz typ niosą za sobą spore konsekwencje. W tym przypadku zadeklarowałeś zmienną typu char, czyli linker przeznaczy na to 1 bajt. To przypisanie które robisz jest niepoprawne składniowo bo znak ' służy do specyfikacji jednego kodu ASCII.
Jeśli chcesz operować na ciągach
- 5
@Czlowiek_Ludzki: No skalowanie wydajności CPU nie będzie trwać w nieskończoność (prawo Mora jest już od dawna martwe). Warto uczyć się wielu spektrum zagadnień programowania i język C jest do tego idealny. W zasadzie jeszcze lepiej zacząć od systemów które dosłownie nie pozwolą ci na zbyt pochopną rozrzutność pamięci i czasu procesora jak np miktrokontrolery, bo wtedy nabywasz wiedzy jak to wszystko naprawdę działa.
Proste programiki w asemblerze dla uC to
Proste programiki w asemblerze dla uC to
W jaki sposób przesunąc wszystkie elementy tablicy o
int main()
{
int n = 5;
int
ile elementów w tablicy n-elementowej? Dla testów zrobiłem 5 elementową tablicę. Wszystko przesuwa się poprawnie, dopóki i nie wyleci poza zakres.int main()
{
int n = 5;
int
- 1
@Czlowiek_Ludzki: Możesz po prostu napisać warunek sprawdzający, czy wychodzisz poza zakres. Bardziej eleganckim rozwiązaniem jest użycie tu dzielenia modulo (reszty z dzielenia).
- 1
Piszę fw na STM32L0 i siedzę nad UARTem drugi dzień. Konfiguracja arcyprosta, ot dwie linijki (baudrate i włączenie), po czym jak wstanie to wysyła mi tylko jeden - dwa znaki. Nie resetuje się MCU, znaki przychodzą jakie być powinny, ale co bym nie robił to zawsze z jednego printfa wychodzi jeden znak, a z drugiego dwa. Procedura printf sprawdzona na innym procku, działa.
Korzystam z CMSIS i dokumentacji. Już nawet zainstalowałem Cube
Korzystam z CMSIS i dokumentacji. Już nawet zainstalowałem Cube
@macgajster: szklana kula mówi, żebyś użył debugera i sprawdził czy ustawiają ci się flagi wywołujące przerwanie (od pustego nadajnika lub od zakończenia transmisji), czy przerwanie się wykonuje.
Używasz DMA do wysyłania kolejnych bajtów?
Używasz DMA do wysyłania kolejnych bajtów?
W jaki sposób używająć NWD i NWW wyliczyć licznik w ułamku? Mam ułamek 1/2 + 3/4. Biorę NWD 2 i 4 i wychodzi mi mianownik 4. Co zrobić żeby licznik wyszedł mi 5 i żeby algorytm był poprawny dla każdego ułamka?
#matematyka #programowanie #naukaprogramowania #jezykc
#matematyka #programowanie #naukaprogramowania #jezykc
@Czlowiek_Ludzki: do mnożenia ułamków zwykłych nie potrzebujesz nwd, mnożysz licznik razy licznik oraz mianownik razy mianownik
- 1
@dziwna_kuna: chodzi o to ze w zadaniu mialo byc zrobione dodawanie, odejmowanie, mnozenie i dzielenie ulamkow za pomoca nwd i nww, ale okazalo sie ze zle zrozumialem zadanie
- 1
Treść przeznaczona dla osób powyżej 18 roku życia...
- 5
@BeginEnd: Tylko Rust. Golang ma fatalne powolne FFI (jak Java; spowodowane obecnością GC oraz wątków M:N), więc trochę słabo w zastosowaniach mocno niskopoziomowych gdzie musisz wywoływać kod w C/C++. Poza tym Golang dość mało ekspresywny jest. W Rust takie rzeczy jak serializacja/deserializacja do Jsona robisz dwiema linijkami (derive na struct i potem wywolujesz parse i zrobione), w sumie to w żadnym innym języku nie widziałem tak dobrze rozwiązanej serializacja/deserializacji. Rust
- 3
Treść przeznaczona dla osób powyżej 18 roku życia...
Poznikało mi wszystko w code::blocks, nie mam pasków u góry i tego drzewka z projektami po lewej. Jak to naprawić?
#programowanie #jezykc #cplusplus #cpp #codeblocks #informatyka
#programowanie #jezykc #cplusplus #cpp #codeblocks #informatyka
źródło: comment_1667668922dc8qiMGHs1VSrzgukVVrny.jpg
Pobierz@Czlowiek_Ludzki: Nie wiem, ale to dobry moment, żeby zmienić IDE.
- 6
@Czlowiek_Ludzki: vim
Treść przeznaczona dla osób powyżej 18 roku życia...
@szejk_wojak: Ta ksiazke to jest artefakt. Sam mialem wybor pomiedzy ebookiem, a wersja papierowa w cenie ponad 200zl.
Treść przeznaczona dla osób powyżej 18 roku życia...
























Czy jest w standardowym C/C++ coś w rodzaju strumienia do zapisu w pamięci? Chodzi mi o to, żeby do jednego ciągłego bufora można było wrzucać sobie dużo różnych danych po kolei i potem przekazywać cały ten bufor gdzieś dalej. Teoretycznie mogę sam sobie napisać taki prosty bufor, ale może jest już coś gotowego.
#programowanie #programista15k #cpp #jezykc
https://www.google.com/search?q=stringstream+binary+data
@MostlyRenegade: w buforze też musisz określić przechowywany typ. imo chcesz ładować do
std::vector<uint8_t>, tylko musisz sobie zaklepać serializację/deserializację tych swoich typówjeżeli nie chcesz serializować, to
std::vector<std::variant<TypA, TypB, TypC...>>