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,
mirkogreg - Pytanie do speców od języka C. Chciałem się pobawić trochę w generowanie ...

źródło: obraz_2023-07-12_225553058

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#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
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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ź.
  • Odpowiedz
#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ę
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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ą
  • Odpowiedz
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
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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ś
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#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 ?
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mireczki, 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
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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ł
  • Odpowiedz
@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,
  • Odpowiedz
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ę?
  • 24
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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.
  • Odpowiedz
@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
  • Odpowiedz
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
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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.
  • Odpowiedz
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
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ZalgoZalgo: 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
  • Odpowiedz
@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
  • Odpowiedz
@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
  • Odpowiedz
W jaki sposób przesunąc wszystkie elementy tablicy o 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
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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?
  • Odpowiedz
@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
  • Odpowiedz
@ZawzietyRobaczek: kto Ci powiedział że tak w ogóle wolno robić? To jest undefiined behavior. Reprezentacja pamięciowa struktur danych nie jest przenośna ani między kompilatorami ani sprzętem.
  • Odpowiedz
CTO Microsoftu chce końca C i C++

**Według dyrektora technicznego Azure C i C++ należy raz na zawsze odłożyć do lamusa. Oczywiście sugeruje alternatywę*
*https://bulldogjob.pl/readme/cto-microsoftu-odradza-korzystanie-z-c-i-c-proponuje-cos-innego

#programowanie #technologia #cplusplus #jezykc #rustlang #naukaprogramowania
Bulldogjob - CTO Microsoftu chce końca C i C++

**Według dyrektora technicznego Azu...

źródło: comment_1663935736HcmRqniWEG0qmWbiCqLC94.jpg

Pobierz
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@zwei: aha, no i w środku funkcji static oznacza co innego - to, że zmienna ma globalny lifetime. Pomiędzy wywołaniami tej funkcji zmienna zachowa swoją wartość. Np.

void foo () {
  static int x = 0;
  x++;
  • Odpowiedz
@m1chaal: volatile zmusza kompilator do respektowania wszystkich zapisów/odczytów (bez cachowania, zmiany kolejności itd) do danej zmiennej tak jak to jest napisane w programie. Przykładowe zastosowanie to DMA, załóżmy że pod bool* masz wartość, która mówi czy sensor światła coś wykrył. Wartość tej zmiennej zmienia się niezależnie od programu (kompilator nie wie co się dzieje w tle) i w takim przypadku musisz użyć volatile, żeby wszystkie odczyty z tej zmiennej były
  • Odpowiedz