メッセージ機能を使用してシステムおよびアプリケーション間でコマンド、ステータスの更新、またはJSONなどのデータを送信することができます。メッセージは、パブリッシュ/サブスクライブモデルを使用するネットワークキューとして機能します。

使用するオブジェクト

SystemLinkメッセージおよび構成API は、LabVIEW、LabVIEW NXG Web Module、G Web Development Softwareのデータ通信パレットにあります。
メモ この例では、G Web Development Softwareメッセージと構成API を使用します。LabVIEWでこれと同じコードを使用してシステム間でメッセージを送信することができます。

手順

  1. メッセージのサブスクライブおよび読み取りを行うために、VI に以下のダイアグラムを作成します。

    灰色のセクションは、作成するプログラムの目的に応じて編集してください。

    1Open Configuration」が SystemLinkサーバとの接続を開始します。
    2Open」は、サーバとのメッセージセッションを作成し、メッセージキューをサブスクライブできるようにします。
    3Subscribe」は、Webアプリケーションなどのエンドポイントを特定のトピックに登録します。
    メモ トピックのサブスクライバは、サブスクライブした時点からそのトピックにパブリッシュされたすべてのメッセージを受信します。それ以前に送信されたメッセージを受信したりアクセスしたりすることはできません。
    4Read」は、キューからのメッセージを返します。
    キューにメッセージがない場合、呼び出しは、指定されたタイムアウトまたはWebサーバで定義された最大タイムアウトのうち、どちらか小さい方まで同期的にブロックします。timeout milliseconds入力が未配線の場合、「Read」ノードのデフォルトのタイムアウトは 100ミリ秒です。このサンプルプログラムでは、タイムアウトが 2000ミリ秒に設定されています。
    メモ

    NI Webサーバの最大タイムアウトは 10秒です。NI Webサーバのタイムアウト時間は編集できます。

    NI Webサーバのタイムアウト時間を調整するには、サーバの構成ファイルを編集します。詳細については、「NI Webサーバを構成する」を参照してください。

    Read」を使用する場合は、「JSONから非平坦化」を使用してWebブラウザからメッセージを解析しやすくします。

    Whileループを使用して、条件が満たされるまでメッセージの読み取りを継続します。このサンプルプログラムでは、ノードはエラーが発生するまでメッセージを読み取ります。

  2. メッセージをパブリッシュするために、VI に以下のダイアグラムを作成します。

    灰色のセクションは、作成するプログラムの目的に応じて編集してください。

    1Open Configuration」が SystemLinkサーバとの接続を開始します。
    2Open」は、サーバとのメッセージセッションを作成し、メッセージキューにメッセージをパブリッシュできるようにします。
    3Publish」は、トピックにメッセージを書き込みます。複数のメッセージがパブリッシュされている場合、サブスクライバは受信した順にメッセージを読み取ります。

    Publish」を使用する場合は、「JSONに平坦化」を使用してLabVIEWデータタイプを、メッセージがサポートする唯一のデータタイプである文字列に変換することで、LabVIEWやその他のJSON対応言語でメッセージを読み取る際にデータを扱いやすくします。

    ケースストラクチャを使用して、パブリッシュする条件を設定します。このサンプルでは、「Publish」は、パネルで「Publish」スイッチをオフの位置に動かすまでメッセージを書き込みます。

    Whileループを使用して、条件が満たされるまでタグのパブリッシュを継続します。このサンプルプログラムは、「Publish」はエラーが発生するまでメッセージを書き込みます。

    4Close」は、サーバとのメッセージセッションを停止します。
    5Close Configuration」は、作成されたオブジェクトへの開いたリファレンスを無効にすることで、構成に関連付けられている接続をクリーンアップします。

トラブルシューティング

エラーが発生した場合は、以下のトラブルシューティングを行います。
  • Read」を呼び出す前に「Subscribe」を呼び出します。プログラムがメッセージを読み取る前にトピックをサブスクライブする必要があります。
  • コードを実行する前に、正しいトピックをサブスクライブしていることを確認してください。
    メモ トピックでは大文字と小文字が区別されます。