VeriStand用カスタムデバイスでランタイムメニューやツールバーボタンを実装する

更新しました Jun 28, 2024

環境

ソフトウェア

  • VeriStand
  • VeriStand Custom Devices
  • LabVIEW

VeriStand用カスタムデバイスはLabVIEWで開発することができ、VeriStandの組み込みの機能では実現できないような複雑あるいは特殊な処理を実装するのに必要となります。
この記事では、カスタムデバイスのセクションやチャンネルを右クリックした際に表示されるランタイムメニューの作成の仕方について確認します。

もし、カスタムデバイス作成に必要なプロジェクトテンプレートがない場合には、こちらの記事 に従ってまずはプロジェクトテンプレートを使用できるまでの準備を完了してください。
 

ランタイムメニューを実装する

  1. LabVIEWで新規プロジェクトを作成します。プロジェクトテンプレートから、新規プロジェクトの一覧にあるCONSOLIDATED NI VeriStand Custom Deviceを選択してカスタムデバイスのプロジェクトを作成します。
    customdeviceprojectcreate.png
  2. カスタムデバイスの名前と保存先を決定します。カスタムデバイス名はRuntime and Toolbar Item Testとし、任意の場所にRuntime and Toolbar Item Testというフォルダを用意してここに保存されるようにします。また、Custom Device Execution ModeはAsynchronousとし、Custom Device Extra Page NamesにはMyCustomSectionMyCustomChannelの二つの項目を設定します。
    createproject.png
  3. 作成されたプロジェクトで、<カスタムデバイス名> Engine.lvlib >> SharedにあるConstants.viを選択して開きます。フロントパネル上のGUIDsタブに文字列制御器を追加し、AddDefaultChannel、AddCustomChannel、DeleteWithConfirmationというラベルを付与して各制御器の値にはGUIDを入力します。
    constantsfront.png
    GUIDの作り方がわからない場合には、以下の手順で生成してください。
    1. 新規のviを開いてブロックダイアグラムに移り、文字列の関数パレットからNI GUIDを作成関数を選びます。
      guidlocation.png
    2. ブロックダイアグラムに配置してからダブルクリックしてNI GUIDを作成の関数のフロントパネルを表示させます。
      guidfront.png
    3. 開いたフロントパネル上でこの関数を実行し、表示されるGUIDの値をConstants.viで使用する値として使用します。2019以前のバージョンのLabVIEWを使用していて関数パレットにこの関数がない場合には、ここから 入手します。
  4. <カスタムデバイス名> System Explorer.lvlib下にあるInitialization VI.viを選択します。ブロックダイアグラムを開いてケースストラクチャのTrueケースにあった処理は全て削除し、以下の図のように関数を配置します。この図のように配置することで、このカスタムデバイスをVeriStand上で使用した場合、MyCustomSectionというセクションが作成されます。グローバル変数はConstants.viを使用します。
    initializationblock.png
  5. 次にプロジェクトエクスプローラに戻り、マイコンピュータ下にあるNI VeriStand APIs >> Custom Device API.lvlib>> Templates >> RTMフォルダにあるRunTime Menu Custom Item 2 Launch.vitを右クリックしてNew from Templateでテンプレートから新規viを作成します。
    rtmitem2.png
  6. 新規viにAddDefaultChannel.viと名前を付けて保存し、プロジェクトエクスプローラ上で<カスタムデバイス名> System Explorer.lvlib >> System Explorer >> SubVIsフォルダに移動させます。
  7. 同様にあと二つテンプレートから新規作成でviを作成しそれぞれAddCustomChannel.viDeleteWithConfirmation.viと名前を付け、SubVIsフォルダに移します。 
    rtmitem4.png
  8. AddDefaultChannel.viを開いて以下の図のようにブロックダイアグラムを編集します。このviは、システムエクスプローラ上でフロントパネルを表示させることなく実行させるプログラムとして用意します。
    adddefaultblock.png
  9. AddCustomChannel.viを開いて以下の図のようにフロントパネルを編集します。
    addcustomfront.png
    次にブロックダイアグラムに移り編集します。このviは、システムエクスプローラ上で項目が選択された際にフロントパネルを表示させます。
    addcustomblock.png
    注意:
    フロントパネルを表示させるタイプのランタイムメニューを作成する場合、そのviは実行後にフロントパネルを自身で閉じるように組みます。こうしないと、プログラムを実行し終わってもフロントパネルは表示されたままになります。また、イベントストラクチャが使用されている場合にはフロントパネルのロックが起こらないような構造にすること、エラーが起きた場合にプログラムが止まるような構造にしないことに注意してください。
  10. DeleteWithConfirmation.viを開いて以下の図のようにフロントパネルを編集します。
    deletechannelfront.png
    ブロックダイアグラムを編集します。このviも、システムエクスプローラ上で項目が選択された際にフロントパネルを表示させます。(下の図で、ケースストラクチャのFalseケースでは何も処理をしていません)
    deletechannelblock.png
    deletechannelblock2.png
  11. viの編集を終えたら、カスタムデバイスのxmlファイルを編集します。プロジェクトエクスプローラ上でCustom Device <カスタムデバイス名>.xmlと表示されている項目を右クリックしてエクスプローラを選択します。エクスプローラ上でファイルが見つかったら、適当なエディタで開きます。
  12. MyCustomSectionに対するPageタグの中にあるItem2Launchの終了タグの下にRunTimeMenuタグを追加して、以下の内容を追加します。MenuItemのTypeタグがActionの場合、システムエクスプローラ上でこの項目が選択されると、指定したviはフロントパネルを表示せずにバックグラウンドで実行されます。また、GUIDタグには、MyCustomSectionに対してConstants.viで決めたGUIDの値を指定します。
    editxml2.png
    必要な項目を記述する際に、以下の文字列をコピーし貼り付けて各タグの中身を適宜編集することもできます。
            <MenuItem>
              <GUID></GUID>
              <Type></Type>
              <Name>
                <eng></eng>
                <loc></loc>
              </Name>
              <Item2Launch>
                <Type>To Common Doc Dir</Type>
                <Path></Path>
              </Item2Launch>
            </MenuItem>
     
    続けて、以下の内容を追加します。MenuItemのTypeタグがVIの場合、システムエクスプローラ上でこの項目が選択されると、指定したviはフロントパネルを表示してユーザーが操作できるようになります。
    editxml3.png
    続けて、以下の内容を追加します。MenuItemのTypeタグがSeparatorの場合、システムエクスプローラ上で右クリックして表示されるランタイムメニューに区切り線を追加することができます。
    editxml4.png
    続けて、以下の内容を追加します。これで、用意した3つ全ての機能に対してxmlファイルで動作を定義することができました。
    editxml5.png 注意:
    これらのxmlファイルの編集は正確に行ってください。タグの表記が間違っている場合にはVeriStandから正確にそのカスタムデバイスの仕様を確認することができず、正しく動作させられなくなります。
  13. 編集が終わったら保存し、プロジェクトエクスプローラでビルド仕様を右クリックしてBuild Allですべてビルドします。もしリアルタイムターゲットに対して作成した場合にはリアルタイムターゲット下のビルド仕様に対してもすべてビルドを実行します。
  14. ビルド後にVeriStandを開いてシステムエクスプローラからカスタムデバイスを選択します。システムエクスプローラを閉じてプロジェクトのツリー上では以下のように表示されていることを確認します。
    vsdef.png
  15. MyCustomSectionを右クリックすると以下の図のように3つの項目が表示されることを確認します。

    vsdef2.png
    Add Default Channelを選択すると、デフォルトチャンネルが追加されます。Add Custom Channelを選択すると別ウィンドウが表示され、指定したチャンネル名のチャンネルを追加することができます。
    vsdef4.png
    Delete Channelを選択すると別ウィンドウが表示され、指定したチャンネル名のチャンネルを削除することができます。

