LJStreamM - Windows Only | LabJack
« Close

Datasheets and User Guides

App Notes

Software & Driver


LJStreamM - Windows Only

Supported devices


The application LJStreamM is included with the main installation package.

For LabVIEW programmers, the source code is available in the LabVIEW_LJM archive.


LJStreamM is a simple ready-to-run executable that streams up to 16 input channels from a single device. It displays selected channels on a graph and writes data to file.  Generally used for >100 scans/second.

See Section 3 of the T7 datasheet for background on streaming. Also see the T7 data rates section and the LJM library stream section.

Most of the user settings are saved in LJStreamM.cfg.  This file is read when the program is first run and if it does not exist default values will be loaded.  This file is written when the program is closed to save the settings at the time of close.  This file it not intended for direct editing by the user.  To make a backup of the settings, simply make a copy of LJStreamM.cfg.  Then later to use those settings again, close LJStreamM, delete or rename LJStreamM.cfg, rename the backup file to LJStreamM.cfg, and then run LJStreamM.

It is recommend to initially just open and click "Start Stream" without changing any settings.  If you have changed some settings and are having problems, close the program and delete "LJStreamM.cfg", then open again and you will have the default settings.  If you have problems related to opening the device, also delete "LJStreamM_open.cfg".  For problems related to the working directory location, see "Change Working Directory" below.



LJStream vs. LJLog: We suggest that you use LJLogM if possible, and only if you need to go too fast for LJLogM do you then switch to LJStreamM.  LJLogM uses command-response mode, so it acquires and processes 1 scan at a time at the specified interval and is generally used for ≤100 scans/second.  LJStreamM uses stream mode, so each iteration it retrieves and processes 1 seconds worth of scans and is generally used for >100 scans/second.  For more discussion of command-response mode and stream mode see Section 3 of the T7 datasheet.

LJStreamM vs. LJStreamUD:  LJStreamM supports the T-series.  LJStreamUD supports the U3, U6, and UE9.


# Channels: 1-16.

Scan Rate: Put in the desired scan rate.  Sample rate is scan rate times number of channels.  See Appendix A-1 of the T-Series Datasheet for more information on data rates.

Range, ResolutionIndex, and Settling Time: To configure these analog input settings, close LJStreamM and use Kipling.

DevType, ConnType, &  SerialNumber (Opening):  These indicators display information about the device that has been opened.  To control what device is opened, edit the LJStreamM_open.cfg file that can be found in the working directory.  If you don't see it, make sure you have opened & closed LJStreamM at least once after installation.  Unlike LJStreamM.cfg, LJStreamM_open.cfg is intended to be directly edited by the user.  This file has an intro line and then 3 lines to specify Device Type, Connection Type, and Identifier. The default values are ANY-ANY-ANY, meaning that LJStreamM will open the first device it can find.  For further information see Section 2.1 of the LJM User's Guide.  Example:  [Main] (1st line of config file), DeviceType=t7 (2nd line), ConnectionType=ethernet (3rd line), Identifier= (4th line).  If you mess up the config file, just delete it and then open & close the application so it will make a new default one.

This provides a way to run multiple instances at the same time talking to different devices.  Make a copy of LJStreamM.exe called LJStreamM2.exe, run LJStreamM2, set the working directly as desired, and close LJStreamM2.  Now edit both LJStreamM_open.cfg and LJStreamM2_open.cfg to specify the device for each to open.

Name: Specify the desired register Name for each row.  For example, the first row defaults to AIN0, but could be any streamable register such as  AIN9, EIO_STATE, or DIO2_EF_READ_A.  See Section 3.2 of the T7 Datasheet for a listing of streamable registers.  Any related configuration, such as Range & ResolutionIndex for analog inputs, needs to be done in Kipling before running LJStreamM.

Scaling Equations: Should be something like "y=a", where "y" is the scaled output and "a" is the input voltage of the 1st row.  "b" through "p" would be the input voltage of the rest of the rows.  Everything after "//" is ignored, so use for comments.  A few examples:

y=c                                  // Scaled value equal to raw value from 3rd row
y=100*c                           // EI-1034/LM34 voltage to deg F
y=c-273.15                       // deg K to deg C
y=((c-273.15)*9/5)+32      // deg K to deg F
y=TCVoltsToTemp[K:c:a]    // Type K, t/c voltage from 3rd row, CJ temp from 1st row

For more details see the LJLog/Stream Scaling Equations page.

Write To File: Click this to start and stop writing to file.  The resulting file is a tab-delimited ASCII file.  The first column is elapsed time (in seconds) since you started writing to file (does not reset when a new file starts automatically due to Max File Size).  Files are written with a .dat extension.  To quickly open in Excel or Open Office Calc, change the extension to .xls or .ods.  To import to a Google Spreadsheet, make the extension .tsv before uploading.

Each row of logged data typically requires roughly 10 bytes for the timestamp plus roughly 10 bytes per channel.  So it you log 8 channels at 1000 scans/second for 60 seconds that would be about (10 + 10*8) * 1000 * 60 = 54000000 bytes on the hard drive.

Data File Prefix:  LJStreamM uses this as the base string when it makes a file name.  When LJStreamM starts a new file, it appends a "_#" to the specified prefix, where "#" is an unused number from 0-99999.

Max File Size (Bytes):  When the current data file exceeds this limit, it is closed and a new file is started.  In theory the max value is 2^31 - 1, or 2147483647, but we have not tried a file that big ourselves.

Change Working Directory:  Click this to select the directory where the config file and data files will be saved.  After navigating to the desired directory in the pop-up window, click "Select Cur Dir" at the bottom-right.  For more details see the LJLog/Stream Working Directory page.

Graph History: Controls how many scans are shown on the graph.

DisableScaling:  Scaling is computing intensive.  If LJMScanBacklog is growing, disable scaling.


Revision History

1.00: Initial version.

1.01: Changed to use this application's filename (w/o extension) to create the names of the config files and registry entry.  Added "Write To File" control to items saved in config file.

1.02:  Fixed problem with saving of configuration settings.

1.03:  Changed all text to Segoe UI font so screen items are aligned regardless of system font size.

1.04:  Added support for SignedLSWMSW[lsw:msw] function in scaling equations to handle quadrature reads.  For efficiency, scaling equations now skipped if no scaling is needed (e.g. y=a).

1.05:  Set minimum value of #Channels to 1.  Fixed problem where name of the exe was not detected properly.  Fixed issue where you could never decrease the number of channels shown on graph.  Changed version check sub-vi so it only shows prompt when new version available ... not on version check errors.  Changed scaling sub-VIs to use LJM thermocouple function rather than LJUD function.

1.06:  Fixed problem where time reported on the chart and in logged file was twice the actual time.  Added separate error message displays for C-R and stream modes.