Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:plnxt:start [2009/02/17 13:05]
gjn
pl:plnxt:start [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
  
 ====== PLNXT Wprowadzenie ====== ====== PLNXT Wprowadzenie ======
-LEGO Mindstorms NXT jest uniwersalną platformą, która oferuje konstruowanie robotów, jak również rozwiązania programistycznie. Jeśli chodzi o programowanie Mindstorms NXT, LEGO dostarcza środowisko,​ które pozwala tworzyć algorytmy przy użyciu prostego wizualnego języka diagramów przepływu sterowania. Dzięki otwartości platformy pojawiło się wiele programistycznych rozwiązań dla języków takich, jak C/C + +, Java, etc. Przykłady obejmują ​lejos/​iCommand ([[http://​lejos.sourceforge.net]]NQC ([[http://​bricxcc.sourceforge.net/​nqc]]). Wczesne próby rozwiązań opartych o Prolog można znaleźć w projekcie ​Legolog ([[http://​www.cs.toronto.edu/​cogrobo/​Legolog]]). Niestety nie oferuje on ogólnego API i obsługuje tylko starszą wersję Mindstorms - RCX.+LEGO Mindstorms NXT jest uniwersalną platformą, która oferuje konstruowanie robotów, jak również rozwiązania programistycznie. Jeśli chodzi o programowanie Mindstorms NXT, LEGO dostarcza środowisko,​ które pozwala tworzyć algorytmy przy użyciu prostego wizualnego języka diagramów przepływu sterowania. Dzięki otwartości platformy pojawiło się wiele programistycznych rozwiązań dla języków takich, jak C/C + +, Java, etc. Przykłady obejmują [[http://​lejos.sourceforge.net|lejos/​iCommand]] i [[http://​bricxcc.sourceforge.net/​nqc|NQC]]. Wczesne próby rozwiązań opartych o Prolog można znaleźć w projekcie ​ [[http://​www.cs.toronto.edu/​cogrobo/​Legolog|Legolog]]. Niestety nie oferuje on ogólnego API i obsługuje tylko starszą wersję Mindstorms - RCX.
  
-//PLNXT// to API w języku Prolog dla platformy Mindstorms NXT. Jest rozwijane w ramach projektu ​HeKatE ([[http://​hekate.ia.agh.edu.pl]]). Ma na celu zapewnienie regułowego rozwiązania programistycznego wysokiego poziomu. ​+//PLNXT// to API w języku Prolog dla platformy Mindstorms NXT. Jest rozwijane w ramach projektu [[http://​hekate.ia.agh.edu.pl|HeKatE]]. Ma na celu zapewnienie regułowego rozwiązania programistycznego wysokiego poziomu. ​
  
 Na podstawie przeglądu istniejących rozwiązań,​ wymagania nowego API dla NXT zostały sformułowane następująco: ​ Na podstawie przeglądu istniejących rozwiązań,​ wymagania nowego API dla NXT zostały sformułowane następująco: ​
Linia 14: Linia 14:
   * na poziomie funkcjonalnym API jest spójne z innymi dostępnymi rozwiązaniami.   * na poziomie funkcjonalnym API jest spójne z innymi dostępnymi rozwiązaniami.
  
-===== Projekt architektury trójwarstwowej ​API =====+===== Architektura ​API =====
   * **Warstwa behawioralna** (nxt_movement) udostępnia programiście funkcje wysokiego poziomu. Zawiera abstrakcyjne metody kontroli robota takie, jak przemieszczanie się, skręcanie. Obecnie działa dla robota [[http://​mindstorms.lego.com/​Overview/​MTR_Tribot.aspx|TriBot]]. Ostatecznie powinna dostarczać pełnego mechanizmu ruchu dla różnych robotów.   * **Warstwa behawioralna** (nxt_movement) udostępnia programiście funkcje wysokiego poziomu. Zawiera abstrakcyjne metody kontroli robota takie, jak przemieszczanie się, skręcanie. Obecnie działa dla robota [[http://​mindstorms.lego.com/​Overview/​MTR_Tribot.aspx|TriBot]]. Ostatecznie powinna dostarczać pełnego mechanizmu ruchu dla różnych robotów.
   * **Warstwa sensomotoryczna** (nxt_sensomoto) zapewnia kontrolę komponentów zestawu NXT: silników, sensorów, jak również brick (jednostki centralnej). Ta warstwa może być używana do bezpośredniego odczytu sensorów, jak również programowania silników pojedynczo. Jest to warstwa, która może być używana przez programistę do uwydatnienia funkcjonalności warstwy behawioralnej. ​   * **Warstwa sensomotoryczna** (nxt_sensomoto) zapewnia kontrolę komponentów zestawu NXT: silników, sensorów, jak również brick (jednostki centralnej). Ta warstwa może być używana do bezpośredniego odczytu sensorów, jak również programowania silników pojedynczo. Jest to warstwa, która może być używana przez programistę do uwydatnienia funkcjonalności warstwy behawioralnej. ​
Linia 22: Linia 22:
     * rozwiązanie hybrydowe oparte na socketach z wykorzystaniem biblioteki NXT++, która komunikuje się z robotem,     * rozwiązanie hybrydowe oparte na socketach z wykorzystaniem biblioteki NXT++, która komunikuje się z robotem,
     * prosty graficzny symulator NXT, pozwalający w pewnym zakresie testować algorytmy bez użycia zestawu Mindstorms.\\     * prosty graficzny symulator NXT, pozwalający w pewnym zakresie testować algorytmy bez użycia zestawu Mindstorms.\\
-W rzeczywistości wszystkie te rozwiązania oparte są na protokole komunikacji LEGO. +W rzeczywistości wszystkie te rozwiązania ​(poza symulatorem) ​oparte są na protokole komunikacji LEGO. 
  
 Dowolną inną implementację warstwy komunikacyjnej można stworzyć bazując na pliku nxt_actions_dummy.pl. Ograniczeniem jest to, że nazwy predykatów eksportowanych muszą pozostać takie same. Nie ma także możliwości wprowadzenia niczego nowego bez uwzględnienia tego w warstwie wyższej. Dlaczego? Jest to jedna z warstw projektu, ale wydzielona tylko, aby umożliwić wstawienie w jej miejsce różnych alternatywnych wersji. **Nie powinna być bezpośrednio używana w projektach bazujących na PLNXT. Nie ma takiej potrzeby.** Dowolną inną implementację warstwy komunikacyjnej można stworzyć bazując na pliku nxt_actions_dummy.pl. Ograniczeniem jest to, że nazwy predykatów eksportowanych muszą pozostać takie same. Nie ma także możliwości wprowadzenia niczego nowego bez uwzględnienia tego w warstwie wyższej. Dlaczego? Jest to jedna z warstw projektu, ale wydzielona tylko, aby umożliwić wstawienie w jej miejsce różnych alternatywnych wersji. **Nie powinna być bezpośrednio używana w projektach bazujących na PLNXT. Nie ma takiej potrzeby.**
  
-===== “Threads” jako dodatkowy komponent ​=====+===== Obsługa wątków ​=====
  
 Do implementacji złożonych algorytmów sterowania NXT niezbędne jest wprowadzenie mechanizmów opóźniania akcji w czasie oraz uwarunkowanie akcji od pewnych zdarzeń. Do implementacji złożonych algorytmów sterowania NXT niezbędne jest wprowadzenie mechanizmów opóźniania akcji w czasie oraz uwarunkowanie akcji od pewnych zdarzeń.
 +
 W module "​threads"​ znajdują się predykaty umożliwiające tworzenie triggerów i timerów z wykorzystaniem wątków w SWIProlog. Trigger uruchamia akcję pod warunkiem zajścia zdarzenia. Timer uruchamia akcję po wyznaczonym czasie. W module "​threads"​ znajdują się predykaty umożliwiające tworzenie triggerów i timerów z wykorzystaniem wątków w SWIProlog. Trigger uruchamia akcję pod warunkiem zajścia zdarzenia. Timer uruchamia akcję po wyznaczonym czasie.
  
 ====== Platforma LEGO Mindstorms NXT ====== ====== Platforma LEGO Mindstorms NXT ======
  
-===== Minimalna wiedza ​o NXT potrzebna do używania PLNXT =====+Minimalna wiedza potrzebna do używania PLNXT:\\ 
 +  * [[pl:​mindstorms:​opis|Krótki opis.]] 
 +  * [[pl:​mindstorms:​zestaw|Zestaw LEGO Mindstorms NXT.]] 
 +  * [[pl:​mindstorms:​interfejs|Opis najbardziej przydatnych elementów interfejsu jednostki centralnej.]]
  
-==== Zestaw LEGO Mindstorms NXT ==== +Powyższe materiały są częścią ​serwisu [[pl:mindstorms:start|Laboratorium AGH LEGO Mindstorms]].
- +
-W skład zestawu Mindstorms NXT wchodzi: +
-  * Brick (jednostka centralna). +
-  * Sensory: +
-    * //Dotyku.// Szumna nazwa. W rzeczywistości jest to zwykły przycisk, który rozróżnia dwa stany (wciśnięty,​ puszczony). +
-    * //​Natężenia dźwięku.//​ +
-    * //​Natężenia światła.//​ Wyposażony w czerwoną diodę. Włączenie diody umożliwia rozpoznawanie barw (w skali szarości) przy słabym oświetleniu zewnętrznym. +
-    * //​Odległości.//​ To ten podobny trochę do głowy modliszki. Z dwoma dużymi “oczami”. Przy użyciu ultradźwięków badana jest odległość pomiędzy sensorem, a najbliższą przeszkodą. Zasięg do 255 cm. +
-  * Trzy serwomechanizmy. +
-  * Klocki umożliwiające składanie robotów z wykorzystaniem powyższych elementów. +
- +
-==== Łączenie komponentów ==== +
- +
-Do portów B i C należy podłączyć silniki odpowiadające za ruch. Do portu A silnik używany do dodatkowych funkcji. +
-Standardowe podłączenie sensorów (chociaż można podłączyć je dowolnie): +
-  * Port 1dotyk. +
-  * Port 2: dźwięk. +
-  * Port 3: światło. +
-  * Port 4: odległość. +
- +
-==== Interfejs ==== +
- +
-=== Przyciski === +
-Włączanie NXT odbywa się przez wciśnięcie pomarańczowego przycisku. Tym samym przyciskiem zatwierdza się wybór w menu. Do przemieszczania się między pozycjami służą przyciski w kształcie trójkątów. Ciemny przycisk poniżej służy do anulowania wyboru i do wyłączania NXT (gdy jest się w głównym menu). +
- +
-=== Bluetooth === +
-Włączanie BT odbywa się w menu interfejsu NXT. Należy wybrać: Bluetooth ​-> On/Off -> {On albo Off}. +
-Gdy BT jest włączony, w lewym górnym rogu wyświetlacza znajduje się symbol BT oraz na prawo od niego symbol '<'​. Po nawiązaniu połączenia obok symbolu '<'​ pojawia się symbol '>'​. Razem tworzą: '<>'​. ​ Po zamknięciu połączenia znika symbol '>'​. +
- +
-=== Baterie === +
-W prawym górnym rogu wyświetlacza znajduje się wskaźnik poziomu baterii. Cały czarny oznacza pełne baterie. +
- +
-==== Ustawienia ==== +
- +
-=== Sleep === +
-NXT ma funkcję “sleep”. Fabrycznie jest ustawiona na 10 minut. Jeżeli do tego czasu nie zostanie wciśnięty dowolny przycisk, NXT się wyłączy. To oznacza, że może to zrobić także w trakcie wykonywania algorytmu. To może być denerwujące. W celu wyłączenia należy wybrać z menu Settings -> Sleep -> Never. +
- +
-=== Dźwięk === +
-Przy włączaniu NXT mogą być wydawane irytujące dźwięki. Można je wyłączyć wybierając z menu Settings -> Volume -> 0. +
- +
-=== Odczyt wartości sensorów === +
-Można odczytać wskazania sensorów bezpośrednio z menu NXT. Należy wybrać View -> {rodzaj_sensora} -> {port}+
  
 ====== Dokumentacja ====== ====== Dokumentacja ======
  
-FIXME Tutaj z serwerem ​dokumentacji ​wszystko wyglądałoby przyjemnie.+FIXME serwer ​dokumentacji ​online
  
 ====== Download ====== ====== Download ======
 +===== Release M0 =====
 +//​20.02.2009//:​ Pobierz {{:​plnxt:​plnxt-m0.tar.gz|PlNXT-M0}}
  
-FIXME+===== Release M3 ===== 
 +//​09.05.2010//:​ Pobierz {{:​plnxt:​plnxt-m3.1.tar.gz|PlNXT-M3.1}}
  
-====== ​Quick Start ======+====== ​Konfiguracja ​======
  
-Jeżeli nie używałeś jeszcze Mindstorms NXT, polecam przejrzeć instrukcję LEGO. Ładna, kolorowa, z obrazkami. :) Na pewno dysponujesz wersją angielską. {{pl:​mindstorms:​dokumentacja:​nxtuserguide_pl_.pdf|Tutaj}} do ściągnięcia wersja polska. ​ Jeśli jesteś do tego zbyt leniwy, zacznij od krótkiego ​opisu Mindstorms NXT (FIXME link), niezbędnego do używania PLNXT. Zawarta jest tam minimalna, jak tylko się da, wiedza o platformie.+Jeżeli nie używałeś jeszcze Mindstorms NXT, polecam przejrzeć instrukcję LEGO. Ładna, kolorowa, z obrazkami. :) Na pewno dysponujesz wersją angielską. {{pl:​mindstorms:​dokumentacja:​nxtuserguide_pl_.pdf|Tutaj}} do ściągnięcia wersja polska. ​ Jeśli jesteś do tego zbyt leniwy, zacznij od krótkiego ​zapoznania z [[#​platforma_lego_mindstorms_nxt|platformą LEGO Mindstorms NXT]], niezbędnego do używania PLNXT. Zawarta jest tam minimalna, jak tylko się da, wiedza o platformie.
  
-Pobierz i rozpakuj aktualną wersję PLNXT. Do ściągnięcia w dziale [[student:​msc2009_nxtapi:​plnxt_pl#​download|download]].+Pobierz i rozpakuj aktualną wersję PLNXT. Do ściągnięcia w dziale [[#​download|download]].
  
 ===== Przygotowanie środowiska ===== ===== Przygotowanie środowiska =====
  
-Różne moduły komunikacyjne wymagają różnego przygotowania środowiska. Tymczasowo możliwa jest używanie jedynie modułu ​serial. Wkrótce będzie to poprawione. Wobec tego dalsze instrukcje są przygotowane jedynie dla tego modułu.+Różne moduły komunikacyjne wymagają różnego przygotowania środowiska
 +  * ''​nxt_actions_serial''​ -- praca przez lokalny port szeregowy,​ 
 +  * ''​nxt_actions_icommand''​ -- praca za pośrednictwem [[http://​lejos.sourceforge.net/​icommand.php|iCommand]] (Java), 
 +  * ''​nxt_actions_sockets''​ -- praca za pośrednictwem gniazd TCP. 
 +Tymczasowo możliwa jest używanie jedynie modułu ​''​serial''​ 
 +Wkrótce będzie to poprawione. Wobec tego dalsze instrukcje są przygotowane jedynie dla tego modułu.
  
-==== Moduł ​nxt_actions_serial ​==== +==== Moduł ​serial ​==== 
-FIXME Pozbierać wszystko, co tu zostało odkryte, do kupy.+[[pl:​plnxt:​conf_serial|Konfiguracja trybu szeregowego dla GNU/Linux]]
  
-==== Moduł ​nxt_actions_icommand ​====+==== Moduł ​icommand ​==== 
 +FIXME
  
-==== Moduł ​nxt_actions_sockets ​====+==== Moduł ​sockets ​==== 
 +FIXME
  
 ====== Pierwsze kroki ====== ====== Pierwsze kroki ======
  
-Jeżeli masz już poprawnie przygotowane środowisko (patrz ​Quick start), możesz przejść do pisania prostych programów. Zachęcam do zapoznania się z "Pierwszymi krokami".+Jeżeli masz już poprawnie przygotowane środowisko (patrz ​[[#​konfiguracja]]), możesz przejść do pisania prostych programów. Zachęcam do zapoznania się z [[pierwsze_kroki|''​Pierwszymi krokami''​]].
  
-===== Praca w powłoce SWIPL =====+====== ​Strony pokrewne ​====== 
 +Patrz [[pl:​mindstorms:​linki]] (część serwisu [[pl:​mindstorms:​start|Laboratorium AGH - LEGO Mindstorms]]).
  
-Proszę uruchomić powłokę SWIPL i załadować plik plnxt.pl ([plnxt].), a następnie: 
-  * Otworzyć połączenie:​ nxt_open. 
-  * Wykonać serię wybranych z dokumentacji poleceń (przemieszczanie,​ odczyt sensorów). Np.: 
-    * nxt_go(300). % Jazda do przodu z prędkością 300 stopni/​sekundę. 
-    * nxt_stop. 
-    * nxt_go_cm(400,​80). % Jazda do przodu z prędkościa 400 stopni/​sekundę. Zatrzymanie po 80 cm. 
-    * nxt_touch(Value). % Odczyt sensora dotyku. 
-    * nxt_sound(Value). % Odczyt sensora dźwięku. 
-    * nxt_light(Value). % Odczyt sensora światła. 
-    * nxt_light_LED(activate). % Włączenie diody sensora światła. 
-    * nxt_light(Value). 
-    * nxt_light_LED(passivate). 
-    * nxt_ultrasonic(Value). 
-    * nxt_rotate(350,​360). % Obrót w prawo o 360 stopni z prędkością 350 stopni/​sekundę. 
-    * nxt_play_tone(500,​2000). % Wydanie dźwięku o częstotliwości 500 Hz i czasie trwania 2000 ms. 
-    * nxt_voltage_millivolt(Voltage). % Odczyt napięcia baterii. 
-  * Zamknąć połączenie:​ nxt_close. 
- 
-===== Programy w pliku ===== 
- 
-Większość predykatów ma swoją wersję z opcją '​force'​ (np. nxt_go(400,​force).),​ która wymusza natychmiastowe wykonanie polecenia.\\ 
-Brak tej opcji sprawia, że polecenie oczekuje na wykonanie do zatrzymania robota.\\ 
-To pozwala na pisanie sekwencyjnych programów, jak przykład niżej. 
- 
-Proszę skopiować poniższy kod do pliku i załadować w SWIPL. 
-<code prolog> 
-:- consult('​sciezka_do_plnxt.pl'​). 
- 
-start :- 
- nxt_open, 
- nxt_go_cm(400,​80),​ % Jazda 200 cm do przodu z prędkością 400 stopni/​sekundę. 
- nxt_go_cm(-400,​80),​ % Jazda 200 cm do tyłu z prędkością 400 stopni/​sekundę. 
- nxt_close. 
- 
-:- start. 
-</​code>​ 
- 
-===== Do czego w takim razie przydaje się '​force'?​ ===== 
- 
-Proszę przetestować proste przykłady programów z wykorzystaniem mechanizmu trigger (FIXME dokumentacja). 
- 
-==== Przykład 1 ==== 
- 
-<code prolog> 
-:- consult('​sciezka_do_plnxt.pl'​). 
- 
-start :- 
- nxt_open, 
- trigger_create(_,​check_distance,​[nxt_stop,​nxt_close]),​ 
- nxt_go(300). 
- 
-check_distance :- 
- nxt_ultrasonic(Distance,​force),​ 
- Distance < 15. 
-</​code>​ 
-Trigger będzie wyzwolony, gdy check_distance będzie prawdziwe. Wtedy zostanie wykonane zatrzymanie robota i zamknięcie połączenia.\\ 
-Zatem jest to prosty program: robot porusza się do przodu do napotkania przeszkody.\\ 
-Pomiar odległości odbywa się cyklicznie. Bez opcji '​force'​ odbyłby się po zatrzymaniu silników (w tym przypadku "​nigdy"​).\\ 
-Robota czekałoby bolesne spotkanie z przeszkodą. 
- 
-==== Przykład 2 ==== 
- 
-<code prolog> 
-:- consult('​../​plnxt.pl'​). 
- 
-start:- 
- nxt_open, 
- go_on_buddy,​ 
- trigger_create(_,​pushed,​[nxt_stop,​nxt_close]). 
- 
-go_on_buddy :- 
- nxt_go(200),​ 
-        sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. 
- trigger_create(_,​clap,​wait_a_second_buddy). 
- 
-wait_a_second_buddy :- 
- nxt_stop, 
-        sleep(1), 
- trigger_create(_,​clap,​go_on_buddy). 
- 
-% Sprawdzenie,​ czy natężenie dźwięku przekracza progową wartość. 
-clap :- 
- nxt_sound(Value,​force),​ 
- Value > 15. 
- 
-% Sprawdzenie,​ czy sensor dotyku jest wciśnięty. 
-pushed :- 
- nxt_touch(Value,​force),​ 
- Value=1. 
-</​code>​ 
- 
-Robot jedzie do przodu. Zatrzymuje się po klaśnięciu. Wznawia ruch po ponownym klaśnięciu.\\ 
-Po wciśnięciu sensora dotyku zatrzymuje się i zamyka połączenie.\\ 
-Proszę odpowiednio dobrać próg natężenia dźwięku. W laboratorium może być głośno.\\ 
-Zbyt niska wartość może spowodować zapętlenie.\\ 
-Zbyt wysoka sprawi, że zamiast klaskać, trzeba będzie solidnie "​puknąć"​ sensor. 
- 
-====== Strony pokrewne ====== 
 ====== Licencja ====== ====== Licencja ======
  
Linia 218: Linia 93:
 PLNXT rozpowszechniany jest z nadzieją, iż będzie on użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI; nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania bliższych informacji, przeczytaj licencję GNU General Public License. PLNXT rozpowszechniany jest z nadzieją, iż będzie on użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI; nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania bliższych informacji, przeczytaj licencję GNU General Public License.
 Z pewnością wraz z PLNXT otrzymałeś egzemplarz licencji GNU General Public License. Jeśli nie, zobacz [[http://​www.gnu.org/​licenses/​]]. Z pewnością wraz z PLNXT otrzymałeś egzemplarz licencji GNU General Public License. Jeśli nie, zobacz [[http://​www.gnu.org/​licenses/​]].
 +
 +{{:​hekate:​gplv3.png|GPLv3}}
  
 ====== Kontakt ====== ====== Kontakt ======
Linia 227: Linia 104:
  
 E-mail: holownia(_at_)agh.edu.pl E-mail: holownia(_at_)agh.edu.pl
 +ew. gjn(_at_)agh.edu.pl
 +
 +====== Prace rozwojowe ======
 +Dla [[mindstorms:​plnxt:​plnxtdev:​start|deweloperów]].
  
 ====== Aktualności/​problemy ====== ====== Aktualności/​problemy ======
  
-**14 stycznia 2009**\\ +  * **14 stycznia 2009** ​-- PLNXT zostało użyte podczas zajęć ze studentami. Liczymy na uzyskanie opinii, które pomogą usunąć błędy. Wcześniej trwały prace nad modułem warstwy komunikacyjnej z wykorzystaniem połączenia szeregowego,​ opartego bezpośrednio na protokole LEGO. Protokół ten daje większe możliwości,​ niż używane wcześniej moduły icommand i sockets. Pozwala m.in. synchronizować pracę silników. Wyższa warstwa została przekształcona tak, żeby wykorzystać w pełni to, co daje nam protokół LEGO. Należy ją jeszcze wtórnie przystosować do użycia modułów warstwy komunikacyjnej,​ niezapewniających synchronizacji,​ jak również same te moduły. W tym momencie możliwe jest użycie tylko modułu serial jako warstwy komunikacyjnej.
-PLNXT zostało użyte podczas zajęć ze studentami. Liczymy na uzyskanie opinii, które pomogą usunąć błędy. Wcześniej trwały prace nad modułem warstwy komunikacyjnej z wykorzystaniem połączenia szeregowego,​ opartego bezpośrednio na protokole LEGO. Protokół ten daje większe możliwości,​ niż używane wcześniej moduły icommand i sockets. Pozwala m.in. synchronizować pracę silników. Wyższa warstwa została przekształcona tak, żeby wykorzystać w pełni to, co daje nam protokół LEGO. Należy ją jeszcze wtórnie przystosować do użycia modułów warstwy komunikacyjnej,​ niezapewniających synchronizacji,​ jak również same te moduły. W tym momencie możliwe jest użycie tylko modułu serial jako warstwy komunikacyjnej.+
pl/plnxt/start.1234872333.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0