@sixclear/ni-daqmx-ai
NI DAQmx AI v1.7.0

New to Version 1.7

This version adds:

  • the ability to configure the initial graph palette tool for the mouse when hovering over the chart. This is with the addition of a display.palette.initialTool configuration option. Valid options are: Selection Cursor, Panning Tool, Zoom to Rectangle, Zoom X, Zoom Y, Zoom To Fit, Zoom Out At Point, Zoom In At Point.

Configuration Snippet: (notice the palette object below with the initialTool configuration)

...
            "graph": {
                "label": "Data Graph",
                "xAxis": {
                    "kind": "Absolute Time",
                    "format": "%<%H:%M:%S>T",
                    "duration": 10, // samples to display
                    "autoscale": "off"
                },
                "yAxis": {
                    "label": "Voltage",
                    "format": "%d",
                    "flipped": false,
                    "min": 0.0,
                    "max": 10.0,
                    "increment": 1.0,
                    "autoscale": "off"
                },
                "palette": {
                    "initialTool": "Zoom X"
                }
            },
...
  • zoom fit options (Zoom Fit, Zoom Fit X, Zoom Fit Y) to top of the context / right-click menu on the chart

Overview

The NI DAQmx AI plugin acquires data from one or more channels spanning one or more devices with options to display, log, and publish data. Currently supported channel types include Voltage and Thermocouple channels. All of the core data acquisition features are exposed including channel definition, sampling, buffer control, triggering, logging, and more.

This version also includes the ability to decimate the display data to enhance performance, especially for high speed acquisitions. Data can be published with an averaging or last value strategy, and several key points of sampling information are provided as variables to build up the desired publish data object. Publishing can of course be disabled if, for example, logging the data to disk (ex. TDMS) is all that is required.

Custom DAQmx scales are also supported. DAQmx scales transform the raw, acquired data according to the scale definition. For example, analog input voltage acquisition may have a scale applied to transform the acquired voltages into some other physical units, such as temperature. The scaled values are the values displayed and logged. All current DAQmx scale types are supported: Linear, Range Map, Polynomial, and Table.

Furthermore, this version allows explicitly defining TDMS file formats with a acquisition.logging.fileNameFormat option, and allows adding custom properties to those TDMS files at the file level. See the configuration documentation and the “New to Version 1.2” sections below, and/or the example editor for further details.

The published data is configurable and may contain any the following:

{
    "publishTime": 12348761.12345667,
    "dataTimestamp": 12348760.12345667,
    "data": [0.5, 0.75],
    "totalSamplesSoFar": 1000,
    "acquisitionComplete": false
}

The publishTime and dataTimestamp here are defined as the number of seconds elapsed since 12:00 a.m., Friday, January 1, 1904, Universal Time [01-01-1904 00:00:00]. The data array contains the latest sample from each of the channels acquired (so the above example must be for an acquisition which has 2 channels configured). The acquisitionComplete boolean indicates whether the acquisition is complete, which will only ever be true in the case of finite acquisitions.

User Interface

The NI DAQmx AI interface is simple by design with a single graph showing current data according the configured acquisition. Parameters for the x-axis and y-axis are configurable and axes can be modified in real-time as well.


Configuration Example


Configuration Details

ROOT object
This top level object holds all configuration information for this plugin.
Required: true
Default: (not specified; see any element defaults within)
options object
Configuration options specific to this plugin.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition object
An object defining the acquisition.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.task object
The acquisition task properties. The following variables are available for use here: @VAR{instanceName}, @VAR{timestamp}, @VAR{readSamplesPerChannel}
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.task.name string
The name of the task. Variables available here: @VAR{instanceName}, @VAR{readSamplesPerChannel}, @VAR{timestamp}.
Required: true
Default: "NI DAQmx AI Voltage Task"
options.acquisition.scales object
An object containing DAQmx custom scale definitions where keys are the names of the custom scales to create and the values are objects corresponding to scale definitions. Channel definitions can use these scale names as the customScaleName when the units are set to 'From Custom Scale'. DAQmx supports 4 types of scales: Linear, Range Map, Polynomial, and Table. Keep in mind that when specifying channels using these custom scales, the minimum and maximum values specified for those channels should be in scaled units, not the original, raw units such as Volts.
Required: true
Default:
{}
options.acquisition.scales.{DAQmx Custom Scale} object
An object defining a DAQmx Custom Scale. Available types: Linear, Range Map, Polynomial, and Table
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.scales.{DAQmx Custom Scale}::{Linear} object
An object defining a Linear DAQmx Custom Scale. Creates a custom scale that uses the equation y = mx + b, where x is a pre-scaled value, y is a scaled value, m is the slope, and b is the yIntercept.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.scales.{DAQmx Custom Scale}::{Linear}.type enum (string)
The type of the scale.
Required: true
Default: "Linear"
Enum Items: "Linear"
options.acquisition.scales.{DAQmx Custom Scale}::{Linear}.slope number
The slope to apply.
Required: true
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Linear}.yIntercept number
The y-intercept to apply.
Required: true
Default: 0
options.acquisition.scales.{DAQmx Custom Scale}::{Linear}.prescaledUnits enum (string)
The prescaled units.
Required: true
Default: "Volts"
Enum Items: "Volts" | "Amps" | "Deg F" | "Deg C" | "Deg R" | "Kelvins" | "Strain" | "Ohms" | "Hz" | "Seconds" | "Meters" | "Inches" | "Degrees" | "Radians" | "Ticks" | "g" | "m/s^2" | "m/s" | "in/s" | "Pascals" | "Newtons" | "Pounds" | "kgf" | "psi" | "bar" | "Nm" | "oz-in" | "lb-in" | "lb-ft" | "Volts/Volt" | "mVolts/Volt" | "pCoulombs" | "Coulombs" | "From TEDS"
options.acquisition.scales.{DAQmx Custom Scale}::{Linear}.scaledUnits string
The scaled units.
Required: true
Default: "My Custom Units"
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map} object
An object defining a Range Map DAQmx Custom Scale. Creates a custom scale that scales values proportionally from a range of pre-scaled values to a range of scaled values.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map}.type enum (string)
The type of the scale.
Required: true
Default: "Range Map"
Enum Items: "Range Map"
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map}.prescaledMinimum number
The prescaled minimum for the range.
Required: true
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map}.prescaledMaximum number
The prescaled maximum for the range.
Required: true
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map}.scaledMinimum number
The scaled minimum for the range.
Required: true
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map}.scaledMaximum number
The scaled maximum for the range.
Required: true
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map}.prescaledUnits enum (string)
The prescaled units.
Required: true
Default: "Volts"
Enum Items: "Volts" | "Amps" | "Deg F" | "Deg C" | "Deg R" | "Kelvins" | "Strain" | "Ohms" | "Hz" | "Seconds" | "Meters" | "Inches" | "Degrees" | "Radians" | "Ticks" | "g" | "m/s^2" | "m/s" | "in/s" | "Pascals" | "Newtons" | "Pounds" | "kgf" | "psi" | "bar" | "Nm" | "oz-in" | "lb-in" | "lb-ft" | "Volts/Volt" | "mVolts/Volt" | "pCoulombs" | "Coulombs" | "From TEDS"
options.acquisition.scales.{DAQmx Custom Scale}::{Range Map}.scaledUnits string
The scaled units.
Required: true
Default: "My Custom Units"
options.acquisition.scales.{DAQmx Custom Scale}::{Polynomial} object
An object defining a Polynomial DAQmx Custom Scale. Creates a custom scale that uses an nth order polynomial equation. NI-DAQmx requires both a polynomial to convert pre-scaled values to scaled values (forward) and a polynomial to convert scaled values to pre-scaled values (reverse). If you only know the forward set of coefficients, you may set the reverse coefficients here implicitly using an object containing: order, maximumValidValueOfX, minumumValidValueOfX, numberOfPointsToCompute. The implicit definition allows DAQmx to compute the reverse coefficients for you by finding a polynomial fit using the least squares method to compute a polynomial that computes x (prescaled units) when given a value for y (scaled units).
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.scales.{DAQmx Custom Scale}::{Polynomial}.type enum (string)
The type of the scale.
Required: true
Default: "Polynomial"
Enum Items: "Polynomial"
options.acquisition.scales.{DAQmx Custom Scale}::{Polynomial}.forwardCoefficients array
The coeffients of the polynomial which transforms from prescaled to scaled units. The index of the value in this array corresponds to the order of the term to which it applies. For example, if the elemetn at index 3 in this array is the value 5, then the 3rd order term of the polynomial is 5x^3.
Required: true
Default:
[]
options.acquisition.scales.{DAQmx Custom Scale}::{Polynomial}.forwardCoefficients[n] number
A coefficient for the forward scale transformation.
Required: false
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Polynomial}.reverseCoefficients arrayobject
A description of the reverse or inverse polynomical which transforms from scaled to prescaled units. This can be either an array of reverse coefficients or an object with parameters which indicate how to generate the reverse coefficients
Required: true
Default:
[]
options.acquisition.scales.{DAQmx Custom Scale}::{Polynomial}.prescaledUnits enum (string)
The prescaled units.
Required: true
Default: "Volts"
Enum Items: "Volts" | "Amps" | "Deg F" | "Deg C" | "Deg R" | "Kelvins" | "Strain" | "Ohms" | "Hz" | "Seconds" | "Meters" | "Inches" | "Degrees" | "Radians" | "Ticks" | "g" | "m/s^2" | "m/s" | "in/s" | "Pascals" | "Newtons" | "Pounds" | "kgf" | "psi" | "bar" | "Nm" | "oz-in" | "lb-in" | "lb-ft" | "Volts/Volt" | "mVolts/Volt" | "pCoulombs" | "Coulombs" | "From TEDS"
options.acquisition.scales.{DAQmx Custom Scale}::{Polynomial}.scaledUnits string
The scaled units.
Required: true
Default: "My Custom Units"
options.acquisition.scales.{DAQmx Custom Scale}::{Table} object
An object defining a Table DAQmx Custom Scale. Creates a custom scale that maps specified prescaled values to scaled values. Linear interpolation is applied to values that fall between the values in the table. Scaled samples that are outside the maximum and minimum scaled values specified for the table are clipped.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.scales.{DAQmx Custom Scale}::{Table}.type enum (string)
The type of the scale.
Required: true
Default: "Table"
Enum Items: "Table"
options.acquisition.scales.{DAQmx Custom Scale}::{Table}.prescaledValues array
An array of prescaled values which will be mapped to scaled values in the scaledValues array.
Required: true
Default:
[]
options.acquisition.scales.{DAQmx Custom Scale}::{Table}.prescaledValues[n] number
A prescaled value.
Required: false
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Table}.scaledValues array
An array of scaled values which are mapped to from the corresponding values in the prescaledValues array.
Required: true
Default:
[]
options.acquisition.scales.{DAQmx Custom Scale}::{Table}.scaledValues[n] number
A scaled value.
Required: false
Default: 1
options.acquisition.scales.{DAQmx Custom Scale}::{Table}.prescaledUnits enum (string)
The prescaled units.
Required: true
Default: "Volts"
Enum Items: "Volts" | "Amps" | "Deg F" | "Deg C" | "Deg R" | "Kelvins" | "Strain" | "Ohms" | "Hz" | "Seconds" | "Meters" | "Inches" | "Degrees" | "Radians" | "Ticks" | "g" | "m/s^2" | "m/s" | "in/s" | "Pascals" | "Newtons" | "Pounds" | "kgf" | "psi" | "bar" | "Nm" | "oz-in" | "lb-in" | "lb-ft" | "Volts/Volt" | "mVolts/Volt" | "pCoulombs" | "Coulombs" | "From TEDS"
options.acquisition.scales.{DAQmx Custom Scale}::{Table}.scaledUnits string
The scaled units.
Required: true
Default: "My Custom Units"
options.acquisition.channels array
An array of virtual channel definitions where each virtual channel can encapsulate multiple physical channels.
Required: true
Default:
[
    {
        "kind": "Voltage",
        "name": "Voltage Channels",
        "terminalConfiguration": "Differential",
        "physicalChannels": "Dev1/ai0:2",
        "minimum": 0,
        "maximum": 10,
        "units": "Volts",
        "customScaleName": ""
    },
    {
        "kind": "Thermocouple",
        "name": "Thermocouple Channels",
        "physicalChannels": "Dev1/ai3",
        "type": "K",
        "units": "Celcius",
        "minimum": 0,
        "maximum": 100,
        "cjc": {
            "source": "Internal"
        }
    }
]
options.acquisition.channels[n] object
An object defining a virtual channel (which can encapsulte multiple physical channels).
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.channels[n]::{Voltage} object
An object defining a virtual channel (which can encapsulte multiple physical channels).
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.channels[n]::{Voltage}.kind enum (string)
The kind of the virtual channel (collection of physical channels).
Required: true
Default: "Voltage"
Enum Items: "Voltage"
options.acquisition.channels[n]::{Voltage}.name string
The name of the virtual channel (collection of physical channels). If you have multiple channels in the virtual channel, this name can be a comma-delimited list of individual channel names which will apply to the defined physical channels respectively. For example, if we specify physicalChannels as "Dev1/ai0:2", then we could specify the name here as: "MyChan0,MyChan1,MyChan2". Note that if you specify only one physical channel then you should not use a comma in the name as it would then only use the text before the comma.
Required: true
Default: "Voltage Channels"
options.acquisition.channels[n]::{Voltage}.terminalConfiguration enum (string)
Specifies the physical connection type. RSE stands for referenced single ended. NRSE stands for non-referenced single ended. Differential uses two physical channels and meaures the difference between a two-wire signal which will tend to reject noise. Pseudodifferential combines characteristics of differential and RSE terminal configurations. Like differential, it requires a two-wire signal and will therefore tend to reject noise (though generally the Common Mode Rejection Ratio, or CMRR, will not be as robust as for differential). However, because the negative terminal is technically electrically connected to ground through a small impedance (generally with resistive, capacitive, and even inductive aspects), grounds loops and other problems can occur if the negative terminal differs too much from chassis ground. Nonetheless this approach can be useful for floating signal sources where the negative terminal does not vary significantly from chassis ground.
Required: true
Default: "RSE"
Enum Items: "RSE" | "NRSE" | "Differential" | "Pseudodifferential"
options.acquisition.channels[n]::{Voltage}.physicalChannels string
This physical channels to acquire.
Required: true
Default: "Dev1/ai0:2"
options.acquisition.channels[n]::{Voltage}.minimum number
The minimum value expected among the physical channels. Make this value as close as possible to the signal minimum without going above the signal minimum. Note that this value helps determine the variable amplification which helps boost smaller signals closer to the full range of the underlying analog to digital converter, thereby providing better measurement resolution for those smaller signals. Also note that if a custom scale is applied then this value should be the minimum value expected after the scale has been applied. For example, if you have a raw signal (ex. voltage) with a minimum value of -5V and you specify a Linear scale with slope = 2 and yIntercept = 0, then use the -10 here (which will be in whatever custom units were defined in the custom scale).
Required: true
Default: 0
options.acquisition.channels[n]::{Voltage}.maximum number
The maximum value expected among the physical channels. Make this value as close as possible to the signal maximum without going below the signal maximum. Note that this value helps determine the variable amplification which helps boost smaller signals closer to the full range of the underlying analog to digital converter, thereby providing better measurement resolution for those smaller signals. Also note that if a custom scale is applied then this value should be the maximum value expected after the scale has been applied. For example, if you have a raw signal (ex. voltage) with a maximum value of 5V and you specify a Linear scale with slope = 2 and yIntercept = 0, then use the 10 here (which will be in whatever custom units were defined in the custom scale).
Required: true
Default: 10
options.acquisition.channels[n]::{Voltage}.units enum (string)
The unit of the measurement. Volts is the default however if using a scale configured in NI MAX (not recommended), then use 'From Custom Scale' and also specify the customScaleName property in this section.
Required: true
Default: "Volts"
Enum Items: "Volts" | "From Custom Scale"
options.acquisition.channels[n]::{Voltage}.customScaleName string
The custom scale name as configured and saved in NI MAX. To use this feature you must set 'units' to 'From Custom Scale'. Note that the minimum and maximum settings here need to be adjusted to match the range of the scaled units.
Required: true
Default: ""
options.acquisition.channels[n]::{Thermocouple} object
An object defining a channel.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.channels[n]::{Thermocouple}.kind enum (string)
The kind of the virtual channel (collection of physical channels). If you have multiple channels in the virtual channel, this name can be a comma-delimited list of individual channel names which will apply to the defined physical channels respectively. For example, if we specify physicalChannels as "Dev1/ai0:2", then we could specify the name here as: "MyChan0,MyChan1,MyChan2". Note that if you specify only one physical channel then you should not use a comma in the name as it would then only use the text before the comma.
Required: true
Default: "Thermocouple"
Enum Items: "Thermocouple"
options.acquisition.channels[n]::{Thermocouple}.name string
The name of the channel.
Required: true
Default: "Thermocouple Channels"
options.acquisition.channels[n]::{Thermocouple}.physicalChannels string
The physical channels to use on the device (more than one can be specified. For example: Dev1/ai0:2 would specify three channels (channels 0 through 2) and Dev1/ai0,Dev1/ai2 would specify two channels (channels 0 and 2).
Required: true
Default: "Dev1/ai0"
options.acquisition.channels[n]::{Thermocouple}.type enum (string)
The type of thermocouple used with this channel.
Required: true
Default: "K"
Enum Items: "J" | "K" | "N" | "R" | "S" | "T" | "B" | "E"
options.acquisition.channels[n]::{Thermocouple}.units enum (string)
The unit of temperature to use for displaying and recording data.
Required: true
Default: "Celcius"
Enum Items: "Celcius" | "Fahrenheit" | "Kelvin" | "Rankine" | "From Custom Scale"
options.acquisition.channels[n]::{Thermocouple}.minimum number
The minimum value expected among the physical channels. Make this value as close as possible to the signal minimum without going above the signal minimum. Note that this value helps determine the variable amplification which helps boost smaller signals closer to the full range of the underlying analog to digital converter, thereby providing better measurement resolution for those smaller signals.
Required: true
Default: 0
options.acquisition.channels[n]::{Thermocouple}.maximum number
The maximum value expected among the physical channels. Make this value as close as possible to the signal maximum without going below the signal maximum. Note that this value helps determine the variable amplification which helps boost smaller signals closer to the full range of the underlying analog to digital converter, thereby providing better measurement resolution for those smaller signals.
Required: true
Default: 100
options.acquisition.channels[n]::{Thermocouple}.cjc object
An object defining the cold junction compensation (cjc) for this channel. There are 3 source types are allowed:
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Internal} object
An object defining an 'Internal' cold junction compensation (cjc) for this channel.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Internal}.source enum (string)
The source of the cold junction compensation for this channel.
Required: true
Default: "Internal"
Enum Items: "Internal"
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Channel} object
An object defining a 'Channel' cold junction compensation (cjc) for this channel.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Channel}.source enum (string)
The source of the cold junction compensation for this channel.
Required: true
Default: "Channel"
Enum Items: "Channel"
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Channel}.channel string
If you set the cjc 'source' to 'Channel', this specifies the channel that acquires the temperature of the thermocouple cold-junction.
Required: true
Default: ""
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Constant} object
An object defining a 'Constant' cold junction compensation (cjc) for this channel.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Constant}.source enum (string)
The source of the cold junction compensation for this channel.
Required: true
Default: "Constant"
Enum Items: "Constant"
options.acquisition.channels[n]::{Thermocouple}.cjc::{CJC Source: Constant}.value number
If you set the cjc 'source' to 'Constant', this specifies the temperature of the cold junction in the units specified by 'units'.
Required: true
Default: 0
options.acquisition.sampling object
The acquisition task sampling properties.
Required: true
Default:
{
    "mode": "Continuous Samples",
    "rate": 1000,
    "readSamplesPerChannel": 500,
    "displayDecimationFactor": 1,
    "source": "OnboardClock",
    "activeEdge": "Rising",
    "timeout": 5
}
options.acquisition.sampling::{Finite Samples} object
An object defining sampling for a finite acquisition.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.sampling::{Finite Samples}.mode enum (string)
Finite samples means only finitely many samples are acquired.
Required: true
Default: "Finite Samples"
Enum Items: "Finite Samples"
options.acquisition.sampling::{Finite Samples}.rate number
The sampling rate to use specified in samples/second (Hz).
Required: true
Default: 1000
options.acquisition.sampling::{Finite Samples}.totalSamplesPerChannel integer
For a finite acquisition: the total number of samples to collect on each underlying loop iteration (and this value also informs the buffer size unless explicitly specified otherwise).
Required: true
Default: 500
options.acquisition.sampling::{Finite Samples}.readSamplesPerChannel integer
The number of samples to grab on each underlying loop iteration (and this value also informs the buffer size unless explicitly specified otherwise).
Required: true
Default: 500
options.acquisition.sampling::{Finite Samples}.displayDecimationFactor number
The decimation factor, or divide down factor, to apply before enqueueing data for display and publishing. This is useful for high-speed acquisitions where displaying all data is either untenable from a performance standpoint or there is more data than can be displayed given the width (in pixels) of the graph. Note that this value ONLY affects the data used to handle display and publishing; this value does NOT affect the stored/logged data (all data is logged/stored).
Required: true
Default: 1
options.acquisition.sampling::{Finite Samples}.source string
The source of the sample clock. You may specify an externally available source pin (ex. /Dev1/ai/StartTrigger or Dev1/PFI0), or simply use the value OnboardClock (no spaces) to use the onboard clock.
Required: true
Default: "OnboardClock"
options.acquisition.sampling::{Finite Samples}.activeEdge enum (string)
Determines which edge of the clock signal is used to acquire samples.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.sampling::{Finite Samples}.timeout number
How long to wait in seconds before generating a timeout error. Make sure this number is greater than your sampling rate * number of samples per channel being read.
Required: true
Default: 5
options.acquisition.sampling::{Continuous Samples} object
An object defining sampling for a continuous acquisition.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.sampling::{Continuous Samples}.mode enum (string)
Continuous samples means samples are acquired continuously until the acquisition is complete.
Required: true
Default: "Continuous Samples"
Enum Items: "Continuous Samples"
options.acquisition.sampling::{Continuous Samples}.rate number
The sampling rate to use specified in samples/second (Hz).
Required: true
Default: 1000
options.acquisition.sampling::{Continuous Samples}.readSamplesPerChannel integer
The number of samples to grab on each underlying loop iteration (and this value also informs the buffer size unless explicitly specified otherwise).
Required: true
Default: 500
options.acquisition.sampling::{Continuous Samples}.displayDecimationFactor number
The decimation factor, or divide down factor, to apply before enqueueing data for display and publishing. This is useful for high-speed acquisitions where displaying all data is either untenable from a performance standpoint or there is more data than can be displayed given the width (in pixels) of the graph. Note that this value ONLY affects the data used to handle display and publishing; this value does NOT affect the stored/logged data (all data is logged/stored).
Required: true
Default: 1
options.acquisition.sampling::{Continuous Samples}.source string
The source of the sample clock. You may specify an externally available source pin (ex. /Dev1/ai/StartTrigger or Dev1/PFI0), or simply use the value OnboardClock (no spaces) to use the onboard clock.
Required: true
Default: "OnboardClock"
options.acquisition.sampling::{Continuous Samples}.activeEdge enum (string)
Determines which edge of the clock signal is used to acquire samples.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.sampling::{Continuous Samples}.timeout number
How long to wait in seconds before generating a timeout error. Make sure this number is greater than your sampling rate * number of samples per channel being read.
Required: true
Default: 5
options.acquisition.buffer object
The acquisition task buffer properties.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.buffer.force boolean
Whether to force the specified buffer size here. If false, the 'readSamplesPerChannel' setting in the 'sampling' section implicitly determines the buffer size. While generally not a concern, if necessary see NI documentation for further details as the precise nature of this detail may change over time.
Required: true
Default: false
options.acquisition.buffer.size integer
If 'force' is true, this specifies the size of the buffer to use. Most application simply allow DAQmx to choose an appropriate buffer size based on the specified 'readSamplesPerChannel' setting in the 'sampling' section.
Required: true
Default: 1000
options.acquisition.triggering object
The acquisition task triggering properties. Note that there are two classes of triggering: Start and Reference. The primary difference between these two modes of triggering is Reference triggers will keep a specified number of pretrigger points. All of the trigger `types` apply to both classes with one exception: the `Time` type only applies to the Start trigger class. The other trigger types are: Digital Edge, Digital Pattern, Analog Edge, Analog Multi Edge, Analog Window
Required: true
Default:
{
    "enable": false,
    "class": "Start",
    "type": "Digital Edge",
    "parameters": {
        "source": "/Dev1/PFI0",
        "edge": "Rising"
    }
}
options.acquisition.triggering::{Start, Digital Edge} object
An object defining a Digital Edge start trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Digital Edge}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Start, Digital Edge}.class enum (string)
The class of triggering to use.
Required: true
Default: "Start"
Enum Items: "Start"
options.acquisition.triggering::{Start, Digital Edge}.type enum (string)
The type of triggering to use.
Required: true
Default: "Digital Edge"
Enum Items: "Digital Edge"
options.acquisition.triggering::{Start, Digital Edge}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Digital Edge}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Start, Digital Edge}.parameters.edge enum (string)
The digital edge on which to trigger the acquisition.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.triggering::{Start, Digital Pattern} object
An object defining a Digital Pattern start trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Digital Pattern}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Start, Digital Pattern}.class enum (string)
The class of triggering to use.
Required: true
Default: "Start"
Enum Items: "Start"
options.acquisition.triggering::{Start, Digital Pattern}.type enum (string)
The type of triggering to use.
Required: true
Default: "Digital Pattern"
Enum Items: "Digital Pattern"
options.acquisition.triggering::{Start, Digital Pattern}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Digital Pattern}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Start, Digital Pattern}.parameters.triggerWhen enum (string)
Determines whether a match vs a non-match to the specified pattern will trigger the acquisition.
Required: true
Default: "Pattern Matches"
Enum Items: "Pattern Matches" | "Pattern Does Not Match"
options.acquisition.triggering::{Start, Digital Pattern}.parameters.pattern string
The pattern on which to trigger the signal, to be used in combination with the triggerWhen option. For digital pattern triggering, you configure the device to detect a specific digital pattern on specific physical channels. After detecting this condition, the device performs the action associated with the trigger, such as starting the task or marking which sample was acquired when the trigger occurred. The digital pattern is specified using the following characters: X: ignore the physical channel. 0: Match on a logic low level on the physical channel. 1: Match on a logic high level on the physical channel. R: Match on rising edge on the physical channel. E: Match on either rising or falling edge on the physical channel. F: Match on falling edge on the physical channel. For instance, if you specify a pattern of 'X11100' and a source of 'dev1/line0:4,dev1/line6' the pattern match occurs when physical channels 'dev1/line1' 'dev1/line2' and 'dev1/line3' are logic high and when physical channels 'dev1/line4' and 'dev1/line6' are logic low. 'dev1/line0' is ignored. As another example (source specified as a port) if you specify a pattern of '11000000' and a source of 'dev1/port0' the pattern match occurs when physical channels 'dev1/line0' and 'dev1/line1' are logic high and the other six lines are logic low.
Required: true
Default: ""
options.acquisition.triggering::{Start, Analog Edge} object
An object defining a Analog Edge start trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Analog Edge}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Start, Analog Edge}.class enum (string)
The class of triggering to use.
Required: true
Default: "Start"
Enum Items: "Start"
options.acquisition.triggering::{Start, Analog Edge}.type enum (string)
The type of triggering to use.
Required: true
Default: "Analog Edge"
Enum Items: "Analog Edge"
options.acquisition.triggering::{Start, Analog Edge}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Analog Edge}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Start, Analog Edge}.parameters.slope enum (string)
The analog edge on which to trigger the acquisition.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.triggering::{Start, Analog Edge}.parameters.level number
The level or threshold at which to trigger the acquisition.
Required: true
Default: 0
options.acquisition.triggering::{Start, Analog Multi Edge} object
Configures the task to start acquiring or generating samples when any of the configured analog signals cross the respective levels you specified. Multi-edge triggering treats the configured triggers as if a logical OR is applied.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Analog Multi Edge}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Start, Analog Multi Edge}.class enum (string)
The class of triggering to use.
Required: true
Default: "Start"
Enum Items: "Start"
options.acquisition.triggering::{Start, Analog Multi Edge}.type enum (string)
The type of triggering to use.
Required: true
Default: "Analog Multi Edge"
Enum Items: "Analog Multi Edge"
options.acquisition.triggering::{Start, Analog Multi Edge}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Analog Multi Edge}.parameters.edges array
An array of analog edge trigger definitions, any of which will cause the acquisition to begin.
Required: true
Default:
[]
options.acquisition.triggering::{Start, Analog Multi Edge}.parameters.edges[n] object
Configures the task to start acquiring or generating samples when any of the configured analog signals cross the respective levels you specified. Multi-edge triggering treats the configured triggers as if a logical OR is applied.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Analog Multi Edge}.parameters.edges[n].source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Start, Analog Multi Edge}.parameters.edges[n].slope enum (string)
The analog edge on which to trigger the acquisition.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.triggering::{Start, Analog Multi Edge}.parameters.edges[n].level number
The level or threshold at which to trigger the acquisition when the signal is trending according to the specified slope. Specify this level in the units of the measurement.
Required: true
Default: 0
options.acquisition.triggering::{Start, Analog Window} object
An object defining a Analog Window start trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Analog Window}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Start, Analog Window}.class enum (string)
The class of triggering to use.
Required: true
Default: "Start"
Enum Items: "Start"
options.acquisition.triggering::{Start, Analog Window}.type enum (string)
The type of triggering to use.
Required: true
Default: "Analog Window"
Enum Items: "Analog Window"
options.acquisition.triggering::{Start, Analog Window}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Analog Window}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Start, Analog Window}.parameters.windowTop number
The top level or threshold of the trigger window.
Required: true
Default: 5
options.acquisition.triggering::{Start, Analog Window}.parameters.windowBottom number
The bottom level or threshold of the trigger window.
Required: true
Default: 0
options.acquisition.triggering::{Start, Analog Window}.parameters.triggerWhen enum (string)
Determines whether the trigger occurs when entering the window or when leaving the window.
Required: true
Default: "Entering Window"
Enum Items: "Entering Window" | "Leaving Window"
options.acquisition.triggering::{Start, Time} object
An object defining a Time start trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Time}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Start, Time}.class enum (string)
The class of triggering to use.
Required: true
Default: "Start"
Enum Items: "Start"
options.acquisition.triggering::{Start, Time}.type enum (string)
The type of triggering to use.
Required: true
Default: "Time"
Enum Items: "Time"
options.acquisition.triggering::{Start, Time}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Start, Time}.parameters.delay number
This is only valid with the Start trigger class. The duration of time in seconds to wait before triggering the acquisition.
Required: true
Default: "5"
options.acquisition.triggering::{Reference, Digital Edge} object
An object defining a Digital Edge reference trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Digital Edge}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Reference, Digital Edge}.class enum (string)
The class of triggering to use.
Required: true
Default: "Reference"
Enum Items: "Reference"
options.acquisition.triggering::{Reference, Digital Edge}.type enum (string)
The type of triggering to use.
Required: true
Default: "Digital Edge"
Enum Items: "Digital Edge"
options.acquisition.triggering::{Reference, Digital Edge}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Digital Edge}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Reference, Digital Edge}.parameters.edge enum (string)
The digital edge on which to trigger the acquisition.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.triggering::{Reference, Digital Edge}.parameters.pretriggerPoints integer
This only applies to Reference trigger types which will acquire data even before triggering in order to keep and return the specified number of pretrigger points.
Required: true
Default: 0
options.acquisition.triggering::{Reference, Digital Pattern} object
An object defining a Digital Pattern reference trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Digital Pattern}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Reference, Digital Pattern}.class enum (string)
The class of triggering to use.
Required: true
Default: "Reference"
Enum Items: "Reference"
options.acquisition.triggering::{Reference, Digital Pattern}.type enum (string)
The type of triggering to use.
Required: true
Default: "Digital Pattern"
Enum Items: "Digital Pattern"
options.acquisition.triggering::{Reference, Digital Pattern}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Digital Pattern}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Reference, Digital Pattern}.parameters.triggerWhen enum (string)
Determines whether a match vs a non-match to the specified pattern will trigger the acquisition.
Required: true
Default: "Pattern Matches"
Enum Items: "Pattern Matches" | "Pattern Does Not Match"
options.acquisition.triggering::{Reference, Digital Pattern}.parameters.pattern string
The pattern on which to trigger the signal, to be used in combination with the triggerWhen option. For digital pattern triggering, you configure the device to detect a specific digital pattern on specific physical channels. After detecting this condition, the device performs the action associated with the trigger, such as starting the task or marking which sample was acquired when the trigger occurred. The digital pattern is specified using the following characters: X: ignore the physical channel. 0: Match on a logic low level on the physical channel. 1: Match on a logic high level on the physical channel. R: Match on rising edge on the physical channel. E: Match on either rising or falling edge on the physical channel. F: Match on falling edge on the physical channel. For instance, if you specify a pattern of 'X11100' and a source of 'dev1/line0:4,dev1/line6' the pattern match occurs when physical channels 'dev1/line1' 'dev1/line2' and 'dev1/line3' are logic high and when physical channels 'dev1/line4' and 'dev1/line6' are logic low. 'dev1/line0' is ignored. As another example (source specified as a port) if you specify a pattern of '11000000' and a source of 'dev1/port0' the pattern match occurs when physical channels 'dev1/line0' and 'dev1/line1' are logic high and the other six lines are logic low.
Required: true
Default: ""
options.acquisition.triggering::{Reference, Digital Pattern}.parameters.pretriggerPoints integer
This only applies to Reference trigger types which will acquire data even before triggering in order to keep and return the specified number of pretrigger points.
Required: true
Default: 0
options.acquisition.triggering::{Reference, Analog Edge} object
An object defining a Analog Edge reference trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Analog Edge}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Reference, Analog Edge}.class enum (string)
The class of triggering to use.
Required: true
Default: "Reference"
Enum Items: "Reference"
options.acquisition.triggering::{Reference, Analog Edge}.type enum (string)
The type of triggering to use.
Required: true
Default: "Analog Edge"
Enum Items: "Analog Edge"
options.acquisition.triggering::{Reference, Analog Edge}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Analog Edge}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Reference, Analog Edge}.parameters.slope enum (string)
The analog edge on which to trigger the acquisition.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.triggering::{Reference, Analog Edge}.parameters.level number
The level or threshold at which to trigger the acquisition.
Required: true
Default: 0
options.acquisition.triggering::{Reference, Analog Edge}.parameters.pretriggerPoints integer
This only applies to Reference trigger types which will acquire data even before triggering in order to keep and return the specified number of pretrigger points.
Required: true
Default: 0
options.acquisition.triggering::{Reference, Analog Multi Edge} object
An object defining a Analog Multi Edge reference trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Analog Multi Edge}.enable boolean
Whether to enable triggering.
Required: true
Default: false
options.acquisition.triggering::{Reference, Analog Multi Edge}.class enum (string)
The class of triggering to use.
Required: true
Default: "Reference"
Enum Items: "Reference"
options.acquisition.triggering::{Reference, Analog Multi Edge}.type enum (string)
The type of triggering to use.
Required: true
Default: "Analog Multi Edge"
Enum Items: "Analog Multi Edge"
options.acquisition.triggering::{Reference, Analog Multi Edge}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Analog Multi Edge}.parameters.edges array
An array of analog edge trigger definitions, any of which will cause the acquisition to begin.
Required: false
Default:
[]
options.acquisition.triggering::{Reference, Analog Multi Edge}.parameters.edges[n] object
Configures the task to start acquiring or generating samples when any of the configured analog signals cross the respective levels you specified. Multi-edge triggering treats the configured triggers as if a logical OR is applied.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Analog Multi Edge}.parameters.edges[n].source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Reference, Analog Multi Edge}.parameters.edges[n].slope enum (string)
The analog edge on which to trigger the acquisition.
Required: true
Default: "Rising"
Enum Items: "Rising" | "Falling"
options.acquisition.triggering::{Reference, Analog Multi Edge}.parameters.edges[n].level number
The level or threshold at which to trigger the acquisition when the signal is trending according to the specified slope. Specify this level in the units of the measurement.
Required: true
Default: 0
options.acquisition.triggering::{Reference, Analog Multi Edge}.parameters.pretriggerPoints integer
This only applies to Reference trigger types which will acquire data even before triggering in order to keep and return the specified number of pretrigger points.
Required: true
Default: 0
options.acquisition.triggering::{Reference, Analog Window} object
An object defining a Analog Window reference trigger.
Required: false
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Analog Window}.enable boolean
undefined
Required: true
Default: false
options.acquisition.triggering::{Reference, Analog Window}.class enum (string)
The class of triggering to use.
Required: true
Default: "Reference"
Enum Items: "Reference"
options.acquisition.triggering::{Reference, Analog Window}.type enum (string)
The type of triggering to use.
Required: true
Default: "Analog Window"
Enum Items: "Analog Window"
options.acquisition.triggering::{Reference, Analog Window}.parameters object
An object containing configuration parameters for triggering.
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.triggering::{Reference, Analog Window}.parameters.source string
The input / pin to which the trigger signal is connected.
Required: true
Default: "/Dev1/PFI0"
options.acquisition.triggering::{Reference, Analog Window}.parameters.windowTop number
The top level or threshold of the trigger window.
Required: true
Default: 5
options.acquisition.triggering::{Reference, Analog Window}.parameters.windowBottom number
The bottom level or threshold of the trigger window.
Required: true
Default: 0
options.acquisition.triggering::{Reference, Analog Window}.parameters.triggerWhen enum (string)
Determines whether the trigger occurs when entering the window or when leaving the window.
Required: true
Default: "Entering Window"
Enum Items: "Entering Window" | "Leaving Window"
options.acquisition.triggering::{Reference, Analog Window}.parameters.pretriggerPoints integer
This only applies to Reference trigger types which will acquire data even before triggering in order to keep and return the specified number of pretrigger points.
Required: true
Default: 0
options.acquisition.logging object
The acquisition task logging properties..
Required: true
Default: (not specified; see any element defaults within)
options.acquisition.logging.fileOperation enum (string)
The open/create/replace operation to perform on files generated.
Required: true
Default: "Create or Replace"
Enum Items: "Open" | "Open or Create" | "Create or Replace" | "Create"
options.acquisition.logging.folderPath string
The file folder in which to generate the data files. Symbolic paths are allowed here (see framework documentation for details). The following variables are available for use here: @VAR{instanceName}, @VAR{timestamp}, @VAR{fileCount} (starts at 0 for the first file, counts up thereafter), and @VAR{acquisition} which contains the entire acquisition object meaning you can index out individual properties such as @VAR{acquisition.sampling.readSamplesPerChannel}.
Required: true
Default: "[Desktop]\\JADE_LOGS\\@VAR{instanceName}"
options.acquisition.logging.fileNameFormat string
The file name format to use when generating new files (if `enforceMaxSamplesPerFile` is true and the `maxSamplesPerFile` is exceeded). Symbolic paths are allowed here (see framework documentation for details). The following variables are available for use here: @VAR{instanceName}, @VAR{timestamp}, and @VAR{acquisition} which contains the entire acquisition object meaning you can index out individual properties such as @VAR{acquisition.sampling.readSamplesPerChannel}.
Required: true
Default: "AnalogInputData-@VAR{fileCount}.tdms"
options.acquisition.logging.mode enum (string)
"Off" means do not log, "Log" means log to file only (no data will be displayed, and DMA transfers will performantly transfer data to disk without bringing data into application memory), and "Log and Read" means both log to file and read data into application memory for display.
Required: true
Default: "Log and Read"
Enum Items: "Off" | "Log" | "Log and Read"
options.acquisition.logging.enforceMaxSamplesPerFile boolean
Whether to generate new files after the specified maxSamplesPerFile, or to simply store all samples in the initial file.
Required: true
Default: false
options.acquisition.logging.maxSamplesPerFile integer
This only applies if enforceMaxSamplesPerFile is true. The maximum number of samples PER CHANNEL to store in a given file. New files will be generated if this threshold is reached. New files are created with the naming convention of _####.tdms, where #### starts at 0001 and increments automatically with each new file. For example, if the file specified is C:\MyData\data.tdms, the next file name used is C:\MyData\data_0001.tdms.
Required: true
Default: 1000000
options.acquisition.logging.tdmsFileCustomProperties object
An object where keys are property names and values are file-level properties to add to the TDMS file. Note that TDMS files have an inherent hierarchical structure as: file >> groups >> channels, where properties are allowed in theory by TDMS files at each of the three levels. This configuration option writes properties to the file level and all properties are serialized / stringified before writing. To avoid extra escape slashing in types such as objects, define the types of your properties here on an individual basis. For example, including the entire `acquisition.sampling` object in a single file-level property you could enter the following as a property value here `Object:( @VAR{acquisition.sampling} )`.
Required: true
Default:
{}
options.acquisition.logging.tdmsFileCustomProperties.{^.+$} stringbooleannumberintegerarrayobject
A property to include at the file-level of the TDMS files written over the life of the corresponding plugin instance.
Required: false
Default: ""
options.display object
An object defining properties of the plugin display.
Required: true
Default: (not specified; see any element defaults within)
options.display.enable boolean
Whether to enable the display / graph.
Required: true
Default: true
options.display.graph object
An object defining properties of the graph on the interface.
Required: true
Default: (not specified; see any element defaults within)
options.display.graph.label string
The label to put at the top of the graph.
Required: true
Default: "Data Graph"
options.display.graph.xAxis object
An object defining the graph's x-axis properties. There are three `kinds` allowed here: Samples (use %d for `format`), Relative Time (use %f or another numeric for `format` here), and Absolute Time (use absolute time syntax for `format` here such as %T - see docs for additional details).
Required: true
Default:
{
    "kind": "Samples",
    "format": "%d",
    "numSamples": 100,
    "autoscale": "off"
}
options.display.graph.xAxis::{Samples} object
An object defining the graph's x-axis properties.
Required: false
Default: (not specified; see any element defaults within)
options.display.graph.xAxis::{Samples}.kind enum (string)
The x-axis kind `Samples`.
Required: true
Default: "Samples"
Enum Items: "Samples"
options.display.graph.xAxis::{Samples}.format string
A string defining the x-axis format. Usually this is simply `%d`.
Required: true
Default: "%d"
options.display.graph.xAxis::{Samples}.numSamples number
The number of samples to display on x-axis intially.
Required: true
Default: 100
options.display.graph.xAxis::{Samples}.autoscale enum (string)
Whether to autoscale the x-axis. The value "on" autoscales on every update, "off" never autoscales, and "once" autoscales just once when data is first rendered.
Required: true
Default: "on"
Enum Items: "on" | "off" | "once"
options.display.graph.xAxis::{Relative Time} object
An object defining the graph's x-axis properties.
Required: false
Default: (not specified; see any element defaults within)
options.display.graph.xAxis::{Relative Time}.kind enum (string)
The x-axis kind `Relative Time` which displays time since the acquisition started, in seconds.
Required: true
Default: "Relative Time"
Enum Items: "Relative Time"
options.display.graph.xAxis::{Relative Time}.format string
A string defining the x-axis format. Usually this is something like `%.2f`.
Required: true
Default: "%.2f"
options.display.graph.xAxis::{Relative Time}.duration number
The duration, in seconds, to display initially on the x-axis.
Required: true
Default: 100
options.display.graph.xAxis::{Relative Time}.autoscale enum (string)
Whether to autoscale the x-axis. The value "on" autoscales on every update, "off" never autoscales, and "once" autoscales just once when data is first rendered.
Required: true
Default: "on"
Enum Items: "on" | "off" | "once"
options.display.graph.xAxis::{Absolute Time} object
An object defining the graph's x-axis properties.
Required: false
Default: (not specified; see any element defaults within)
options.display.graph.xAxis::{Absolute Time}.kind enum (string)
The x-axis kind `Absolute Time` which displays the actual date/time in the specified `format`.
Required: true
Default: "Relative Time"
Enum Items: "Absolute Time"
options.display.graph.xAxis::{Absolute Time}.format string
A string defining the x-axis format for absolute time. Usually this is something like %T or another absolute time format variant - see docs for additional details.
Required: true
Default: "%<%H:%M:%S>T"
options.display.graph.xAxis::{Absolute Time}.duration number
The duration, in seconds, to display initially on the x-axis.
Required: true
Default: 100
options.display.graph.xAxis::{Absolute Time}.autoscale enum (string)
Whether to autoscale the x-axis. The value "on" autoscales on every update, "off" never autoscales, and "once" autoscales just once when data is first rendered.
Required: true
Default: "on"
Enum Items: "on" | "off" | "once"
options.display.graph.yAxis object
An object defining the graph's y-axis properties.
Required: true
Default: (not specified; see any element defaults within)
options.display.graph.yAxis.label string
The y-axis label to display.
Required: true
Default: "Amplitude"
options.display.graph.yAxis.format string
A string defining the y-axis format.
Required: true
Default: "%f"
options.display.graph.yAxis.flipped boolean
Whether to flip the y-axis (ex. if true, instead of rendering 0 on the bottom and 10 on the top of the y-axis, it would render 0 on the top and 10 on the bottom.
Required: true
Default: false
options.display.graph.yAxis.min number
The y-axis min value. This will be overridden if autoscale is not off.
Required: true
Default: 0
options.display.graph.yAxis.max number
The y-axis max value. This will be overridden if autoscale is not off.
Required: true
Default: 10
options.display.graph.yAxis.increment number
The y-axis increment used to display y-axis tick marks.
Required: true
Default: 1
options.display.graph.yAxis.autoscale enum (string)
Whether to autoscale the y-axis. The value "on" autoscales on every update, "off" never autoscales, and "once" autoscales just once when data is first rendered.
Required: true
Default: "on"
Enum Items: "on" | "off" | "once"
options.display.graph.palette object
An object defining properties for the graph palette.
Required: true
Default: (not specified; see any element defaults within)
options.display.graph.palette.initialTool enum (string)
Sets the initial active tool for the graph palette. Valid options: `Selection Cursor`, `Panning Tool`, `Zoom to Rectangle`, `Zoom X`, `Zoom Y`, `Zoom To Fit`, `Zoom Out At Point`, and `Zoom In At Point`. The graph palette is manually accessible just above the graph, where the active tool can also be changed at any time.
Required: true
Default: "Zoom X"
Enum Items: "Selection Cursor" | "Panning Tool" | "Zoom to Rectangle" | "Zoom X" | "Zoom Y" | "Zoom To Fit" | "Zoom Out At Point" | "Zoom In At Point"
options.display.horizontalLines array
An array of horizontal line definitions.
Required: true
Default:
[]
options.display.horizontalLines[n] object
A horizontal line definition
Required: false
Default: (not specified; see any element defaults within)
options.display.horizontalLines[n].name string
The name of the horizontal line. This shows up in the plot legend on the front panel waveform chart.
Required: true
Default: "My Horizontal Line"
options.display.horizontalLines[n].yValue number
The y-value of the horizontal line.
Required: true
Default: 10
options.display.plotProperties object
An object where keys are plot names (form the acquisition.channels or horizontalLines definitions) and the values are objects with plot display properties.
Required: true
Default:
{}
options.display.plotProperties.{^.+$} object
An object defining the plot properties.
Required: false
Default: (not specified; see any element defaults within)
options.display.plotProperties.{^.+$}.visible boolean
Whether the plot is visible in the chart.
Required: true
Default: true
options.display.plotProperties.{^.+$}.antiAlias boolean
Whether the apply antiAliasing when rendering the plot.
Required: true
Default: true
options.display.plotProperties.{^.+$}.pointStyle enum (string)
The point style to use for the plot.
Required: true
Default: "circleFull"
Enum Items: "none" | "circleEmpty" | "circleFull" | "circleFullDot" | "circleEmptyDot" | "squareEmpty" | "squareFull" | "squareFullDot" | "squareEmptyDot" | "squareFullSmall" | "dot" | "cross" | "crossSmall" | "X" | "x" | "diamondFullDot" | "squareEmptySmall"
options.display.plotProperties.{^.+$}.lineStyle enum (string)
The line style to use for the plot.
Required: true
Default: "solid"
Enum Items: "solid" | "dash" | "dot" | "dashdot" | "dashdotdot"
options.display.plotProperties.{^.+$}.lineWidth enum (string)
The line width to use for the plot.
Required: true
Default: "1"
Enum Items: "0" | "1" | "2" | "3" | "4" | "5"
options.display.plotProperties.{^.+$}.fillTo enum (string)
The color fill approach to use for the plot. For example, "below" would apply the line color to the area below the plot in the chart.
Required: true
Default: "none"
Enum Items: "none" | "zero" | "below" | "above"
options.display.plotProperties.{^.+$}.interpolation enum (string)
The interpolation strategy to apply between points.
Required: true
Default: "none"
Enum Items: "none" | "stepwiseVertical" | "linear" | "stepwiseHorizontal" | "stepwiseHorizontalCentered" | "stepwiseVerticalCentered"
options.display.plotProperties.{^.+$}.lineColor objectstring
The color to use for the plot line specified as an RGB value. Specify this as either a string `auto` or an object with `r`, `g`, and `b` values.
Required: true
Default: "auto"
options.display.plotProperties.{^.+$}.pointColor objectstring
The color to use for plot points specified as an RGB value.
Required: true
Default: "auto"
options.publishing object
An object defining if and how the plugin publishes data.
Required: true
Default: (not specified; see any element defaults within)
options.publishing.enable boolean
Whether to enable publishing.
Required: true
Default: false
options.publishing.strategy enum (string)
Whether published data should be the Average or simply the Last Value (for each channel specified, of course, and applies to the number of samples read per loop iteration).
Required: true
Default: "Last Value"
Enum Items: "Average" | "Last Value"
options.publishing.messageFormat object
An object defining the published message format, if publishing is enabled. Several variables are available for use in constructing the published message in a VAR variable container: instanceName (the name of the plugin instance), readSamplesPerChannel (the number of samples read each loop iteration), specifiedSamplingRate (the specified sampling rate), actualSamplingRate (the actual achieved sampling rate in hardware), actualSamplingPeriod (the actual achieved sample period), publishTime (the timestamp that the current message was published), thisFirstSampleTime (the timestamp of the first sample in 'data'), data (the data for each channel - either the average of the number of samples or the last value depending on 'strategy'), totalSamplesSoFar (the total samples acquired thus far for the current acquisition), and acquisitionStartTime (the time the acquisition started). Note that timestamps are the number of seconds elapsed since 12:00 a.m., Friday, January 1, 1904, Universal Time [01-01-1904 00:00:00]
Required: true
Default: (not specified; see any element defaults within)
options.publishing.messageFormat.instanceName string
The plugin instance's name.
Required: false
Default: "@VAR{instanceName}"
options.publishing.messageFormat.readSamplesPerChannel string
The number of samples read each loop iteration.
Required: false
Default: "Float:(@VAR{readSamplesPerChannel})"
options.publishing.messageFormat.specifiedSamplingRate string
The specified sampling rate.
Required: false
Default: "Float:(@VAR{specifiedSamplingRate})"
options.publishing.messageFormat.actualSamplingRate string
The actual achieved sampling rate in hardware.
Required: false
Default: "Float:(@VAR{actualSamplingRate})"
options.publishing.messageFormat.actualSamplingPeriod string
The actual achieved sample period.
Required: false
Default: "Float:(@VAR{actualSamplingPeriod})"
options.publishing.messageFormat.publishTime string
The timestamp that the current message was published.
Required: false
Default: "Float:(@VAR{publishTime})"
options.publishing.messageFormat.thisFirstSampleTime string
The timestamp of the first sample in 'data'.
Required: false
Default: "Float:(@VAR{thisFirstSampleTime})"
options.publishing.messageFormat.totalSamplesSoFar string
The total samples acquired thus far for the current acquisition.
Required: false
Default: "Integer:(@VAR{totalSamplesSoFar})"
options.publishing.messageFormat.acquisitionStartTime string
The time the acquisition started.
Required: false
Default: "Float:(@VAR{acquisitionStartTime})"
options.publishing.messageFormat.data string
The array of sample data for each channel (either average or last values from the last acquisition read).
Required: false
Default: "Array:(@VAR{data})"
options.logger object
Defines the standard logger for this plugin. Note that a LOG variable space is provided here, as well as the VAR variable space. Available variables are: @LOG{LOGGERNAME}, @LOG{TIMESTAMP}, @LOG{LOGMESSAGE}, @LOG{ERRORMESSAGE}, @VAR{instanceName}, @VAR{timestamp}, and @VAR{acquisition} which contains the entire acquisition object meaning you can index out individual properties such as @VAR{acquisition.sampling.readSamplesPerChannel} are available variables. Note: @LOG{LOGGERNAME} is equal to the @VAR{instanceName} here.
Required: true
Default: (not specified; see any element defaults within)
options.logger.Enable boolean
Whether to enable the logger.
Required: true
Default: true
options.logger.LogFolder string
The folder in which to write log files.
Required: true
Default: "\\JADE_LOGS\\@VAR{instanceName}"
options.logger.FileNameFormat string
The filename to use when creating log files. Note: if the filesize limit is reached new files will be created with enumerated suffixes such as: MyLogFile-1.txt, MyLogFile-2.txt, etc.
Required: true
Default: "@VAR{instanceName}-@LOG{TIMESTAMP}.log"
options.logger.ErrorsOnly boolean
Whether to log only errors.
Required: true
Default: true
options.logger.DiskThrashPeriod integer
The period in milliseconds with which to flush the file buffer to ensure it's committed to the hard drive. Note: This is a performance consideration to prevent writing to disk too frequently.
Required: true
Default: 1000
options.logger.FileSizeLimit integer
The file size at which to create new files.
Required: true
Default: 1000000
options.logger.StartLogFormat string
The initial string to put into the log file when opened for the first time.
Required: true
Default: "**** START LOGGER - @LOG{LOGGERNAME} (@LOG{TIMESTAMP}) ****"
options.logger.EndLogFormat string
The final string to put in the log file when closed.
Required: true
Default: "\n\n**** END LOGGER - @LOG{LOGGERNAME} (@LOG{TIMESTAMP}) ****"
options.logger.LogEntryFormat string
The format to use when writing log entries when errors are not present.
Required: true
Default: "\n\n@LOG{LOGMESSAGE}"
options.logger.ErrorLogEntryFormat string
The message format used to construct error log entries.
Required: true
Default: "\n\n@LOG{ERRORMESSAGE}"
options.logger.TimestampFormat string
The format used by the @LOG{TIMESTAMP} variable.
Required: true
Default: "%Y-%m-%d %H-%M-%S%3u"
panel object
Required: true
Default: (not specified; see any element defaults within)
panel.open boolean
Whether to open the front panel immediately when run.
Required: true
Default: true
panel.state enum (string)
The state in which the window will open.
Required: true
Default: "Standard"
Enum Items: "Standard" | "Hidden" | "Closed" | "Minimized" | "Maximized"
panel.transparency integer
The transparency of the window. 0 = opaque, 100 = invisible.
Required: true
Default: 0
panel.title string
The title of the plugin window when it runs. Note that the variable 'instanceName' is provided here in a VAR variable container.
Required: true
Default: "@VAR{instanceName}"
panel.titleBarVisible boolean
Whether the window title bar is visible.
Required: true
Default: true
panel.showMenuBar boolean
Whether the menu bar is visible.
Required: true
Default: false
panel.showToolBar boolean
Whether the toolbar is visible.
Required: true
Default: false
panel.makeActive boolean
Whether the window becomes active when opened.
Required: true
Default: false
panel.bringToFront boolean
Whether the window is brought to the front / top of other windows when opened.
Required: true
Default: false
panel.minimizable boolean
Whether the window is minimizable.
Required: true
Default: true
panel.resizable boolean
Whether the window is resizable.
Required: true
Default: true
panel.closeable boolean
Whether the window is closeable.
Required: true
Default: true
panel.closeWhenDone boolean
Whether to close the window when complete.
Required: true
Default: true
panel.center boolean
Whether to center the window when opened. Note: this property overrides the 'position' property.
Required: true
Default: false
panel.position object
The position of the window when opened the first time.
Required: true
Default: (not specified; see any element defaults within)
panel.position.top integer
The vertical position of the window in pixels from the top edge of the viewport. Note: this property is overriden by the 'center' property.
Required: true
Default: 100
panel.position.left integer
The horizontal position of the window in pixels from the left edge of the viewport. Note: this property is overriden by the 'center' property.
Required: true
Default: 100
panel.size object
The size of the window when opened the first time.
Required: false
Default: (not specified; see any element defaults within)
panel.size.width integer
The width of the window in pixels. -1 means use the default width for the panel. Note that depending on panel features exposed, there may be a limit to how small a panel can become.
Required: true
Default: -1
panel.size.height integer
The height of the window in pixels. -1 means use the default height for the panel. Note that depending on panel features exposed, there may be a limit to how small a panel can become.
Required: true
Default: -1
channel object
The communication channel definition used by this plugin. Note: this section rarely needs modifications. In many cases, the underlying plugin implementation depends on at least some of these settings having the values below. Consult with a JADE expert before making changes to this section if you are unfamiliar with the implications of changes to this section.
Required: true
Default: (not specified; see any element defaults within)
channel.SendBreakTimeout integer
The timeout duration in milliseconds to wait for sending messages.
Required: true
Default: 1000
channel.WaitOnBreakTimeout integer
The timeout duration in milliseconds to wait for receiving messages. Note: -1 means wait indefinitely or until shutdown is signalled.
Required: true
Default: -1
channel.WaitOnShutdownTimeout integer
The timeout duration in milliseconds to wait for shutdown acknowledgment.
Required: true
Default: 2000
channel.ThrowTimeoutErrors boolean
Whether to throw timeout errors vs simply returning a boolean indicating whether a timeout occurred.
Required: true
Default: false
channel.ThrowShutdownUnacknowledgedErrors boolean
Whether to throw 'shutdown unacknowledged' errors.
Required: true
Default: true
channel.QueueSize integer
The size of the underlying communication queue in bytes. Note: -1 means unbounded (i.e. grow as needed with available memory).
Required: true
Default: -1
channel.SendBreakEnqueueType enum (string)
The enqueue strategy employed on the underlying queue for standard messages.
Required: true
Default: "Enqueue"
Enum Items: "Enqueue" | "EnqueueAtFront" | "LossyEnqueue" | "LossyEnqueueAtFront"
channel.SendErrorEnqueueType enum (string)
The enqueue strategy employed on the underlying queue for error messages.
Required: true
Default: "Enqueue"
Enum Items: "Enqueue" | "EnqueueAtFront" | "LossyEnqueue" | "LossyEnqueueAtFront"
channel.SendShutdownEnqueueType enum (string)
The enqueue strategy employed on the underlying queue for the shutdown message.
Required: true
Default: "LossyEnqueueAtFront"
Enum Items: "Enqueue" | "EnqueueAtFront" | "LossyEnqueue" | "LossyEnqueueAtFront"
channel.FlushQueueBeforeWaitingOnBreak boolean
Whether to flush the queue upon waiting for new messages (i.e. whether to clear the queue and wait for the next 'new' message; this has the effect of removing old messages and waiting for the next message.
Required: true
Default: false
channel.FlushQueueAfterBreaking boolean
Whether to flush the queue after receiving a new message (i.e. whether to handle the next message coming in the queue and then flush; this has the effect of handling the oldest message (if it exsits) or the next message before flushing the queue.
Required: true
Default: false