i_droid_instrukcja77.pdf
(
3130 KB
)
Pobierz
robot 77 8-12
KROK PO KROKU
METODY
USTANOWIENIA
POLACZENIA W JAVIE
Jedn z pierwszych funkcji, jakie trzeba zaimplementowa, by mc programowa i-D01
w Javie, jest ustanowienie po¸czenia mi«dzy komputerem a robotem. Na nast«pnych
stronach przedstawimy przyk¸ad kodu, ktry powoduje po¸czenie i roz¸czenie
komputera z i-D01 przy wykorzystaniu dodatkowych bibliotek.
PRZYKüADY PROGRAMOWANIA
wykorzysta i-D01, musi przede
wszystkim ustanowi po¸czenie
z robotem. Przypominamy, ýe programy
napisane w Javie zostan uruchomione
na komputerze i uýywaj i-D01 tylko jako
rodzaju ãinteligentnego urzdzenia pery-
feryjnegoÓ, wykorzystujc Bluetooth. Na-
st«pnie zobaczymy prosty przyk¸ad, jak
moýna zaimplementowa funkcj« pozwa-
lajc komputerowi po¸czy si« z robo-
tem, a potem od¸czy si« od niego. Kod,
ktry pokaýemy, zostaje zaprezentowany
wewntrz klasy o nazwie TestPolaczenia
(w j«zyku programowania nie uýywamy
polskich znakw). W j«zyku Java kod r-
d¸owy jest podzielony na ãklasyÓ, ktre
definiuj tak zwane ãobiektyÓ. Interakcja
mi«dzy wieloma obiektami rýnego typu
powoduje potem uruchomienie progra-
mu. W tym prostym przyk¸adzie wystar-
czy jedna klasa, ktra implementuje pod-
stawowe metody po¸czenia i od¸czenia
i w tym samym czasie dostarcza takýe pro-
sty przyk¸ad ich uýycia. W razie pytaÄ lub
problemw dotyczcych j«zykw progra-
mowania zorientowanych obiektowo,
a w szczeglnoæci j«zyka Java, moýna zaj-
rze do jednego z licznych podr«cznikw
dost«pnych na rynku, lub jednego z dar-
mowych dost«pnych w internecie, na przy-
k¸ad s¸ynnego Thinking in Java. Przed uýy-
ciem bibliotek Java z trzeciej p¸yty CD (do-
¸czonej do numeru 66) dobrze jest zoba-
czy pliki zawarte w katalogu doc,
Przyk¸ad kodu Java do implementacji klasy po¸czenia mi«dzy komputerem
a robotem. S pokazane tylko instrukcje pakietu i importu (wprowadzone
przez package i import) oraz w¸aæciwoæci (portName, protocol, internal).
Metody klasy (main, TestPolaczenia, polacz, rozlacz) s tylko zacytowane:
aby mg¸ by uýyty, kod musi by dokoÄczony poprzez dopisanie wewntrz
rýnych metod odpowiednich kodow rd¸owych, pokazanych na
nast«pnych stronach. Kod klasy musi zosta zachowany w pliku o nazwie
TestPolaczenia.java (gdzie .java jest rozszerzeniem pliku).
KLASA TestPolaczenia
package communication.examples;
import communication.handler.ProtocolHandler;
import communication.handler.internal.InternalHandler
import communication.transport.ConnectionProvider;
public class TestPolaczenia {
private static String portName;
private ProtocolHandler protocol;
private InternalHandler internal;
public static void main(String[] args) {
[...] //tu trzeba wstawi kod main
}
public TestPolaczenia () {
[...] //tu trzeba wstawi kod metody TestPolaczenia
private boolean polacz() {
[...] //tu trzeba wstawi kod metody polacz
private void rozlacz
[...] //tu trzeba wstawi kod metody rozlacz
}
} // class TestPolaczenia
8
METODY
USTANOWIENIA
POüCZENIA W JAVIE
K
aýdy program w Javie, ktry chce
}
}
METODY USTANOWIENIA POüCZENIA W JAVIE
otrzymanym z rozpakowania pliku java-documentation.zip.
Dostarczaj one ca¸ej dokumentacji dotyczcej prawid¸owe-
go uýycia wczeæniej przygotowanych klas.
woæci implementacji, tutaj zosta¸a przytoczona z racji swej
prostoty. W rzeczywistoæci ta sama funkcja moýe by zre-
alizowana takýe w inny sposb. W kaýdym razie zachowaj
sobie ten kod. Przyda ci si« do innych programw Java,
przewidujcych pod¸czenie si« do i-D01. Na pocztek me-
toda polacz tworzy obiekt o nazwie provider, typu okreælo-
nego przez klas« SerialJavaxCommProvider (zawarta w do-
datkowch bibliotekach), podajc jako parametry nazw« por-
tu do po¸czenia (portName) i 9600 (pr«dkoæ w bitach na
sekund«, z jak nast«puje komunikacja przez port szerego-
wy, nie majca wp¸ywu na wirtualne porty szeregowe Blu-
etooth uýywane w normalnym po¸czeniu mi«dzy robotem
a komputerem). Potem metoda przechodzi do konkretnej re-
alizacji obiektw protocol i internal, deklarowanych na po-
cztku klasy TestPolaczenia. Nast«pnie metoda polacz poka-
zuje na monitorze napis ãTrwa ¸czenie...Ó (funkcja
BIBLIOTEKI I DEKLARACJE
Pisanie klasy TestPolaczenia rozpoczyna si« kilkoma wst«p-
nymi deklaracjami. Przede wszystkim trzeba wskaza do-
datkowe klasy, ktrych metody klasy TestPolaczenia (opisa-
nej poniýej) b«d potrzebowa. Jak powiedzieliæmy juý w ze-
szycie 76, jako pierwsz rzecz trzeba wskaza, ýe klasa, kt-
r si« opisuje, naleýy do pakietu communication.examples:
W ten sposb b«dzie moýna skompilowa i uruchomi stwo-
rzony program w prosty sposb, do¸czajc go do przyk¸a-
dw zamieszczonych na trzeciej p¸ycie CD i zawartych w ka-
talogu bin/communication/examples.
Nast«pnie trzeba wprowadzi odnoæniki do bibliotek: com-
munication.handler.ProtocolHandler, com-
munication.handler.internal.InternalHan-
dler i communication.transport.Connec-
tionProvider (obecne w katalogu src z pli-
ku java-library.zip). S one cz«æci biblio-
tek stworzonych specjalnie, by pozwoli
komputerowi komunikowa si« z i-D01
za pomoc po¸czenia Bluetooth. W przy-
padku TestuPolaczenia, s to dok¸adnie
te trzy. One, tak samo jak wszystkie inne
klasy dla i-D01 za¸czone na p¸ycie, s
opisane w odpowiadajcych im plikach
pomocy z katalogu doc. Po zakoÄczeniu
tych deklaracji wst«pnych moýna rozpo-
cz opisywanie szczeg¸w klasy Test-
Polaczenia. B«dzie ona potrzebowa trzech
w¸aæciwoæci, ktrych wszystkie metody
klasy b«d mog¸y uýywa. S to: nazwa
portu do komunikacji mi«dzy kompute-
rem a robotem (portName) i inne dwa
obiekty (protocol i internal), ktre wyko-
rzystuj metody wspomagajce po¸cze-
nie. Potem nast«puje kolej metod klasy:
g¸wnej (main; potrzebna by uruchomi
program koÄcowy), konstruktora (Test-
Polaczenia, o takiej samej nazwie jak kla-
sa, pozwala na realizacj« obiektu klasy
TestPolaczenia) i w koÄcu metod do wy-
konania po¸czenia (polacz) i roz¸czenia
(rozlacz).
PRZYKüADY PROGRAMOWANIA
Kod rd¸owy implementacji metody polacz. Po stworzeniu kana¸u komunikacji
i zainicjowaniu protoku¸u metoda po¸czy komputer z robotem (wywo¸ujc
funkcje protocol.connect i protocol.setup, za¸czone w klasie ProtocolHandler)
METODA POLACZ
private boolean polacz() {
ConnectionProvider provider = new SerialJavaxCommProvider(portName,9600);
protocol = new ProtocolHandler(provider, 9600);
internal = new InternalHandler();
protocol.addCapabilityHandler(internal);
System.out.println(ãTrwa ¸czenie...Ó);
try
{
if (!protocol.connect())
{
System.err.println(ãPo¸czenie niemoýliwe!Ó);
return false;
}
if (!protocol.setup(5000))
{
System.err.println(ãUstanowienie po¸czenia nie uda¸o si«!Ó);
protocol.disconnect(true);
return false;
}
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
METODA POüCZ
Rozpoczynamy od metody o nazwie po-
lacz. Stanowi ona ãserceÓ dzia¸ania klasy,
dostarczajc niezb«dnej procedury dla
programu by po¸czy si« z robotem. Po-
kazana metoda jest tylko jedn z moýli-
System.out.println(ãKlient po¸czonyÓ);
return true;
} // polacz
9
KROK PO KROKU
PRZYKüADY PROGRAMOWANIA
czej, jeæli zostaje zwrcony przez metod« pro-
tocol.disconnect, parametr true realizuje na-
tychmiastowe roz¸czenie. Po wywo¸aniu pro-
tocol.disconnect kod rd¸owy rozlacz poka-
zuje blok catch, do zarzdzania ewentualnymi
b¸«dami w fazie uruchamiania. Jeæli nie ma pro-
blemw, nast«puje wizualizacja wiadomoæci
ãKlient roz¸czonyÓ.
Kod metody rozlacz. Po¸czenie mi«dzy komputerem a i-D01 koÄczy si«
wywo¸aniem funkcji protocol.disconnect dostarczonej w klasie ProtocolHandler.
METODA ROZLACZ
private void rozlacz() {
System.out.println(ãTrwa roz¸czanie...Ó);
try
{
KONSTRUKTOR I MAIN
Jak juý powiedzieliæmy, wewntrz klasy TestPo-
laczenia istnieje takýe metoda o takiej samej na-
zwie, okreælana w Javie ãkonstruktoremÓ. W Ja-
vie, oglnie, kaýda klasa przedstawia ãopisÓ ty-
pologi obiektw, a funkcj metod konstrukto-
rw jest tworzenie rýnych obiektw opisa-
nych w klasie. W tym szczeglnym przypadku,
przedstawiona klasa opisuje obiekt TestPola-
czenia. Jego konstruktor wskazuje operacje, ja-
kie ma wykona, by zrealizowa po¸czenie te-
stowe. Metoda TestPolaczenia rozpoczyna, od-
wo¸ujc si« do polacz. Jeæli wykonanie tego nie jest
moýliwe, konstruktor wychodzi natychmiast (funkcja Sys-
tem.exit z parametrem rwnym 1, oznaczajcym, ýe wyjæcie
by¸o spowodowane b¸«dem). Jeæli jednak po¸czenie nast-
pi, konstruktor po prostu czeka 5000 milisekund (Thread.sle-
ep z parametrem 5000), by potem odwo¸a si« do metody
rozlacz. Wszystko zostaje zawarte w bloku try-catch.
W koÄcu opiszemy metod« g¸wn, czyli main. Definiuje
ona uruchomienie programu Java. W przypadku programu
sk¸adajcego si« z wi«kszej iloæci klas metoda main obecna
jest tylko w jednej z nich i poczynajc od tej ãg¸wnejÓ kla-
sy, wywo¸uje rýne metody potrzebne do uruchomienia pro-
gramu. W naszym przyk¸adzie main rozpoczyna sprawdze-
niem, czy uýytkownik wskaza¸ wirtualny port szeregowy,
przez ktry mia¸oby nastpi po¸czenie. W¸aænie do tej kon-
troli s¸uýy instrukcja warunkowa if, ktra uýywa jako zmien-
nej wyraýenia args.lenght < 1: jeæli parametry dane przez
uýytkownika s mniejsze niý 1 (czyli bardziej zrozumiale, je-
æli uýytkownik nie wprowadzi¸ ýadnego parametru, z pew-
noæci nie zosta¸ wskazany port do po¸czenia). W tym wy-
padku nie b«dzie moýliwa prba po¸czenia i main zakoÄ-
czy si« bez wykonywania innych operacji. Jeæli jednak istnie-
je przynajmniej jeden parametr dany przez uýytkownika,
test if koÄczy si« pomyælnie i pierwszy z parametrw, ktry
powinien by takýe jedynym, zostaje zapami«tany jako na-
zwa portu (portName = args[0]). Potem zostaje uruchomio-
ny konstruktor, ktry zajmie si« reszt. Jak juý wspomnieli-
æmy wywo¸a on metod« polacz, zaczeka 5 sekund, a potem
wykona roz¸czenie. Metody konstruktor i main stanowi
ãstruktur« noænÓ podanego przyk¸adu, determinujc jego
oglne zachowanie. Prawdopodobnie wi«c nie wykorzy-
stasz ich ponownie do swoich programw w Javie, jeæli nie
protocol.disconnect(false);
}
catch (Exception e)
{
e.printStackTrace();
return;
}
System.out.println(ãKlient roz¸czonyÓ);
} // rozlacz
System.out.println), potem uýywa bloku try-catch (typo-
wych konstruktorw j«zyka Java, uýytecznych w zarzdza-
niu b¸«dami, ktre mog zdarzy si« podczas uruchamiania
programu). W bloku try nast«puje procedura po¸czenia,
dzi«ki wywo¸aniu metody protocol.connect, takýe do¸czo-
nej w bibliotekach. Nast«pnie zostaje wywo¸ana metoda
protocol.setup. Przekazuje si« jej parametr, czyli czas w mi-
lisekundach, przez jaki komputer b«dzie musia¸ czeka na
odpowied ze strony robota. W tym przyk¸adzie zosta¸a uýy-
ta wartoæ rwna 5000, rwnowaýna z 5 sekundami: jeæli
w cigu tego czasu robot nie odpowie, prba po¸czenia zo-
stanie przerwana. W przeciwnym wypadku (czyli jeæli robot
odpowie w okreælonym czasie) po¸czenie zostanie utworzo-
ne. W tym momencie, jeæli nie pojawi si« b¸«dy, ewentual-
nie zasygnalizowane przez blok catch kodu rd¸owego,
metoda pokazuje na ekranie wiadomoæ ãKlient po¸czonyÓ,
znw uýywajc funkcji System.out.println. Tak instrukcj koÄ-
czy si« metoda polacz.
METODA ROZüCZ
Operacje potrzebne do roz¸czenia programu Java od i-D01
s doæ proste. Zaproponowana metoda zaczyna si« od wi-
zualizacji na ekranie wiadomoæci ãTrwa roz¸czanie...Ó, kt-
ra zapowiada uýytkownikowi rozpocz«cie procedury. Na-
st«pnie zostaje wywo¸ana wewntrz bloku try-catch, meto-
da protocol.disconnect, ktrej zostaje zwrcony parametr
false. Ta metoda, zawarta w klasie ProtocolHandler, wyko-
nuje roz¸czenie. Parametr false wskazuje, ýe przerwanie
po¸czenia z robotem musi nastpi w sposb ãprzyjaznyÓ,
czyli za pomoc procedury, wed¸ug ktrej i-D01 zostaje
wczeæniej ãzawiadomionyÓ o zamkni«ciu po¸czenia. Ina-
10
METODY USTANOWIENIA POüCZENIA W JAVIE
wprowadzisz odpowiednich poprawek, aby dostosowa je
do w¸asnych potrzeb. Kod rd¸owy metod polacz i rozlacz
moýe by ¸atwo wykorzystany w kaýdym programie do im-
plementowania funkcji po¸czenia i roz¸czenia si« robota.
Moýna to zrobi takýe w inny sposb, na przyk¸ad wywo-
¸ujc bezpoærednio metody connect i disconnect dodane
juý do klasy ProtocolHandler czy piszc od pocztku meto-
dy polacz i rozlacz, personalizujc je w odpowiedni sposb.
Moýesz jednak zatrzyma zaproponowane tu przyk¸ady ja-
ko baz« do napisania nowych.
k¸ad Notes czy Notepad) lub przy uýyciu specyficzne-
go programu dla programistw (np. Eclipse). Przypomina-
my, ýeby zachowa plik, nazywajc go TestPolaczenia.java,
gdzie .java oznacza rozszerzenie pliku. Identyfikuje ono pli-
ki zawierajce kody rd¸owe programw napisanych w tym
j«zyku. Jeæli chodzi o pozycj«, gdzie zachowa plik, jak juý
powiedzieliæmy w zeszycie 76, wygodnym rozwizaniem
jest umieszczenie kodu w tym samym katalogu, gdzie umiesz-
czone s przyk¸adowe pliki wykonawcze (zapisane w pod-
katalogu bin), z trzeciej p¸yty. Potem moýna zacz kompi-
lacj« pliku. Aby to zrobi, Java wymaga, by na komputerze
by¸ zainstalowany JDK (Java Development Kit, do æcigni«-
cia na stronie www.java.sun.com, jeæli jeszcze go nie posia-
dasz). Taki zestaw zawiera biblioteki bazowe i przede wszyst-
kim kompilator Javy. Jest to szczeglny program, ktry t¸u-
maczy plik kodu .java na plik, ktry moýna uruchomi, o roz-
szerzeniu .class. Powracajc do naszego przyk¸a-
du, moýna rozpocz kompilacj« od komen-
dy w wierszu poleceÄ javac TestPolaczenia.ja-
va. Jeæli kompilacja si« powiedzie (czyli jeæli
kompilator nie wykryje ýadnego b¸«du w sk¸ad-
ni kodu rd¸owego, zostanie stworzony w tym
samym katalogu plik o nazwie TestPolacze-
nia.class. Teraz nie pozostaje nic innego jak uru-
chomi program. Aby to zrobi, moýna uýy
pliku run.bat (zob. takýe zeszyt 76). Wystar-
czy przejæ w wierszu poleceÄ do katalogu,
gdzie plik jest zachowany na komputerze i wy-
da komend«: run.bat TestPolaczenia ãport-
COMÓ, gdzie ãport-COMÓ to port szeregowy,
ktry jest pod¸czony do i-D01. Moýna teý
uýy komendy java, przy ktrej trzeba jednak
poda niektre parametry (potrzebne, by wska-
za, gdzie znajduj si« biblioteki dla i-D01). Aby
dowiedzie si«, jakie s te parametry, trzeba
zobaczy (ewentualnie zmieni i zachowa
pod inn nazw) zawartoæ pliku run.bat do-
¸czonego do p¸yty: wystarczy otworzy go
w edytorze tekstw. W kaýdym razie dobrym
zwyczajem jest zawsze zachowanie kopii ory-
ginalnego pliku, by nie ryzykowa wprowadze-
nia zmian, ktre uczyni go bezuýytecznym.
KOMPILACJA I URUCHOMIENIE
Po szczeg¸owym omwieniu kodu klasy TestPolaczenia
przejdziemy teraz do jego napisania, a potem kompilacji
i uruchomienia. Kod moýe by zapisany w pliku edytora tek-
stu (dla Windows istnieje wiele prostych edytorw na przy-
PRZYKüADY PROGRAMOWANIA
Kod metod main i TestPolaczenia. Pierwszy jest metod g¸wn, ktra
zostaje wywo¸ana automatycznie przy uruchomieniu programu Java po jego
kompilacji. W tym przyk¸adzie metoda po prostu sprawdza, czy przy
uruchomieniu programu zosta¸ wskazany wirtualny port szeregowy
wykorzystywany do po¸czenia z I-D01, potem wywo¸uje metod«
TestPolaczenia. Ta ostatnia jest metod konstruktorem klasy, czyli t, ktra
tworzy obiekt opisany w tej klasie. W tym przypadku, konstruktor w¸cza
metod« polacz, potem czeka 5000 milisekund (czyli 5 sekund) a nast«pnie
wywo¸uje metod« rozlacz, zamykajc po¸czenie z robotem.
KLASA TestPolaczenia
public static void main(String[] args) {
if (args.length < 1)
{
return;
}
portName = args[0];
TestPolaczenia test = new TestPolaczenia();
} // main
public TestPolaczenia () {
if (!polacz()) System.exit(1);
try {
Thread.sleep(5000);
catch (Exception e) {
e.printStackTrace();
System.exit(1);
rozlacz();
} // TestPolaczenia
11
}
}
KROK PO KROKU
Zgodnie z ruchem wskazwek zegara pokazane s
ekrany wiersza poleceÄ odnoszce si« do wykonania
klasy TestPolaczenia w rýnych sytuacjach: bez podania
portu po¸czenia, przy podaniu niew¸aæciwego portu
i w koÄcu z prawid¸owym portem.
Poniýej: ekran pokazujcy zawartoæ pliku
run.bat do¸czonego do trzeciej p¸yty.
Po otwarciu pliku w edytorze tekstu moýe on
zosta zmodyfikowany stosownie do potrzeb.
UWAGA!
W aktualizacji oprogramowania modu¸u mzgu i wzroku zabrak¸o testu modu¸u
lokalizacji rde¸ dwi«kw widocznego w menu jako Test SF.
Aby mc korzysta z wszystkich moýliwoæci robota, prosimy zainstalowa poprawion
wersj« oprogramowania modu¸u mzgu i wzroku.
Naleýy zrobi to poprzez rozpakowanie do wybranego katalogu na twardym dysku
w¸asnego komputera pliku CD3_Poland_update.zip i uruchomienie pliku
brain_update.exe z tego katalogu.
12
Plik z chomika:
mikroprocesory
Inne pliki z tego folderu:
i_droid_instrukcja72.pdf
(5359 KB)
i_droid_instrukcja71.pdf
(1899 KB)
i_droid_instrukcja70.pdf
(1857 KB)
i_droid_instrukcja69.pdf
(1942 KB)
i_droid_instrukcja68.pdf
(1962 KB)
Inne foldery tego chomika:
Zgłoś jeśli
naruszono regulamin