Community Tools and Libraries

From LabVIEW Wiki
Jump to: navigation, search

This page contains a list of LabVIEW tools and libraries developed by community members and shared with the LabVIEW community for use in applications. Please add your own tools and provide a link to where developers can find more information and download/install the tool/library.

Other LabVIEW Tools Repositories and Indices

Development Tools

These are extension or additions to the LabVIEW editor to simplify and automate the application development process.

Build and Continuous Integration

Code Development

  • MGI Class Method Browser - Quickdrop-like window that filters the contents based on the class you have selected; select a wire (or tunnel, or terminal, etc.) that contains a class, and then open the Class Method Browser to view a list of VIs that you can call on that wire
  • QSI Format Toolbar - floating toolbar that can be running in the background during development - it helps the developer by providing the formatting toolbar the LabVIEW IDE should have had and that we all are used to
  • QSI Property Browser - floating window that can be running in the background during development - when an item on the Front Panel or the Block Diagram is selected, the current values of its properties are displayed in the browser and the developer can edit any writable properties
  • MGI Solution Explorer - helps developers group, access and build related projects; the build process is captured as data, and anyone can quickly and correctly perform a build; helpful in large application development where you have used Packed Project Libraries or other techniques to split up your solution
  • LabVIEW Task Manager (LVTM) - debugging tool for use during LabVIEW code development; expandable/collapsible tree diagram displays detailed information (both static and dynamic) on all VIs in memory, belonging to a selected project/target; modify single or multiple selected VIs
  • LVOOP Assistant - automate many OOP tasks from Project Explorer, including: Create a Child Class from a right-click on a Parent Class, Rename LVOOP Labels, Display and edit all VI icons in a Class, and much more

Quick Drop

Debugging

Static Code Analysis

VI Analyzer

Packaging and Distribution

  • VI Package Manager - package manager shipped and installed with LabVIEW; allows you to discover, create, and share LabVIEW add-ons; provides instant access to the add-ons on the LabVIEW Tools Network
  • G Package Manager (GPM) - makes it easy to package and distribute LabVIEW reuse code

Source Code Control

Test and Validation

  • JKI VI Tester - software test framework for LabVIEW that allows software developers to test their LabVIEW code; VI Tester is based on the industry standard xUnit software test architecture that is used in many other programming languages
  • JKI Caraya Unit Tester - open source assertion and unit testing framework for LabVIEW; convert your manual test VIs you use for debugging into unit test cases with nearly no effort
  • JUnit Results Library - library for creating JUnit-compatible XML result files for use with continuous integration packages such as Jenkins
  • UTF JUnit Report Library - library to take LabVIEW Unit Test Framework (UTF) results and record them in a JUnit-compatible XML format suitable for consumption by continuous integration packages like Jenkins

Libraries

General Purpose Code Libraries

  • OpenG Libraries - collection of hundreds of open source VIs; includes VIs for all types of application areas including array manipulation, string manipulation, application control, file handling, ZIP files, timing tools, error handling, Variant data manipulation
  • MGI Library - collection of time-saving tools developed over the years in the course of consulting; library is composed of several packages
  • VI Server Toolkit - shared code library for discovering the Classes, Properties, Methods, and Events in the VI Server
  • Hidden Gems in VI.Lib - not a collection, per se, but a package to add many hidden but really useful tools to the palettes. All of these are already distributed with LabVIEW but just not easily accessible.

Communication

  • Asynchronous Message Communication (AMC) Library - general purpose API for sending messages within and between processes using queues, and between different LabVIEW targets (systems on a network) using UDP
  • JKI HTTP REST Client - library for connecting LabVIEW applications with RESTful web services; extends LabVIEW’s native HTTP client with support for status code, multiple parallel requests, request specific HTTP headers and automatically escaping URLs
  • NI Modbus Library - Modbus communication library for LabVIEW
  • TFTP Library - implementation of a TFTP (Trivial File Transfer Protocol) client (Put File and Get File functions); can be run on any LabVIEW target which supports UDP.

Data Formatting

JSON

  • JDP JSON LabVIEW - a set of LVOOP classes to match the recursive structure of JSON, rather than variants. It allows conversion to and from JSON.
  • i3 JSON (NI) -
  • JKI JSON - library for flattening LabVIEW data to JSON strings and for unflattening JSON back to LabVIEW data; extends LabVIEW’s native JSON serialization with powerful features such as ability to unflatten JSON strings directly to LabVIEW variants

