public interface ISensorbeobachter
ISensor.setzeBeobachter(ISensorbeobachter)
).Modifier and Type | Method and Description |
---|---|
void |
registriereEreignis(ISensor sensor,
float alterWert,
float neuerWert,
float alteRate,
float neueRate)
• Diese Methode wird vom Sensor an einem registierten
Sensorbeobachter aufgerufen, wenn sich der Sensorzustand (Messwert öder Änderunsrate) maßgeblich ändert.
|
void registriereEreignis(ISensor sensor, float alterWert, float neuerWert, float alteRate, float neueRate)
ISensor.setzeBeobachter(ISensorbeobachter)
.
Ob eine Änderung maßgeblich ist, wird über Filtertoleranzen festgelegt, die am Sensor eingestellt
werden können (siehe ISensor.setzeFiltertoleranzen(float,float)
). Der Aufruf der Methode
registriereEreignis(ISensor,float,float,float,float)
erfolgt in einem eigenen Programmfaden,
der sich nur um die Benachrichtigung der Sensorbeobachter kümmert. Die Methode sollte so programmiert sein,
dass sie sehr schnell ausgeführt wird. Hier sollten nur die nötigen Informationen gesammelt werden,
damit der Roboter später aus dem Hauptprogrammfaden heraus angemessen reagieren kann.
Lesende Zugriffe auf Motoren und Sensoren sollten an dieser Stelle unproblematisch sein.
Der Programmfaden für die Benachrichtigung der Sensorbeobachter und der Hauptprogrammfaden des
Roboters dürfen sich ganz allgemein nicht gegenseitig in die Quere kommen. Der gleichzeitige
steuernde Zugriff auf Motoren und Sensoren oder der gleichzeitig schreibende Zugriff auf Variablen
führt z.B. sehr schnell zu unerwünschten Resulten.sensor
- aufrufender SensoralterWert
- alter MesswertneuerWert
- neuer MesswertalteRate
- alte ÄnderungsrateneueRate
- neue ÄnderungsrateISensor.setzeBeobachter(ISensorbeobachter)
,
ISensor.loescheBeobachter()
,
ISensor.setzeFiltertoleranzen(float,float)
,
ISensor.holeFiltertoleranzMesswert()
,
ISensor.holeFiltertoleranzAenderungsrate()
,
ISensor.pruefeAufEreignisueberlauf()