ROOT object
This top level object holds all configuration information for this plugin.
Required: true
Default: (not specified; see any element defaults within)
subscribesTo array
An array of plugin instance names corresponding to plugin instances which will be subscribed to by this plugin instance.
Required: false
subscribesTo[n] string
A plugin instance name (corresponding to a plugin you wish to subscribe to) or a topic published by the worker (ex. __PLUGIN_INFO__).
Required: false
Default: ""
options object
Configuration options specific to this plugin. Note that variables and expressions are generally allowed in this section.
Required: true
Default: (not specified; see any element defaults within)
options.messageSourceKeyNames array
An array of key names to look for when inspecting incoming messages for merge. The first element in this array found as a key name in the Latest Message will be used as the key under which that message will be placed in the Merged Messages object. If no key is found, the message will be placed under a key named "__UNKNOWN_SOURCE__".
Required: true
Default: [
"workerName",
"instanceName"
]
options.messageSourceKeyNames[n] string
A key name to look for when inspecting incoming messages for merge.
Required: false
Default: ""
options.digitalOutputConnections object
An object containing digital output connection information. This object layer is provided primarily for extensibility purposes at this time.
Required: true
Default: (not specified; see any element defaults within)
options.digitalOutputConnections.digitalOutputDataLogging object
An object which defines the logging behavior.
Required: true
Default: {
"strategy": "OnChange",
"booleanRecordType": "1/0",
"includeUILockStateColumns": false,
"dataLogger": {
"Enable": true,
"LogFolder": "\\JADE_LOGS\\@VAR{instanceName}",
"FileNameFormat": "@VAR{instanceName}-@LOG{TIMESTAMP}.csv",
"DiskThrashPeriod": 1000,
"FileSizeLimit": 1000000,
"TimestampFormat": "%Y-%m-%d %H-%M-%S%3u"
}
}
options.digitalOutputConnections.digitalOutputDataLogging.strategy enum (string)
The logging state for digital output data. OnChange will log on digital output state changes, where notably Startup and Shutdown states are always recorded. OnUpdate will log anytime digital outputs are updated (which may not be exclusively on changes, such as when updating from a valueAutoUpdateCondition which evaluates to the same/current value).
Required: true
Default: "OnChange"
Enum Items: "OnChange" | "OnUpdate"
options.digitalOutputConnections.digitalOutputDataLogging.booleanRecordType enum (string)
Determines how boolean values display in the log file. The valid values for this option are: true/false, True/False, TRUE/FALSE, T/F, and 1/0
Required: true
Default: "1/0"
Enum Items: "true/false" | "True/False" | "TRUE/FALSE" | "T/F" | "1/0"
options.digitalOutputConnections.digitalOutputDataLogging.includeUILockStateColumns boolean
Whether to include the lock status in the data log file.
Required: true
Default: false
options.digitalOutputConnections.digitalOutputDataLogging.dataLogger object
Defines the logging (data and errors) 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}, and @VAR{instanceName} are available variables. note: @LOG{LOGGERNAME} is equal to the @VAR{instanceName} here.
Required: true
Default: (not specified; see any element defaults within)
options.digitalOutputConnections.digitalOutputDataLogging.dataLogger.Enable boolean
Whether to enable the logger.
Required: true
Default: true
options.digitalOutputConnections.digitalOutputDataLogging.dataLogger.LogFolder string
The folder in which to write log files.
Required: true
Default: "\\JADE_LOGS\\@VAR{instanceName}"
options.digitalOutputConnections.digitalOutputDataLogging.dataLogger.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.digitalOutputConnections.digitalOutputDataLogging.dataLogger.FileSizeLimit integer
The file size at which to create new files.
Required: true
Default: 1000000
options.digitalOutputConnections.digitalOutputSections array
An array of objects where each object defines a digital output section. DigitalOutput sections are organized left to right, each with a name and digital output list which renders top to bottom.
Required: true
Default: [
{
"digitalOutputSectionName": "Section 1",
"delayPerDigitalOutputForSetAllToTrue": 0,
"delayPerDigitalOutputForSetAllToFalse": 0,
"digitalOutputList": [
{
"name": "My Digital Output",
"lines": "Dev1/port0/line0",
"invertLines": false,
"startupValue": false,
"shutdownValue": false,
"falseLabel": "Off",
"trueLabel": "On",
"valueAutoUpdateCondition": null,
"uiLock": {
"startupValue": false,
"autoUpdateCondition": null,
"confirmManualUnlock": false,
"confirmManualUnlockMessage": "\nAre you sure you want to unlock digital output \"@VAR{digitalOutputName}\" in section \"@VAR{sectionName}\"?"
}
}
]
}
]
options.digitalOutputConnections.digitalOutputSections[n] object
An object defining a digital output section. A digital output section has a name and digital output list which renders top to bottom. The section is intended to allow organizing / grouping digital outputs in the user interface according to function vs the boards and banks to which they are connected.
Required: false
Default: (not specified; see any element defaults within)
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputSectionName string
A semantic name for the digital output section. For example "Instrument Digital Outputs" or "Control DigitalOutputs". Note that because this is used to compose the DAQmx task name, only characters a-z, A-Z, 0-9, -, _ , and spaces are allowed with the additional rule that the _ cannot be the leading / first character.
Required: true
Default: "My DigitalOutput Section"
options.digitalOutputConnections.digitalOutputSections[n].delayPerDigitalOutputForSetAllToTrue integer
The delay to apply in milliseconds between turning on individual digital outputs when the Set All to True button is clicked. In many cases such a delay is not a concern and the value can be set to 0. An example of where this may be useful is when multiple digital outputs are controlling power on/off state for instruments powered by the same bus. Turning all of the insruments on/off too quickly could cause an undesirable transient current draw, and slowing this down while still having a single-click solution to turn everything on may be helpful.
Required: true
Default: 0
options.digitalOutputConnections.digitalOutputSections[n].delayPerDigitalOutputForSetAllToFalse integer
The delay to apply in milliseconds between turning on individual digital outputs when the Set All to False button is clicked. In many cases such a delay is not a concern and the value can be set to 0. An example of where this may be useful is when multiple digital outputs are controlling power on/off state for instruments powered by the same bus. Turning all of the insruments on/off too quickly could cause a undesirable transient current draw, and slowing this down while still having a single-click solution to turn everything on may be helpful.
Required: true
Default: 0
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList array
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n] object
Defines a digital output by specifying the digital output location in a board and bank, its default state, and a semantic name to display in the user interface.
Required: false
Default: (not specified; see any element defaults within)
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].name string
A semantic name for the digital output, such as the name of the instrument it enables/disables or the purpose it serves in the system. Note that because this is used to compose the DAQmx task name, only characters a-z, A-Z, 0-9, -, _ , and spaces are allowed with the additional rule that the _ cannot be the leading / first character.
Required: true
Default: "My Digital Output"
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].lines string
A DAQmx digital output channel name such as Dev1/port0/line0. Note that this option may be set to an empty string which effectively just tracks this as a variable for condition computation and data logging.
Required: true
Default: "Dev1/port0/line0"
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].invertLines boolean
Inverts the output value so that if logic true is written then logic false is output on the line, and vice versa.
Required: true
Default: false
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].startupValue booleannull
The value to assign to the digital output at plugin startup. If this value is null the output will not be updated at startup.
Required: true
Default: false
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].shutdownValue booleannull
The value to assign to the digital output at plugin shutdown. If this value is null the output will not be updated at shutdown.
Required: true
Default: false
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].falseLabel string
A semantic label for the false state of the digital output.
Required: true
Default: "Off"
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].trueLabel string
A semantic label for the true state of the digital output.
Required: true
Default: "On"
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].valueAutoUpdateCondition stringbooleannull
A boolean condition that sets the value of the digital output. The condition is evaluated when 1, subscription data arrives or 2. digital outputs are updated via an explicit control message or manually. If set to null, this setting is ignored. Generally there are two variable containers available here: 1. SUB which contains subscription data, and 2. VAR which contains the all digital output values and ui lock states. Digial output values are available as @VAR{section-name.digital-output-name.value} and UI lock states are available as @VAR{section-name.digital-output-name.uiLock}. For example, the variable for the digital value for some "SectionA" with digital output named "DO1" would be: @VAR{SectionA.DO1.value}. Similarly the UI lock state would be: @VAR{SectionA.DO1.uiLock}.
Required: true
Default: ""
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock object
An object defining the UI Lock behavior.
Required: true
Default: (not specified; see any element defaults within)
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.startupValue boolean
The value to assign to the UI Lock at plugin startup.
Required: true
Default: false
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.autoUpdateCondition stringbooleannull
A boolean condition that sets the value of the UI Lock state. The condition is evaluated when 1, subscription data arrives or 2. digital outputs are updated via an explicit control message or manually. If set to null, this setting is ignored.
Required: true
Default: ""
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.confirmManualUnlock boolean
Whether to force the user to confirm when manually unlocking (i.e. clicking the checkbox) a lock state for this digital output.
Required: true
Default: false
options.digitalOutputConnections.digitalOutputSections[n].digitalOutputList[n].uiLock.confirmManualUnlockMessage string
If confirmManualUnlock is true, this is the message to display to the user when attempting to unlock the digital output.
Required: true
Default: "\nAre you sure you want to unlock digital output \"@VAR{digitalOutputName}\" in section \"@VAR{sectionName}\"?"
options.publishing object
An object defining the plugin's publishing behavior..
Required: true
Default: (not specified; see any element defaults within)
options.publishing.publishOnUpdate boolean
Whether to publish data when digital output state changes.
Required: true
Default: false
options.publishing.publishPeriodically boolean
Whether to publish data periodically.
Required: true
Default: false
options.publishing.publishPeriod integer
The period with which to publish. Only applies if publishPeriodically is true.
Required: true
Default: 2000
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}, and @VAR{instanceName} 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.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.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}"
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.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