XML

  • JKI EasyXML Toolkit - simple set of VIs that make generating and parsing XML data in LabVIEW straightforward and seamless
  • NI GXML - convert an arbitrary LabVIEW data structure to and from a human-readable XML string (or file); uses a custom data schema which emphasizes data hierarchy and makes the XML easier to read

Data Analysis and Manipulation

User Interface

Controls

  • QControl Toolkit - object-oriented alternative to using an XControl; enables developer to create useful, highly customized UI components in LabVIEW of which the behavior is extensible and reusable
    • AnimationRing QControl - inherits from and extends the Ring control, specifically a Picture Ring; cycles the value of the ring which contains a frame of the animation
    • BreadcrumbNavigator QControl - inherits from and extends the String control; acts like a list of HTML-like links to help provide navigation in an application
    • Calendar QControl - inherits from and extends the Cluster control; implements multiple buttons, lists, etc. to implement a Calendar
    • DataGrid QControl - inherits and extends the Multicolumn Listbox control. It functions as a completely LabVIEW implemented Data Grid where the column data type is defined at edit time by the developer
    • RichTextBox QControl - inherits and extends the String control. It functions as a completely LabVIEW implemented Rich Text Box.  Under the hood it uses an HTML-like tagged string to define the formatting
    • SpellcheckString QControl - inherits from and extends the String control. It implements run-time spell checking inside of a String control. It highlights misspelled words by underlining and changing the color to red
  • JKI Flat UI Controls Library - beautiful, professionally-designed set of LabVIEW controls; great starting point for creating modern user interfaces because they are designed for a simple visual aesthetic, causing end users to have a more streamlined workflow
  • Flatline Controls - A set of custom controls, following the trend of a more flat UI design.  Heavily influenced by Google’s Material Design, though constrained by what can be done with available tools and options in LabVIEW.  Uses icons from Google Material Design

Panel/Pane

  • Panel Manager - toolkit with an easy to implement and maintain API to help build complex UIs; handles all of the complicated tasks involved in managing front panels
  • Splitter Sentinel - Quick Drop tool to help manage splitters and panes

UI Configuration

  • User Interface Manager -  tool designed to help programmers capture and apply complex UI configurations to any LV VI, both at edit and run time and capture that configuration, export and import it from XML file, and apply any previously captured configuration
  • Layout & Style Sheets (LSS) - tool designed to quickly stylize a user interface with a language format similar to the Cascading Style Sheets (CSS) used to stylize web pages

Design and Architectures

Application Frameworks

Actor Framework

  • Actor Framework - software library that supports the writing of applications in which multiple VIs run independently while communicating with each other; each VI represents an actor carrying out an independent task in the system
  • Monitored Actor Toolkit - staple of Actor Framework based development; provides insight into your application to visualize and debug actors
  • Improved Actor Framework Message Maker - messages in the actor framework have a lot of boiler plate code; the current message maker helps, but has room for improvement; Actor Framework Message Maker builds your actor message classes, but also increases code readability with better icons, retains message VI Documentation, and has the ability to update messages after code changes

Other Frameworks

  • Delacor Queued Message Handler (DQMH) - extending the NI Queued Message Handler Project Template, DQMH provides safe, event-based message handling and scripting tools to make development easy, encourage consistent style between different developers in the same project and improves efficiency
  • Distributed Control and Automation Framework (DCAF) - collection of open-source software components that provide an architecture to efficiently building control applications with LabVIEW
  • JKI State Machine Objects - lightweight and easy to understand development framework that extends the functionality of the JKI State Machine and allows you to create scalable and modular applications in LabVIEW using object-oriented design
  • JDP Messenger Library - extensive library for passing messages between parallel processes, generalizes communication method, allowing the sender to use the method provided by the receiver; communication methods include simple queues, user events, and notifiers, as well as TCP server and client

Design Patterns/VI Templates

  • AMC Queued Message Handler (QMH) - VI template (Merge VI) for a Queued Message Handler (QMH) design pattern which is a general purpose VI design pattern that can be used as the basis for a wide range of LabVIEW VIs
  • JKI State Machine - easy-to-use yet powerful state machine template
  • Top-Level Baseline Prime (TLB') - VI template which handles common functionality that every state machine should implement

Applications

Games

  • Game of Life - Conway's Game of Life is a fun little simulation of a group of cells. How new cells are born and how old cells die is decided by a simple set of rules, but can lead to complicated behavior by the entire colony.
  • Squarebattle - game written in LabVIEW where you create your own team of squares to compete against other peoples teams in an arena. Basically, you override specific methods of a class to create your own AI to compete against others' AIs. (Squarebattle NI Community Page)