robot 3


P R O J E K Robot
T Y
Robot, część 3
Oprogramowanie
AVT-821
W trzeciej, ostatniej czÍÅ›ci
artykułu przedstawiamy opis
oprogramowania sterujÄ…cego
ìrÍkÄ…î robota. Opis procedur
przygotowanych przez autora
ułatwi Czytelnikom
przygotowanie oprogramowania
spełniającego ich indywidualne
wymagania.
Informacje ogÛlne do portÛw za pomocÄ… wstawek
Program Raabot jest dostarcza- asemblerowych, co jest niedozwo-
ny z kitem AVT-821. Słuły do lonym rozwiązaniem w systemie
edytowania, zapisywania i odtwa- Windows NT, mołe działaĘ nie-
rzania kolejnych poÅ‚oÅ‚eÒ serwo- poprawnie rÛwnieÅ‚ w tym syste-
mechanizmÛw stanowiÄ…cych ele- mie.
menty wykonawcze robota. Pro-
gram przeznaczony jest do pracy Porty, adresy
w systemie operacyjnym Win- Program Raabot steruje ukła-
dows 95 lub 98. Nie bÍdzie dem z kitu AVT-821 za poÅ›rednic-
dziaÅ‚aÅ‚ prawidÅ‚owo z wczeÅ›niej- twem Å‚Ä…cza rÛwnolegÅ‚ego. W pro-
szymi wersjami Windows i z Win- gramie przewidziana jest wspÛÅ‚-
dows NT. Został napisany za praca ze standardowymi portami
pomocÄ… Delphi 3, z wykorzysta- LPT1 (adres 378h) i LPT2 (adres
niem funkcji API32. Niemołliwia 278h). Zmiany portu mołna do-
jest wiÍc jego wspÛÅ‚praca ze konaĘ wybierajÄ…c odpowiedniÄ… po-
starszymi, 16-bitowymi wersjami zycjÍ w menu Konfiguracja.
Windows. Nie pomołe nawet za- W programie nie przewidziano
instalowanie Win32 do Windows wspÛÅ‚pracy z portami ustawiony-
wersji 3.1 i 3.11. Poniewał pro- mi niestandardowo.
gram odwoÅ‚uje siÍ bezpoÅ›rednio
Instalowanie
i odinstalowywanie
Aby zainstalowaĘ to oprogra-
mowanie naleły uruchomiĘ pro-
gram setup.exe z dyskietki insta-
lacyjnej. Program instalacyjny sko-
piuje pliki oprogramowania na
dysk twardy i utworzy grupÍ pro-
gramu Raabot w Menu Start. Pro-
gram zapisuje w systemie dane
konfiguracyjne w pliku rejestrÛw.
Dlatego, aby program odinstalo-
waĘ całkowicie, naleły skorzystaĘ
z polecenia Dodaj/UsuÒ Programy
z Panelu Sterowania lub z progra-
mu UsuÒ Raabota, znajdujÄ…cego
siÍ w grupie programu Raabot.
Nie zaleca siÍ rÍcznego usuwania
programu. Nie stanowi to Å‚adnego
niebezpieczeÒstwa dla systemu,
a nawet nie zaśmieca go w istot-
Rys. 5. Otwarte okno nowej aplikacji w Delphi.
Elektronika Praktyczna 9/99
61
Robot
rzanie caÅ‚ej sekwencji w pÍtli.
Szybka edycja poÅ‚oÅ‚eÒ serwo-
mechanizmÛw w kolejnych pozy-
cjach mołliwa jest przy wykorzys-
taniu klawisza TAB i kursorÛw.
CaÅ‚Ä… utworzonÄ… sekwencjÍ ru-
chÛw moÅ‚na zapisaĘ w pliku
w sposÛb standardowy dla syste-
mu Windows 95/98.
Jak działa program
Delphi jest wyjÄ…tkowo wdziÍcz-
nym narzÍdziem programistycz-
nym. Stanowi bardzo inteligentne
i intuicyjne połączenie starego, po-
wszechnie lubianego Pascala, śro-
dowiska graficznego i obiektowych
technik programowania. Progra-
mowanie w nim jest bardzo pros-
te, nawet jełeli ktoś od Delphi
zaczyna programowanie pod Win-
dows.
Serce aplikacji Raabot stanowi
krÛciutka, standardowa procedur-
Rys. 6. Sposób lokalizowania suwaka.
ka zapisujÄ…ca do portu o podanym
nym stopniu. Jest to po prostu liwośĘ zapisania do 10000 kolej- adresie wartośĘ podaną jako pa-
nieeleganckie. nych poÅ‚oÅ‚eÒ kaÅ‚dego z serwome- rametr:
Programy instalacyjny i odins- chanizmÛw. PoÅ‚oÅ‚enie kaÅ‚dego
talowywujÄ…cy sÄ… caÅ‚kowicie zgod- z suwakÛw odpowiada aktualnemu procedure Wpisz(PortValue, DataValue:
ne ze standardami obowiązujący- połołeniu odpowiedniego serwo- word);
mi w systemach Windows 95 i 98. mechanizmu. Aby zapamiÍtaĘ bie- begin
łące połołenia serwomechaniz- DataValue := (DataValue * 256) + Da-
Uwagi dla uÅ‚ytkownikÛw mÛw i przejśĘ do kolejnej pozycji taValue;
Program sÅ‚uÅ‚y do ustawiania, naciÅ›nij NastÍpny. Przyciski: Po- asm
modyfikacji, zapisywania i odtwa- przedni, Pierwszy i Ostatni umoł- Mov ax,DataValue
rzania kolejnych poÅ‚oÅ‚eÒ kaÅ‚dego liwiajÄ… zmianÍ aktualnej pozycji. Mov dx,PortValue
z oÅ›miu serwomechanizmÛw od- Przyciski Wstaw i UsuÒ umoÅ‚li- Out dx,ax
dzielnie. Przewidziana jest moł- wiają dodawanie i usuwanie po- end;
zycji. end;
Pola znajdujÄ…ce siÍ po lewej
stronie suwakÛw sterujÄ…cych ser- To co znajduje siÍ pomiÍdzy
wami pozwalają na wpisanie włas- słowami kluczowymi asm i end,
nej nazwy danego serwomecha- to właśnie wspomniana wcześniej
nizmu. W konkretnym modelu po- wstawka asemblerowa zapisujÄ…ca
zwala to nadawaĘ nazwy poszcze- do portu o adresie PortValue war-
gÛlnym serwom, np. szczypce czy tośĘ DataValue. Jednak, aby poin-
obrÛt przedramienia. UmoÅ‚liwia formowaĘ urzÄ…dzenie AVT-821
to Å‚atwÄ… identyfikacjÍ aktualnie o poÅ‚oÅ‚eniu kolejnego serwa, na-
edytowanego stopnia swobody Ra- leły do portu zapisaĘ cały ciąg
abota. Pola znajdujÄ…ce siÍ po informacji.
prawej stronie suwakÛw wskazujÄ…
aktualne połołenie serwa w prze- function DoPortu(P: Pointer): integer;
dziale od 0 do 255. var
Dla kałdej pozycji mołna in- i: integer;
dywidualnie ustawiĘ prÍdkośĘ po- begin
ruszania siÍ serwomechanizmÛw repeat
za pomocÄ… wskaünikÛw wyboru for i := 1 to 8 do
(radio button), znajdujÄ…cych siÍ po // dla każdego serwa
prawej stronie w grupie PrÍdkośĘ. begin
Przewidziano trzy rÛÅ‚ne prÍdkoÅ›ci. Wpisz(nrportu, a[i]);
Włączenie odtwarzania całej // podaj położenie
sekwencji poÅ‚oÅ‚eÒ moÅ‚na doko- Wpisz(nrportu + 2, 7 + i);
naĘ klikając na przełącznik On/ // wraz z informacją o którym
Rys. 7. Okno definiujÄ…ce
Off. Przewidziano rÛwnieÅ‚ odtwa- // serwie mowa
parametry suwaka.
Elektronika Praktyczna 9/99
62
Robot
ciwości naszego { Private declarations }
paska. Właści- public
wośĘ Max od- { Public declarations }
powiedzialnÄ… za end;
to, jakÄ… maksy-
malną wartośĘ var
zwraca pasek, Form1: TForm1;
zmieniamy
z domyślnej implementation
wartości 100 na
255 (rys. 7). {$R *.DFM}
Trzecie ok-
no, jakie mamy procedure Wpisz(PortValue, DataValue:
do dyspozycji, word);
to edytor kodu begin
ürÛdÅ‚owego. Za- DataValue := (DataValue * 256) +
wiera on w tej DataValue;
Rys. 8. Okno edytora tekstu z programem obsługi
chwili jedynie asm
suwaka.
generowany au- Mov ax,DataValue
Wpisz(nrportu + 2, 4); tomatycznie kod, ktÛry musimy Mov dx,PortValue
// koniec przekazu :-) teraz uzupełniĘ o napisane przez Out dx,ax
end; nas procedury. end;
until blad=true; Pod słowem kluczowym imple- end;
end; mentation wpiszmy naszÄ… proce-
durkÍ Wpisz(PortValue, DataVa- procedure TForm1.ScrollBar1Chan-
W macierzy a[8] są zapisane lue: word) podaną wyłej. ge(Sender: TObject);
aktualne połołenia wszystkich oś- Potem kliknijmy dwukrotnie begin
miu serw. na pasku ScrollBar1. Pojawi siÍ Wpisz($378, ScrollBar1.Position);
kod ürÛdÅ‚owy tworzonej aplikacji Wpisz($378 + 2, 8);
I to wszystko! z gotowym szkieletem procedury, Wpisz($378 + 2, 4);
Tym, ktÛrzy chcieliby siÍ prze- ktÛra bÍdzie wywoÅ‚ywana za kaÅ‚- Label1.Caption:=IntToStr(Scrol-
konaĘ, jak proste jest dziś pro- dym razem, gdy przesuniesz pa- lBar1.Position);
gramowanie pod Windows propo- sek ScrollBar1, czyli procedurÍ end;
nujÍ nastÍpujÄ…cy eksperyment: TForm1.ScrollBar1Change(Sender: end.
sprÛbujcie napisaĘ wÅ‚asny pro- TObject). PomiÍdzy sÅ‚owa kluczo-
gram do sterowania Raabotem we begin i end wpiszmy: I to wszystko! Pozostało nam
w 10 minut! Najpierw powinniś- nacisnąĘ F9, czyli skompilowaĘ
cie rozejrzeĘ siÍ za darmowÄ… Wpisz($378, ScrollBar1.Position); projekt i cieszyĘ siÍ z wÅ‚asnego
wersjÄ… Delphi. Na przykÅ‚ad Del- Wpisz($378 + 2, 8); programu, ktÛry na ruch suwacz-
phi 2 było wielokrotnie publiko- Wpisz($378 + 2, 4); ka reaguje ruchem pierwszego
wane na krąłkach dołączanych do Label1.Caption:=IntToStr serwa naszego Raabota. To na-
czasopism o tematyce "kompute- (ScrollBar1.Position); prawdÍ proste. ZachÍcam do eks-
rowej". perymentowania. Jełeli jesteście
Po otwarciu nowego projektu CałośĘ, wraz z kodem genero- zainteresowani tą tematyką na-
aplikacji (Menu File| New Appli- wanym automatycznie, powinna piszcie do nas.
cation) powinniÅ›my zobaczyĘ na wyglÄ…daĘ nastÍpujÄ…co: ByĘ moÅ‚e przygotujemy publi-
ekranie komputera sytuacjÍ jak na kacjÍ wyjaÅ›niajÄ…cÄ… sposoby zapi-
rys. 5. unit Unit1; sywania i odczytywania portÛw
Okno zatytułowane Form1, to z poziomu Delphi.
nasza aplikacja. Powinniśmy do- interface Adam Dębowski, AVT
daĘ do niego jakieś elementy. Na
przykład suwak (ScrollBar) i opis uses
tekstowy (Label). W tym celu po- Windows, Messages, SysUtils,
winniÅ›my na pasku narzÍdzi zna- Classes, Graphics, Controls, Forms,
leüĘ potrzebne nam elementy i do- Dialogs,
daĘ je do naszego projektu po- StdCtrls;
przez dwukrotne klikniÍcie. Ele-
menty te mołemy na naszym type
oknie dowolnie przesuwaĘ za po- TForm1 = class(TForm)
mocÄ… myszy. Ustawmy je mniej ScrollBar1: TScrollBar;
wiÍcej tak, jak to widaĘ na rys. Label1: TLabel;
6. procedure ScrollBar1Change(Sen-
W oknie Object Inspector mu- der: TObject);
Rys. 9. Okno działającego
simy teraz zmieniĘ jedną z właś- private
programu.
Elektronika Praktyczna 9/99
63


Wyszukiwarka

Podobne podstrony:
Projektowanie robót budowlanych w obiektach zabytkowych
Specyfikacje techniczne wykonania i odbioru robót
Wykonywanie podstawowych robót ciesielskich
06 Kania M M i inni Katastrofa kolektora sanitarnego spowodowana osuwiskiem podczas robot ziemnych
07 05 Materialy wybuchowe do robot budowlanych
2010 04 I, Robot Intelligent You Call that Intelligent
05 Wykonywanie podstawowych robót malarskichidX81
Wykonywanie podstawowych robót ślusarsko kowalskich
specyfikacje techniczne wykonania i odbioru robot
Zgłoszenie robót budowlanych
tabela robot ziemnych
template wp robot
01 Wykonywanie podstawowych robót ciesielskich
Wykonywanie robót ciesielskich(1)

więcej podobnych podstron