Arexx RP6 V2 Build your own robot kit RP6 V2 User Manual

Product codes
RP6 V2
Page of 141
RP6 ROBOT SYSTEM -  4. Programmierung des RP6
Drückt man z.B. den rechten Bumper wäre die Ausgabe:
Bumper Status hat sich geaendert:
 - Linker Bumper nicht gedrueckt.
 - Rechter Bumper gedrueckt!
Drückt man beide:
Bumper Status hat sich geaendert:
 - Linker Bumper gedrueckt!
 - Rechter Bumper gedrueckt!
Da man beide Bumper nicht wirklich gleichzeitig drücken kann, könnte evtl. noch eine 
zusätzliche Nachricht ausgegeben werden wo nur einer der beiden gedrückt gewesen 
ist. 
Wohlgemerkt   wird   in   dem   obigen   Programmcode,   nirgendwo   die   Funktion 
bumpersStateChanged  
direkt aufgerufen! Das passiert automatisch aus der RP6Library 
heraus, nämlich aus der Funktion  
task_Bumpers  
bei jeder Änderung des Bumperzu-
stands. Da 
task_Bumpers
 unsere Funktion eigentlich erstmal gar nicht kennt, geht das 
nur über einen Zeiger auf die entsprechende Funktion, der seinen Wert erst bei Aus-
führung des Aufrufs in Zeile 24 erhält.
Der Event Handler kann natürlich noch andere Aktionen auslösen, als nur Text auszu-
geben – z.B. könnte man den Roboter anhalten und zurücksetzen lassen. Das sollte 
man   allerdings   nicht   direkt   im   Event   Handler   selbst   tun,   sondern   in   anderen   Pro-
grammteilen – z.B. im Event Handler einfach irgendeine Kommando-Variable setzen 
die man im Hauptprogramm abfragt und dann dementsprechend die Motoren steuert! 
Alle Event Handler sollten immer so kurz wie möglich gehalten werden! 
Sie können in den Event Handlern zwar alle Funktionen aus der RP6Library verwen-
den, seien Sie aber vorsichtig mit den „rotate“ und „move“ Funktionen die wir später 
noch besprechen werden! Benutzen Sie hier NICHT den blockierenden Modus (wenn 
man dann nämlich z.B. öfters auf die Bumper drückt, funktioniert das nicht ganz so 
wie man es eigentlich haben wollte ;-) )!
Dieses Prinzip mit den Event Handlern wird auch noch für andere Funktionen verwen-
det, z.B. für das ACS – da ist es sogar sehr ähnlich zu den Bumpern, denn auch dort 
wird bei jeder Zustandsänderung der Objektsensoren ein Event Handler aufgerufen. 
Auch für den Empfang von RC5 Codes über eine Fernbedienung werden Event Handler 
verwendet – jedesmal wenn ein neuer RC5 Code empfangen wurde, kann ein entspre-
chender Event Handler aufgerufen werden.
Man  muss  für all diese Dinge übrigens keine Event Handler verwenden – man kann 
das   alles  auch   durch   einfache   if   Bedingungen   o.ä.  abfragen   und   dementsprechend 
darauf reagieren, aber mit Event Handlern werden einige Dinge einfacher und beque-
mer. Ist aber eher Geschmackssache was man verwendet.
Auf der CD finden Sie übrigens noch einige ausführlichere Beispielprogramme zu die-
sem Thema!
- 91 -