-
-
Erfahrener Benutzer
Roboter Genie
Hallo,
wenn Du "moveAtSpeed" verwendest musst Du auch IMMER task_motionControl ( bzw. besser task_RP6System ) in kurzen Intervallen aufrufen (da passiert die eigentliche Geschwindigkeitsregelung - in der moveAtSpeed Funktion wird nur gesetzt das man gerne mit Geschwindigkeit x fahren würde... ).
Da Du hier eine Schleife (do... while) bei der rewind geschichte verwendest - kann das nicht klappen da task_motionControl nicht mehr aufgerufen wird (das Programm ist ja dann nicht mehr in der Hauptschleife).
Es würde aber dennoch nicht immer so funktionieren wie Du es willst wenn Du jetzt einfach nur task_motionControl mit in die Schleife packst.
Es wäre besser in dem IR Event Handler einfach nur ein flag zu setzen (rewind=true o.ä. also ein globale Variable) und das dann in der Hauptschleife abzufragen und den rewind Code da auszuführen. In einem Event Handler sollte so wenig wie möglich an blockierenden Dingen verwendet werden - vor allem wenn Du dann nämlich task_RP6System mit da reinschreiben würdest und dann während der abarbeitung von rewind weitere IR Codes empfangen werden...
Event Handler wie "receiveRC5Data" sollten nur einmal schnell durchlaufen und ein paar Flags oder andere Werte setzen - man sollte keine Schleifen die länger als 100ms brauchen da einbauen. Alles was länger als 100ms dauert: in andere Programmteile auslagern!
Hoffe das hilft Dir weiter.
MfG,
SlyD
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen