Sign Up

GPower VI Register by GPower - Toolkit for LabVIEW Download

The VI Register LabVIEW toolset is an intra-process data sharing technology like local or global variables.

Watch * 0 ↓17,093
ReleasedFeb 07, 2017
Publisher GPower
License BSD
LabVIEW VersionLabVIEW>=12.0
Operating System Windows, Mac, and Linux
Project links Homepage  


A VI Register combines the performance and simplicity in use of a local variable with the scope of a global variable – without any bindings beyond the block diagram. You simply drop in a VI Register wherever you'd normally drop a local variable to write data to or read data from, or rather wherever you'd wish you could just drop a local variable.

- VI Registers are independent of front panel controls, indicators, LabVIEW projects and other files. They exist in the block diagram only and require no extra programming – just drop them in. No more errors like when writing to the Value property node of a control and you get an error due to the VI front panel not being available (in an executable for instance). No more delayed or missing updates when writing to a control terminal on LabVIEW Real-Time for instance (which you should never do in the first place). No need to create and maintain functional globals, events, notifiers, or queues to pass data around.

- The scope of a VI Register is global, but this toolset offers functions to easily create register names that allow for more private scopes. Thus you can use VI Registers to share data between parallel structures inside a single VI, to share data between multiple VIs, or to share data globally between entirely independent VI hierarchies for instance.

- VI Registers support locking for synchronous access.

- VI Registers are equipped with error terminals, which gives you the option of enforcing execution order. No more need for sequence structures to arrange writes and reads in the desired order as you have to with locals and globals.

- Four flavors of VI Registers are available: A single-element current value register (with optional event-generation ability), a circular buffer, a FIFO buffer, and a LIFO buffer.

- You can programmatically create, destroy, and get status of all VI Registers in the system.

- VI Register performance is comparable to local variables and queues with a typical I/O execution time in the 100-500 ns range.

- VI Registers stay in the same thread as the caller VI, so there is no thread swapping, there is no demand for the user interface thread or root loop access, and therefore no blocking or delaying behavior as you'd experience with some of the built-in variable technologies.

Release Notes

2016.0.0.31 (Feb 07, 2017)

v2016 25/10 2016:
- Added 'Register Name' to the event data when receiving a value updated event.

v2014 12/6 2014:
- Added locking-support for synchronous access with the Lock and Unlock functions.
- Added the RandomName function.
- Deprecated the LimitScope function and replaced it with the Namespace function. This Namespace function has fixed a bug in the LimitScope function such that it now namespaces correctly when namespace VI is a clone of a reentrant VI.
- Fixed a bug when activating event generation before anything had ever been written to a Register type register.
- Updated VI icons throughout.

v2012.3 30/12 2013:
- Added 6 new conversion data types (CSG, CDB, CXT, and 1D-arrays of them).

v2012.2 22/11 2013:
- Allowed default value to be output from uninitialized unbuffered registers, when the Conversion VIs are used to convert the read value from the register.
- Changed name of 'Register name (buffered)' input on the EmptyBuffer function to 'Register name'.
- Changed name of 'Register value updated' output on the GetEvent function to 'Register value updated event'.
- Changed Conversion VIs from subroutine to inlined execution.

v2012.1 18/11 2013:
- Timeout option added to the Read and Write functions.
- Now allows install on Linux and Macintosh in addition to Windows.

v2012 11/9 2013:
- Changed to versioning that follows the base LabVIEW version.

v3.1 5/9 2013:
- Updated to support Error & Warning toolset v3.0.

v3.0 13/12 2012:
- New algorithm which results in a 5-10x performance improvement.

v2.0 27/10 2012:
- Added three optional buffering modes on top of the original register-type: Circular buffer, FIFO buffer, and LIFO buffer. These buffered VIRegisters enable lossless data transfer of multiple values at a time.
- Added event subscription to VIRegister value updates as an alternative to polling (polling is still available).
- Simplified the selection of scope by moving the scoping functionality into its own discrete VI. By default VIRegisters are now globally scoped.
- Changed from multiple data types to variant only. Added a polymorphic conversion VI instead.
- Fixed a bug where a VIRegister could become undefined between a write and a subsequent read, if the writer call chain went idle before the reader call chain was invoked. Now VIRegisters are truly global and will remain in memory until the end of the LabVIEW instance life.
- Added a function that will tell you the name and type of every available VIRegister in the LabVIEW instance.

v1.4 7/3 2012:
- Register value output on Read VIs connected to connector pane (bug in v1.3).
- Added template showing how to add new datatypes to VIRegister.
- Added 2D array of DBL to supported data types.
- Added access to user guide from detailed help in all VIs.
- Changed namespace on all functions from 'VIRegister - ' to 'VIRegister_' to avoid spaces in file names.

v1.3 3/8 2011:
- Warning propagation through 'VIRegister -' improved.

v1.2 20/7 2011:
- Significant performance improvement.

v1.1 8/7 2011:
- Removed the write- and read-functions without error terminals.
- Removed type-dependency from VIRegisters, so it's no longer possible to have two different VIRegister types with the same name.
- Added support for using the same VIRegister function with varying names and/or scope VI refnums (in a loop for instance).
- Improved read performance when no write has yet been performed.
- Added array of path to supported data types.
- Updated the polymorphic 'VIRegister -' to adapt to input.
- Added 'VIRegister -'.

v1.0 23/6 2011:
- Initial public release.

Download Package


  Post an Idea   Post a Resource

Recent Posts