ツールバーボタンを実装する

  1. xmlファイルを再び編集します。今回はMyCustomSectionに対してツールバーボタンを指定するので、MyCustomSectionのPageタグの中でRunTimeMenuタグが終了した後にButtonListタグを配置しています。ReferencedIDGUIDは、呼び出す機能に対応したviのGUID(下の例ではAddDefaultChannel.vi)を指定します。
    editxml6.png
    必要な項目を記述する際に、以下の文字列をコピーし貼り付けて各タグの中身を適宜編集することもできます。
            <Button>
              <ID></ID>
              <Glyph>
                <Type>To Application Data Dir</Type>
                <Path></Path>
              </Glyph>
              <Type></Type>
              <ReferencedGUID></ReferencedGUID>
              <ButtonText>
                <eng></eng>
                <loc></loc>
              </ButtonText>
              <Caption>
                <eng></eng>
                <loc></loc>
              </Caption>
              <TipStrip>
                <eng></eng>
                <loc></loc>
              </TipStrip>
              <Documentation>
                <eng></eng>
                <loc></loc>
              </Documentation>
            </Button>
     
    同様に以下のように他の機能に対してのツールバーボタンの設定を記述します。
    editxml7.png
    editxml8.png
  2. 編集が終わったらプロジェクトを再度ビルドします。
  3. VeriStandが既に開いている状態だった場合には一度VeriStandを終了し再び開いてから、システムエクスプローラ上でカスタムデバイスを選択します。以下の図のようにMyCustomSectionを選んだときにツールバーボタンが表示されることを確認します。また、それぞれのボタンを押下した際に対応する機能が実行されることも確認します。
    buttons.png

次のステップ

ランタイムメニューやツールバーボタンはセクションやページに付与することができます。これらを付与したいセクションやチャンネルのPageタグ中に記述します。
これらのxmlの操作は自動では行われないため、必ず毎回手動で設定する必要があることに注意してください。