These examples show you how to interact with National Instruments devices using MATLAB.The focus is Vidrio's free DAQmx wrapper, dabs.ni.daqmx
.Also supplied are some contrasting examples using The Mathworks Data Acquisition Toolbox.All examples require a Windows machine.
The dabs.ni.daqmx
wrapper
The MATLAB Data Acquisition Toolbox is the most common way of handling data acquisition in MATLAB.However, with NI hardware you can also use the free dabs.ni.daqmx
wrapper that is part of ScanImage.This is a thin, object-oriented wrapper that provides access to almost the full DAQmx API.
Data Acquisition Using NI-DAQmx and LabVIEW Learn about all available training formats for Data Acquisition Using NI-DAQmx and LabVIEW Complete these modules to learn the required skills for this badge: NI-DAQmx Programming in LabVIEW: Programming with the NI-DAQmx API; Programming Multiple Channels; Triggering on a Specific Condition. An Introduction to LabVIEW Searches related to labview tutorial labview 2010 tutorial labview tutorial pdf labview download labview tutorial video labview 2009 tutorial labview 8.5 tutorial. NI-DAQmx is an NI instrument driver that controls every aspect of your DAQ system, including signal conditioning, from configuration to programming in LabVIEW to low-level OS and device control. When trying to open some examples to use the TC01, labview tries to find these files but can't find them: DAQmx Read (Analog DBL 1Chan Samp).vi DAQmx Create Channel (AI-Temperature-Thermocouple).vi DAQmx Create Virtual Channel.vi DAQmx Clear Task DAQmx Read.vi I don't seem to have those files on my disk. Jul 01, 2019 I get awarning saying that DAQmx.rc is missing when trying to run a VI thatuses the NI-DAQmx palette: - This VI needs a driver or toolkit component that is not found. Missing resource file 'daqmx.rc'. All my NI-DAQmx VIs are shown as question marks in LabVIEW. They act normally in older versions of LabVIEW.
In addition to dabs.ni.daqmx
, ScanImage also supplies an FPGA interface wrapper (dabs.ni.rio
) which can be used to run a bitfile compiled using LabVIEW FPGA on any NI RIO FPGA target.The NI VISA wrapper (dabs.ni.visa
) connects to and communicates with devices that support NI's VISA interface (such as oscilloscopes).This currently supports only a small subset of the NI VISA API.
What is provided here
This repository contains a bunch of NI DAQmx examples using both the MATLAB DAQ toolbox and the dabs.ni.daqmx
wrapper.The examples provided here overlap with those provided by Vidrio in dabs.ni.daqmx.demos
, but are more up to date and more extensively commented.The DAQmx_ANSI_C_examples
directory is for convenience and contains copies of some of the examples installed along with DAQmx.The basicConcepts
directory illustrates some of the more advanced programming concepts which crop up.
Installation
Labview Daqmx Download For Mac
- Download ScanImage and add its root directory to your MATLAB path.
- Install the supported version of DAQmx. For example, ScanImage 5.2 requires v15.5.
- Add the examples in this repository to your path or
cd
to thecode
directory to run the examples. - You may create simulated devices in NI MAX to run the examples on a machine with no NI hardware connected.Triggers do not work in simulated mode: they fire immediately.Simulated mode also works in a virtual machine.
Running examples
By default all examples will run on NI DAQ device Dev1
.In each example this device ID is defined by a variable called devName
near the start of the function.You will therefore either need a DAQ device called Dev1
or you will need to edit the code accordingly.You can see which devices are connected in NI MAX or by running: vidrio.listDeviceIDs
at the MATLAB command line.For each example, first look at the help text (e.g. help vidrio.AO.softwareTimedVoltage
) then run at the MATLAB command-line. e.g.
There are further comments in-line so open the example in an editor to learn more.Examples have been tested with an NI PCI-6229 and PXIe-6341.Many examples have also been verified to work with a simulated NI PCIe-6341.Not all examples work on all boards (e.g. the re-triggerable example requires an X-Series board).You may simply get errors with certain combinations of cards and examples.e.g. With a PCI-6115, certain buffered examples will complain that the sample rate is too low so you will need to modify this.
Key Contents
vidrio.listDeviceIDs
- shows how to list available device and query them to obtain detailed information
Labview Daqmx Download
Basic analog input and output examples
vidrio.AO.softwareTimedVoltage
- software-timed ('on demand') analog outputvidrio.AO.hardwareFiniteVoltage
- hardware-timed analog output (using the on-board clock) of a fixed number of pointsvidrio.AO.hardwareContinuousVoltage
- basic continuous analog output with the on-board clockvidrio.AO.hardwareContinuousVoltageNoRegen
- basic continuous analog output with the on-board clock that recycles the output buffervidrio.AO.hardwareContinuousVoltageNoRegen_DigTrig
- Continuous analog output that is hardware triggered by a digital (TTL) rising edgevidrio.AI.softwareTimedVoltage
- software-timed ('on demand') analog inputvidrio.AI.hardwareFiniteVoltage
- hardware-timed analog input (using the on-board clock) of a fixed number of pointsvidrio.AI.hardwareContinuousVoltage
- A simple example showing hardware-timed continuous analog input with no callback functionsvidrio.AI.hardwareContinuousVoltageWithCallBack
- Hardware-timed continuous analog input with a callback function. Acq ends when figure is closed.vidrio.mixed.AOandAI
- continuous AI and AO that run simultaneously and in sync.
Basic digital IO and counters
vidrio.DO.softwareBasic
- simple on-demand digital outputvidrio.CO.singlePulse
- create a single digital pulse using a counter task
More advanced techniques
vidrio.mixed.AOandAI_OO
- Interactive continuous AI and AO using object-oriented programming.vidrio.mixed.AOandAI_OO_sharedClock
- Interactive continuous AI and AO with shared clock between AO and AI.- For retriggerable tasks see
vidrio.mixed.DO_retriggerable
andvidrio.mixed.AO_retriggerable
vidrio.sync
is a demo package showing how to synchronise two DAQ devices and why you need to do so.
Hints
The use of try
/catch
blocks should ensure the DAQmx tasks always shut down cleanly.If they do not:
- If the DAQ device claims to be in use, you can reset it using MAX.
- If you end up with orphan tasks, you will have to close and re-open MATLAB.
Further information
- DAQmx C Reference help and C functions listing
- Vidrio DAQmx docs and demos
- See SimpleMScanner for basic 2-photon scanning software written using the techniques shown here.
DAQmx in other languages
- A wrapper for PyDAQmx
- For ANSI C examples look in
C:UsersPublicDocumentsNational InstrumentsNI-DAQExamples
- You can find side-by-side examples of how DAQmx works in different languages here.