Gorki Napisano Styczeń 24, 2017 Udostępnij Napisano Styczeń 24, 2017 Witam! Jako, że jest to mój pierwszy post, chciałbym się serdecznie przywitać z wszystkimi forumowiczami. Słowem wstępu. Pracuję nad prostym robotem sterowanym przez Serial Port za pomocą odpowiednich 8-bajtowych kodów poleceń. Aktualnie napisałem sobie prostą konsolkę w C# wysyłającą i odbierającą polecenia z mikrokontrolera. Jako "mózgu" robota używam Arduino UNO, planuję w przyszłości przesiadkę na DUE (więcej portów IO, DAC, więcej pinów przerwań i kilka innych bajerów 😋) Mój problem wystąpił kiedy próbowałem przebudować znacznie mechanizm odbierania poleceń z uC. Obecnie mechanizm działa tak, że uC znajduje się w pętli nieskończonej z warunkiem (connected). W każdym obiegu pętli sprawdza, czy w buforze znajduje się 8 bajtów danych, jeśli tak to po przetworzeniu zawartych informacji wykonuje odpowiednie polecenie (ruch lub odczyt danych z czujników) i wraca na początek pętli. Nie jest to rozwiązanie zbyt optymalne. Dlatego chcę przenieść funkcję pobierania danych z bufora do funkcji serialEvent(), nie jest to to czego szukam, ale na dobry początek wystarczy. Problem pojawia się, kiedy próbuję utworzyć 4 elementową tablicę zawierającą w każdym elemencie po 8 bajtów danych. Utworzyłem więc strukturę order o następującej treści struct order { byte data[8]; }; i tablicę zawierającą 4 elementy order typedef volatile order orders[4]; volatile - ponieważ w przyszłości zamierzam pokombinować i wywoływać funkcję pobierania danych z bufora za pomocą przerwania a uC usypiać aż do odebrania przez bufor 8 bajtów instrukcji wszystko działa pięknie do momentu w którym próbuję uzyskać dostęp do bajtu w strukturze order if (buffer[0] == consoleID) { for (int i = 0; i < 4; i++) { orders[0].data[0] = buffer[0]; //orders[0].data = buffer; } } niezacytowane i zacytowane przypisanie wywołuje błąd o następującej treści: exit status 1expected unqualified-id before '[' token Nie wiem co robię źlę. W c# nie raz tworzyłem tablice struktur/klas które miały wewnątrz kolejne tablice (a czasem i te tablice miały kolejne np. lista postaci -> lista ekwipunku -> jakaś tablica wewnątrz przedmiotu) i dało się do nich odwoływać normalnie tablica_struktur[x].tablica_wartości[y].itd[z] W temacie wspomniałem o wskaźnikach. Wyczytałem, że można stworzyć tablicę wskaźników do kolejnych tablic i w ten sposób utworzyć tablicę tablic, ale udało mi się to z równie opłakanym skutkiem. Prosiłbym kogoś kto zna się na C o pomoc. Pozdrawiam ps. tak jestem świadomy że C# jest językiem obiektowym a C (czy w przypadku arduino pseudo c++) niekoniecznie i niektóre zagrywki mogą nie działać, ale myślałem, że skoro istnieje coś takiego jak struct to uda mi się w prosty sposób zrobić tę tablicę tablic 😃 Link do komentarza Share on other sites More sharing options...
Wojciech Styczeń 24, 2017 Udostępnij Styczeń 24, 2017 i tablicę zawierającą 4 elementy order typedef volatile order orders[4]; Zastanów się i napisz nam co według Ciebie robi ten kod? Podpowiedź - to nie jest utworzenie tablicy. 1 Link do komentarza Share on other sites More sharing options...
Gorki Styczeń 24, 2017 Autor tematu Udostępnij Styczeń 24, 2017 Padłem jak to zobaczyłem, gdzieś podczas szukania po angielskich internetach mi to wcisnęli i nie dziwię się, że wszysko mi się posypało 😃 typedef volatile order orders[4]; tworzy alias typu order o nazwie orders i jeszcze próbuje wcisnąć w to tablicę 😃 aż dziwne że kompilator nie wywalił błędu za te nawiasy na końcu dzięki za pomoc, sam bym chyba nigdy tego nie znalazł 🙂 poprawione i zadziałało jak należy Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »