Files posted by drjdpowell
Package for working with JSON. Uses high-speed text parsing, rather than building an intermediate representation as with prior LabVIEW JSON libraries (this is much faster). Allows easy working with "subitems" in JSON format, or one can convert to/from LabVIEW types. Uses the new "malleable VIs" of LabVIEW 2017 to convert to any LabVIEW type directly.
JSON text makes use of a form a JSON Path notation, allowing easy and rapid access to the subitems of interest.
Requires LabVIEW 2017 and install by VIPM 2017 or later.
Original conversation about JSONtext.
Now on the LabVIEW Tools Network.
Copyright 2017 JDP Science Limited
An extensive library for passing messages between parallel processes. Generalizes the communication method, allowing the message sender to use the method provided by the receiver. Supported communication methods include wrappings of simple queues, user events, and notifiers, as well a more complex channels such as a TCP server and client. In addition, one can configure simple forwarding addresses (“Observers"), which can send messages to multiple destinations, optionally with modifications such as adding a prefix to the message label, relabelling, or substituting a different message.
Communication patterns supported include request-reply (asynchronous or synchronous), where the reply is sent to a "reply address" attached to the request, and register-notify, where one process sends a registration message to another in order to subscribe to a series of updates. Also supports scatter-gather, the gathering of replies from multiple senders into an array of messages.
An option framework for dynamically-launched VI "actors" is also provided, including example templates, which can be accessed via the Tools menu (from an open Project, select Tools>>Messenger Library>>Create Actor from Template..). An "Actor Manager" debug tool is also installed under the Tools menu. Please note that this package has nothing directly to do with the NI Actor Framework (other than both packages are influenced by the Actor Model).
***Introductory Videos are on a YouTube channel.***
***A great summary of many Messenger Library sources, provided by Bob W Edwards***
Original conversation on this work is here.
Now hosted on the LabVIEW Tools Network (but note that the latest version will often be on LAVA)
***NOTE: latest versions require VIPM 2017 or later to install.***
A package for creating custom probes with "history"; showing the last N values rather than just the latest. Values are displayed in a cyclic table, which wraps around automatically when it reaches the bottom of the display window. Developed to support messaging systems, where messages can be handled too quickly for the eye to see with a last-value probe. Included are some standard probes, for strings, variants, objects, and some numerics. Also included is a "Text Variant" probe, for messaging using a cluster of such, and a "JKI State Queue" probe for use in designs using the JKI "state machine" template (see image). But the expected use case is for very easily creating custom probes for whatever messages one is using (just modify one of the included probes).
Also includes "Quick Timer" probes to rapidly time execution of portions of code to accuracies of as low as 10 microseconds.
Now hosted on the LabVIEW Tools Network.
Requires VIPM 2017 or later for install.
Introductory video now available on YouTube: Intro to SQLite in LabVIEW
SQLite3 is a very light-weight, server-less, database-in-a-file library. See www.SQLite.org. This package is a wrapper of the SQLite3 C library and follows it closely.
There are basically two use modes: (1) calling "Execute SQL" on a Connection to run SQL scripts (and optionally return 2D arrays of strings from an SQL statement that returns results); and (2) "Preparing" a single SQL statement and executing it step-by-step explicitly. The advantage of the later is the ability to "Bind" parameters to the statement, and get the column data back in the desired datatype. The "Bind" and "Get Column" VIs are set as properties of the "SQL Statement" object, for convenience in working with large numbers of them.
See the original conversation on this here.
Now hosted on the NI LabVIEW Tools Network.
***Requires VIPM 2017 or later for install.***
JSON is a data interchange format (sometimes compared to XML, but simpler). There are multiple projects to create a JSON package for LabVIEW. This is yet another one motivated by this hijacked conversation originally about a different project to convert JSON into LabVIEW Variants.
This project uses a set of LVOOP classes to match the recursive structure of JSON, rather than variants. It allows conversation to and from JSON. All functionality is available through two polymorphic VIs: Set and Get. In addition to Get and Set VIs for common data types, one can also convert directly to or from complex clusters via variant-JSON tools.
Copyright 2012-2016 James David Powell, Shaun Rumbell, Ton Plomp and James McNally.
[Note: if you are using LabVIEW 2017, please also see the JSONtext library as a an alternative.]
A logger and log viewer using an SQLite database.
The logger is a background process that logs at about once per second. A simple API allows log entries to be added from anywhere in a program.
A Log Viewer is available under the Tools menu (Tools>>Cyth Log Viewer); this can alternately be built into a stand-alone executable.
Requires SQLite Library (Tools Network). Log Viewer also requires [CR]Shortcut Menu from Cluster and the JKI StateMachine Toolkit (Tools Network).
â€” Version 1.4.0 is the last available for LabVIEW 2011. New development in LabVIEW 2013.
â€” newest version requires VIPM 2014 or later for install.
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.
— Buttons based on the system booleans (with hover effects). Icons can be added as decals (such as from materialdesignicons.com)
— Matched sets of controls for numeric/string/enum/etc., based on Silver controls, but swapping out all ‘chrome’ for simple boxes and lines.
— flattened versions of switches/sliders/arrays/graphs etc.
Now on the LabVIEW Tools Network
A pair of subVIs for connecting a cluster of enums and booleans to a set of options in a menu (either the right-click shortcut menu on control or the VI menu bar). Adding new menu options requires only dropping a new boolean or enum in the cluster.
See original conversation here.
I use this heavily in User Interfaces, with display options being accessed via the shortcut menus of graphs, tables, and listboxes, rather than being independent controls on the Front Panel.
Relies on the OpenG LabVIEW Data Library.