05.11.2013 Aufrufe

Entwicklung einer Automatenbedienung mit einer leistungsfähigen ...

Entwicklung einer Automatenbedienung mit einer leistungsfähigen ...

Entwicklung einer Automatenbedienung mit einer leistungsfähigen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

übergehen kann, ist unter „TRANS_STATE“ festgesetzt. Zu jedem Übergang soll also<br />

genau eine Bedingung vorhanden sein. Falls gar keine Rückgabeparameter von der<br />

aktuellen Action vorgesehen sind oder falls ein Parameter zurückgegeben wird, der<br />

nicht unter „TRANS_SEL“ aufgelistet ist, kommt „DEFAULT_TRANS“ in Betracht,<br />

das den Namen des Zustandes enthält, in den StateMachine vom aktuellen Zustand bei<br />

default wechseln soll. Wenn der aktuelle Zustand hier seinen eigenen Namen hat, bleibt<br />

StateMachine in diesem Zustand und die Action wird nochmal ausgeführt.<br />

Da<strong>mit</strong> man diese Beschreibung des Verhaltens von StateMachine besser nachvollziehen<br />

kann, soll man diese in einem Zustandsübergangsdiagramm ansehen:<br />

STATE: frage1<br />

ACTION: AudioOut<br />

w_nein<br />

STATE: frage2<br />

ACTION: AudioOut<br />

STATE: erkennung_ja_nein<br />

ACTION: Recognize<br />

STATE: erkennung_zahl<br />

ACTION: Recognize<br />

w_ja<br />

STATE: goodbye<br />

ACTION: AudioOut<br />

Abbildung 15: Beispiel Zustandsautomat<br />

In Wirklichkeit sind diese Actionen keine ausführbare Funktionen, sondern Klassen, die<br />

von „asrlib::Action“ aus der StateMachine- Bibliothek abgeleitet wurden.<br />

Class AudioOut : public asrlib::Action<br />

{<br />

void execute();<br />

}<br />

Die States sind Objekte der Klasse „asrlib::State“, die jeweils ein entsprechendes Objekt<br />

von Action besitzen und sich anhand der Namen unterscheiden.<br />

Class State<br />

{<br />

State(std::string name) {};<br />

Action* action;<br />

}<br />

State* state1 = new State(„frage1“);<br />

state1->action = new AudioOut();<br />

State* state2 = new State(„erkennung_ja_nein“);<br />

state2->action = new Recognize();<br />

Seite 23

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!