Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
Nowa wersja
Both sides next revision
|
pl:miw:miw08_mindstormscontrolc [2008/04/08 21:20] miw |
pl:miw:miw08_mindstormscontrolc [2008/06/13 20:03] miw |
* opis kompilacji i zależności | * opis kompilacji i zależności |
* przykład użycia przez telnet | * przykład użycia przez telnet |
| |
| |
===== 080422 ===== | ===== 080422 ===== |
* implementacja w prologu najniższej warstwy | * implementacja w prologu najniższej warstwy |
* test komunikacji z prologu (open socket) | * test komunikacji z prologu (open socket) |
| |
| |
| |
| ===== 080520 ===== |
| * GJN -> api w cvs, -> PH/MZ |
| * MZ -> integr -> PH |
| * PH -> testy |
| * GJN -> testy + kompilacja win/linux |
| * BT pod win? ident robota + uwierz(pin?) |
| |
| ===== 080603 ===== |
| * testy, oceny |
| |
====== Projekt ====== | ====== Projekt ====== |
| |
===== Opis protokolu ===== | ===== Opis protokolu ===== |
| |
| |
| |
^ command ^ return ^ description ^ | ^ command ^ return ^ description ^ |
| nxt; open | --- | Initiates the NXT connection | | | nxt; open | --- | Initiates the NXT connection | |
| | nxt; openBT | --- | Initiates the NXT connection over BT | |
| | nxt; pair; resourceName; passkey; pairedResourceName | --- | Pairs the specified NXT to this computer | |
| | nxt; unpair; resourceName | --- | Destroys the Bluetooth pairing that was previously established between this computer and the specified NXT | |
| nxt; close | --- | Closes the NXT connection| | | nxt; close | --- | Closes the NXT connection| |
| nxt; batteryLevel | value | Returns the current battery level | | | nxt; batteryLevel | value | Returns the current battery level | |
| |
Zrodla projektu (ver. 2) {{:pl:miw:mindstorm_control_c_ver.2.zip|mindstorm_control_c_ver.2.zip}} | Zrodla projektu (ver. 2) {{:pl:miw:mindstorm_control_c_ver.2.zip|mindstorm_control_c_ver.2.zip}} |
| |
| |
| |
===== ===== | ===== ===== |
Opis uzywania dla obu systemow znajduje sie [[http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio.html|tutaj]] | Opis uzywania dla obu systemow znajduje sie [[http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio.html|tutaj]] |
Z tej samej strony oczywiscie mozemy zassac zrodla. | Z tej samej strony oczywiscie mozemy zassac zrodla. |
| |
| UWAGA! Po wykonaniu czynnosci opisanych na stronie [[http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio.html|http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio.html]] niekoniecznie wszystkie wymagane bibioteki trafia do katalogow przeznaczenia i bedziemy miec problemy podczas linkowania. W takiej sytuacji kopiujemy z utworznego przez boost'a katalogu 'bin.v2' wszystkie wymagane biblioteki. |
| |
Gdy powyzszy etap bedziemy mieli ze soba, mozemy juz uzywac stworzonego projektu, najlepiej wykorzystujac stworzone i zalaczone w zrodlach dla: | Gdy powyzszy etap bedziemy mieli ze soba, mozemy juz uzywac stworzonego projektu, najlepiej wykorzystujac stworzone i zalaczone w zrodlach dla: |
* [windows] projekt w VC++ 2005 | * [windows] projekt w VC++ 2005 |
* [linux] makefile (oczywiscie uprzednio go edytujac - nalezy podac informacje o polozeniu headerow dla nxt++ oraz (w zaleznosci od sposobu wykonania pierwszego etapu) ewuntualnie sciezki do ASIO boost'a). | * [linux] makefile (oczywiscie uprzednio go edytujac - nalezy podac informacje o polozeniu headerow dla nxt++ oraz (w zaleznosci od sposobu wykonania pierwszego etapu) ewuntualnie sciezki do ASIO boost'a). |
| |
| |
| |
| |
| |
| |
| |
| ===== ===== |
| **Binarki** |
| |
| * [windows] {{:pl:miw:nxt.zip|nxt.zip}} (zbudowano na Windows XP SP2) |
| * [linux] {{:pl:miw:nxt.tar.gz|nxt.tar.gz}} (zbudowano na Debian 4.0 R3) Jesli nie instalowano uprzednio ASIO boosta z pewnoscia bedziemy musieli wykorzystac zalaczona biblioteke do uruchomienia binarki. Najlepiej ja przeniesc w stand. miejsce wszystkich bibliotek czyli pewnie do /usr/lib/. |
| |
| **Binarki - wersja 3.** |
| * [windows] {{:pl:miw:nxt2.zip|nxt2.zip}} |
| * [linux] {{:pl:miw:nxt2.tar.gz|nxt2.tar.gz}} |
| |
| ===== ===== |
| **Przyklad uzycia** |
| |
| * laczymy sie np. przez telnet na porcie 2056 (oczywiscie IP stosowny do sytuacji; na cele przykladu zaklada sie lokalne odpalenie serwera), czyli wpisujemy: '**telnet localhost 2056**' |
| * na poczatku musimy sie polaczyc z robotem, wydajemy wiec polecenie: '**nxt; open**' |
| * pozniej wszystkie inne polecenia, ktore zrobia z robotem wszystko czego zapragniemy ;) |
| * na samym koncu zeby sie rozlaczyc z robotem wydajemy polecenie '**nxt; close**' |
| * i rozlaczanie z samym serwerem realizujemy za pomoca polecenia: '**bye**' |
| |
| |
| |
| |
| |
| ===== ===== |
| **Kolejna, trzecia wersja** |
| |
| W nowej wersji dokonano niewielkich modyfikacji czesci kodu, na rzecz usuniecia znalezionych niedopatrzen. |
| Wieksza czesc pracy nad ta wersja poswiecono na dodanie pewnej funkcjonalnosci na potrzeby integracji z Prologiem (klient napisany w Prologu). |
| * Zrodla (wersja 3): {{:pl:miw:mindstorm_control_c_ver.3.zip|mindstorm_control_c_ver.3.zip}} |
| |
| |
| |
| |
| ===== ===== |
| **Klient w prologu** |
| |
| Kolejnym etapem byla integracja napisanego uprzednio kodu, z klientem, ktory mialby sie laczyc z naszym serwerem i na rzecz ktorego serwer wykonywalby zadane operacje. API calosci napisal kolega, Piotr Hołownia, moim zadaniem bylo napisanie tresci (klienta) w Prologu. |
| Dokonano wiec implementacji zadanych instrukcji, ktore komunikuja sie z poziomu Prologu za pomoca socketow z programem napisanym w C++. |
| * Zrodla: {{:pl:miw:nxt_actions_dummy.pl|nxt_actions_dummy.pl}} |
| |
| |
| |
| |
| |
| ===== ===== |
| **BT pod win** |
| |
| Z wykorzystaniem NXT++ istnieje mozliwosc polaczenia z robotem nie tylko za pomoca USB, ale takze przez BT. |
| W celu polaczenia przez BT (wczesniej juz zparowanego) wystarczy wywolac funckcje OpenBT(). W przypadku kiedy chcemy zdecydowac z poziomu kodu o parowaniu konkretnego robota musimy uzyc odpowiednich funkcji: |
| * **Parowanie:** iNXT::pairBluetooth( ViConstString resourceName, ViConstString passkey, ViChar pairedResourceName[], tStatus& status ); |
| |
| * <resourceName> The resource string that specifies the NXT with which to pair |
| * <passkey> A string containing the passkey the computer should exchange with the device. The passkey cannot be longer than 15 characters and must be NULL-terminated |
| * <pairedResourceName> A Bluetooth resource string representing the paired device. On Windows, the specified resourceName is suffixed with the COM port; On Mac OS X, the RFCOMM channel identifier. The resource string must have a capacity of 256 bytes |
| *<status> Status chaining object. |
| * **Odparowywanie:** iNXT::unpairBluetooth( ViConstString resourceName, tStatus& status ); |
| * <resourceName> The resource string that specifies the NXT with which to unpair |
| * <status> Status chaining object |
| * **Sprawdzanie zparowania:** iNXT::isPaired( ViConstString resourceName, tStatus& status ); |
| * <resourceName> A resource string that specifies the NXT for which to check its pairing status |
| * <status> Status chaining object |
| * Return: VI_TRUE if the NXT is paired with this computer (or if it is connected via USB); VI_FALSE otherwise |
| |
| |
| |
| |
| |
| |
| |
| |
| ===== ===== |
| **BT pod win cd. - dodano kod do uzywania (parowania, odparowywania, otwierania) BT** |
| |
| Tak jak w temacie - dodano mozliwosc uzywania BT pod win, wlacznie z parowaniem/odparowywaniem. Informacje jak tego uzywac znajdziemy powyzej, w zaktualizowanym opisie protokolu, ktorego uzywa serwer. |
| |
| * Zrodla, ostatniej wersji: {{:pl:miw:mindstorm_control_c_ver.4.zip|mindstorm_control_c_ver.4.zip}} |
| |
| P.S. Oczywiscie w celu wyszukiwania, parowania etc. (nad BT) mozemy wykorzystac pod win powszechnie uzywany program: [[http://www.bluesoleil.com/|BlueSoleil]] |
| |
| ===== ===== |
| **Poprawki w serwerze na rzecz wspolpracy z Prologiem; Dodano duza czesc implementacji po stronie prologu, tak byla max. zgodnosc z iCommand** |
| |
| * Zrodla:{{:pl:miw:mindstorm_control_c_ver.6.zip|mindstorm_control_c_ver.6.zip}} |
| |
| |
====== Materiały ====== | ====== Materiały ====== |