9.3 センダ/レシーバ通信
9.3.1 ポートへの送信
明示的通信によるポートへの送信
コンポーネントは他のコンポーネントへのデータ送信にRte_Writeコールを使用します。このコールはポート ごとに定義され、各コンポーネント用のデータアイテムを受け渡すためのインターフェースとなるので、シグネチ ャは以下のようになります。
Rte_StatusType Rte_Write_<Port>_<DataItem>(DataItemType Data)
以下に、7.4.1項「明示的な送信」に示された例(下図)に対してASCETが生成するCコードを示します。
ステータス付き明示的通信によるポートへの送信
明示的アクセスは、必要に応じてステータス付きで実装することもできます。
ステータス付き明示的通信を設定する:
7.4.1項「明示的な送信」の例からRTE access演算子を選択します。
下図に示すように、ショートカットメニューから Access → Explicit with Status を選択します。
図56: ステータス付き明示的通信の設定
基本ブロックRTE Statusを選択し、ソフトウェアコンポーネントSwcのブロッ クダイアグラム上に配置します。
“Elements”ツールバーから符号なし離散変数を選択します。
“Properties for Scalar Element: udisc”ダイアログボックスが開きます。
この変数の名前をstatusとし、種別Variableを選択します。
OKをクリックし、変数statusをソフトウェアコンポーネントのブロックダイア グラム上に配置します。
RTE Statusブロックを変数statusと接続します。
変数statusのシーケンスコールを選択し、ショートカットメニューから Con-nector を設定します。
RTE Statusブロックの下にあるピンを変数statusのコネクタに接続しま す。
図57: ステータス付き明示的通信により値120をセンダポートに送信する この例では、ASCETは以下のようなCコードを生成します。
暗黙的通信によるポートへの送信
暗黙的APIの場合、データにアクセスするものとして宣言されているランナブルエンティティへの参照がAPI 名に含まれています。ランナブルエンティティを作成する際は、正しいAPIを呼び出すようにするために注意が 必要です。Rte_IWrite APIは以下のようにデータを読み取ります。
Rte_StatusType Rte_IWrite_<runnable>_<port>_<data>( DataItemType Data) キャッシュはランナブルエンティティの起動前に更新されます。Rte_IWriteはキャッシュされたコピーにデー タを書き込むので、データの書き込み処理が何回行われても、書き込み後のデータはランナブルエンティティ の終了後でないと見ることができません。
7.4.2項「暗黙的な送信」に示された例(下図)に対して、ASCETは以下のようなCコードを生成します。