ステートと遷移のラベルのプログラムによる指定
Stateflow® API を使用するときは、LabelString
プロパティに文字ベクトルを割り当てることにより、ステートと遷移のラベルを指定します。
ステートまたは遷移のラベルの一部を抽出するには、次の表に示す Stateflow.State
オブジェクトと Stateflow.Transition
オブジェクトのプロパティを使用します。
API オブジェクト | プロパティ | 説明 |
---|---|---|
Stateflow.State | DuringAction | このステートの during アクション内のテキスト。このプロパティは、Moore チャートではサポートされていません。 |
EntryAction | このステートの entry アクション内のテキスト。このプロパティは、Moore チャートではサポートされていません。 | |
ExitAction | このステートの exit アクション内のテキスト。このプロパティは、Moore チャートではサポートされていません。 | |
MooreAction | このステートのアクション内のテキスト。このプロパティは Moore チャートでのみサポートされています。詳細については、Moore チャートの設計ガイドラインを参照してください。 | |
Name | このステートの名前。 | |
OnAction | このステートの {'trigger1','action1',...,'triggerN','actionN'} このプロパティは、Moore チャートではサポートされていません。 | |
Stateflow.Transition | Condition | この遷移に対する条件内のテキスト。 |
ConditionAction | この遷移に対する条件アクション内のテキスト。 | |
TransitionAction | この遷移に対する遷移アクション内のテキスト。 | |
Trigger | この遷移に対するトリガー内のテキスト。 |
Name
を除き、これらのプロパティはすべて読み取り専用です。ステートと遷移のラベルにおける構文の詳細については、ステートのアクションの定義および遷移のアクションの定義を参照してください。
遷移へのラベルの入力
tr
が、ある遷移に対応する Stateflow.Transition
オブジェクトであるとします。この遷移のトリガー、条件、条件アクションを指定するラベルは、次のように入力して割り当てることができます。
tr.LabelString = "trigger[guard]{action();}";
遷移ラベルによって指定されたトリガー、条件、条件アクションを抽出するには、次のように入力します。
trigger = tr.Trigger
trigger = 'trigger'
cond = tr.Condition
cond = 'guard'
action = tr.ConditionAction
action = 'action();'
ステートへの複数行ラベルの入力
ステートおよび遷移に対し複数行のラベルを入力するには、2 つの等価な方法があります。たとえば、sA
が、あるステートに対応する Stateflow.State
オブジェクトであるとします。entry
アクションと during
アクションを含む複数行のラベルを入力するには、以下が可能です。
MATLAB® 関数
sprintf
を呼び出し、エスケープ シーケンス\n
を使用して改行文字を挿入する。str = sprintf("A\nen: action1();\ndu: action2();\nen,du: action3();"); sA.LabelString = str;
関数
newline
を使用して改行文字を作成する、連結されたテキスト表現を入力する。str = "A" + newline + ... "en: action1();" + newline + ... "du: action2();" + newline + ... "en,du: action3();" sA.LabelString = str;
ステート ラベルによって指定されたステート名、entry
アクション、during
アクションを抽出するには、次のように入力します。
name = sA.Name
name = 'A'
entry = sA.EntryAction
entry = ' action1(); action3();'
during = sA.DuringAction
during = ' action2(); action3();'