0

私は2つの入力を持つex1.viを持っています 1).Signal(boolean) 2).Message(String)

1つの出力があります Parsed message(String)

これで、このviにはwhileループがあり、入力の変化を検出して出力を提供する必要があります。このex1.vi自体は、それをインスタンス化するmain.viのメッセージループ内にあります。このmain.viは、センサーとメッセージデータを生成し、解析されたメッセージを消費します。

例えば。main.viはを与えSignal = truemessage = "hello"ex1.viはを与えparsed message = "hi"ます。ex1.viはwhileループに入っているので、どのように出力しますか?ローカル変数を更新して出力に配線すると、ex1.viが完了していないため、main.viはまだ消費できません。グローバル変数を使用せずにこれを達成するにはどうすればよいですか?

4

2 に答える 2

1

機能的なグローバル変数を利用できます。これはおそらくより迅速な解決策です。ここを参照してください: 機能グローバル変数

メッセージキューもうまく機能する可能性があります。アプリケーションに応じて、これら2つのうちの1つを選択する可能性があります。ここを参照してください: キューに入れられたメッセージハンドラ

どちらが優れたソリューションであるかは、実際にはアプリケーションに依存するため、全体像に基づいてメリットを比較検討する必要があります。

于 2013-03-15T13:26:50.087 に答える
1

キューまたはユーザー イベントを使用して、実行中の VI 間でメッセージを共有します。

ex1.vi のセットアップ方法がわかりません。サブ VI への呼び出しごとに、1 つの入力セットと 1 つの出力のみを持つことができます。入力を監視することはできません。入力データがキューから入ってくる場合は、途中までです。呼び出し側 VI にメッセージを返すためのキューが必要です。

ご存知のように、VI の出力は戻り関数と同じであるため、戻って実行を続けることはできません。

于 2013-03-14T14:49:40.620 に答える