Właśnie przebudowałem projekt tak, aby działał w modelu modułowo-eventowym, gdzie każdy moduł ma swój wątek oraz kolejkę eventów; wątek czeka na event w kolejce i go obsługuje. Eventy mają swój priorytet. Eventy typu TICK_25MS wysyłane są przez wątek Quadcoptera, inne pochodzą od innych modułów.

Trochę kodu (ciągle się uczę poprzez takie projekty):

https://dl.dropboxusercontent.com/u/55028256/StatusExchangeModule.java.html

#programowanie #android #java #androiddev #quadcopter
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Visher Zawieszenie było możliwe po prostu przez booleana - nie był synchronizowany ani volatile. AtomicBoolean rozwiązuje sprawę.

Jeżeli chodzi o tę metodę to mam na myśli tylko przerobienie jej wnętrza. Do wyrzutki:

if (!added) {
  • Odpowiedz
No i w p---u, i wylądował, i cały misterny plan też w p---u.......Tydzień temu poszedłem polatać quadcopterem po 3-tygodniowych wakacjach i trochę wyszedłem z wprawy ;/ Zapomniałem, ze quad jest w trybie Acro no i miałem kraksę. Wynik: złamane ramię, złamane 2 śmigła, urwana taśma LED.

A że miałem na głowie GoPro dziele się z wami mireczki moim nieszczęściem ;)

Jak ktoś jest niecierpliwy to oglądać od 2 minuty.

http://youtu.be/oYAmvDQ57fk
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

nie musi.. ale IMO dobra i często stosowana praktyka, ażeby moduł czekał aż coś go zainicjuje, a nie robił wszystko w konstruktorze


@Visher: Sterowanie quadem będzie raczej systemem o ostrych wymaganiach czasowych. Pozostawianie init() w środku kodu, który zajmie czas procesora w losowym miejscu (i czy na pewno wtedy wystarczy zasobów?) jest bardzo złym pomysłem. Tak samo jak używanie new i delete doprowadzi w końcu do fragmentacji (niekoniecznie wycieku) pamięci.
  • Odpowiedz
@Analityk: Sterowaniem sterownikami prędkości będzie zajmowała się atmega, która będzie przez BT otrzymywać sygnały. De facto init() może być wywołane ponownie tylko w przypadku zerwania tego połączenia.. Do tego kod jest wielowątkowy, więc niezależnie wykonywane są obliczenia, komunikacja czy inne.

No ale też rozumiem, że muszę się pilnować i dzięki.
  • Odpowiedz
Zbudowałem sobie #quadcopter. Dziś odbyłem pierwszy lot....hmm albo raczej kraksę :) Wynik: 2 złamane śmigła ;/
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach