Setting properties for sections and channels in a custom device for VeriStand

Updated Jun 4, 2026

Environment

Software

  • VeriStand
  • LabVIEW
  • VeriStand Custom Devices

Custom devices for VeriStand can be developed in LabVIEW and are needed to implement complex or specialized processing that cannot be achieved using VeriStand's built-in capabilities.
In this article we will see how to define properties for the sections and channels available on your custom device and then use these property values to set parameters for processing on the target.

If you don’t have a project template to create a custom device, please follow this article to complete the preparations to be able to use a project template.

  1. Open LabVIEW and create a new project. From the project templates, select CONSOLIDATED NI VeriStand Custom Device in the New Project list to create a custom device project.
    installcomplete.png
  2. Decide the name and save destination of the custom device. The custom device name is Property Test , and a folder called Property Test is prepared in a location of your choice so that the data is saved there. In addition, the Custom Device Execution Mode is set to Asynchronous , and the three Custom Device Extra Page Names are specified as MyCustomSection , MyInputChannel , and MyOutputChannel .
    createproject.png
  3. In the created project, open Constants.vi in the Shared folder under <custom device name> Shared.lvlib .
  4. Open the Properties tab of Constants.vi and add three strings as shown below. These will be used as global variables in the vi for the page and RT Driver.vi that will be created later.
    createconstants.png
  5. Return to the project and select Initialization VI.vi in <Custom Device Name> System Explorer.lvlib >> System Explorer >> Dynamically Called . Open the block diagram, delete all processing in the True case of the Case Structure, and place the functions as shown in the figure below. By placing it as shown in the figure, when this custom device is used on VeriStand, two input channels and two output channels will be created in a section called MySection. Constants.vi is used for global variables.
    initializationblock.png
  6. Next, return to the Project Explorer and open and edit MyInputChannel.vi, located in System Explorer >> Dynamically Called >> Extra Pages under <Custom Device Name> System Explorer.lvlib .
    1. Place two controls on the front panel.
      inputchannel.png
    2. Go to the block diagram and place a Get Item Property.vi in a Flat Sequence structure before the Case structure with the Event structure, as shown below, wire the two global parameters ( Constants.vi ) to the Property Name, and assign Value to the corresponding local variable of the Numeric control. This allows you to determine the value for this page once while editing the VeriStand System Explorer, and then when you open this page again, the last determined value will be displayed in the control.
      inputchannelblock.png
    3. Set the events for the control as follows, which will allow you to assign the value of the parameter a numeric control to a property called parameter a for this page.
      parametera.png
    4. Similarly, assign the value of the parameter b numeric control to the property of parameter b.
      parameterb.png
    5. Once you're done editing, save vi.
  7. Return to the Project Explorer and open MyOutputChannel.vi for editing.
    1. Place a combo box on the front panel. Add the following two items to the combo box.
      • Use Input Channel
      • Use Constant
      output.png
    2. Moving on to the block diagram, first edit the Flat Sequence structure before the loop containing the Event structure as shown, just as you did for MyInputChannel.vi .
      outputflat.png
    3. Add a value change event for the combo box to the Event structure.
      outputevent.png
  8. Return to the Project Explorer and open MyCustomSection.vi for editing.
    1. Place four numeric controls and one string array on the front panel. The numeric controls will display the properties of each of the channels contained in this section.
      customsectionfront.png
    2. Move to the block diagram and edit it as shown in the figure below. As set in Initialization VI.vi , MyInputChannel.vi and MyOutputChannel.vi are included under this section page, so the channel page is a child element of this section. At this time, you can use Get Item Children.vi to obtain a reference to the child element. Wire this reference to Get Item Property.vi and specify the property name to obtain that property. Also, by using Get Item Data.vi , you can obtain which channel each child element reference is a reference to from the output Name element. sectionflat.png
    3. Once you've finished editing, save the vi file.
  9. Return to the Project Explorer and select RT Driver.vi in <Custom Device Name> Engine.lvlib and open it for editing.
    1. Before entering the processing loop, wire a reference to each Input and Output channel to Get Item Property.vi to read and use the properties set on the channels in RT Driver.vi .
      rtdriverblock.png
    2. Edit the processing loop as follows. In this program, parameter a and parameter b specified in the Input channel are used as calculations for the respective input values of the Input channel. Also, the string specified in the Output channel is passed to the Case structure, and in the case of Use Input Channel, the value of the Input channel is used for the calculation, whereas in the case of Use Constant, a constant is given to the calculation.
      rtdriverblock2.png

      rtdriverblock3.png
  10. Once you have finished editing the program, select the build specification in the Project Explorer, right-click it, and click Build All to build all of the build specifications.
  11. Open VeriStand and select the custom device in the system explorer. Confirm that MySection is automatically created, along with two channels each for MyInput and MyOutput.
    sysdef.png
  12. Define the properties for each channel. You can see that the properties you specified are displayed in MySection. You can also get a list of the channel names that belong to the section.
    sysdef2.png
  13. Once you have configured your custom device, deploy the VeriStand project and verify that the results are in line with the properties of each channel you specified.
  • If Use Input Channel is selected in the Output channel, the result of (Input channel value x a + b) is displayed in Output using the two property values a and b specified in the Input channel.
  • If Use Constant is selected in the Output channel, the result of (5×a + b) will be displayed in the Output regardless of the value of the Input channel.
    result.png

Note:
You can set multiple properties for a channel. The properties you can set are not limited to numeric and string values as shown above. Check the polymorphic label of Set Item Property.vi or Get Item Property.vi to see the options available.

Next Steps

You can now set properties for sections and channels and reference them in the RT Driver.vi , the program that runs on the target.
In reality, you will need to design each page of the custom device section and channel according to the content you want to process on the target, and proceed with development while checking that the properties are reflected correctly.