NI-DAQmx Python API
Project description
Info |
Contains a Python API for interacting with NI-DAQmx. See GitHub for the latest source. |
Author |
National Instruments |
About
The nidaqmx package contains an API (Application Programming Interface) for interacting with the NI-DAQmx driver. The package is implemented in Python. This package was created and is supported by NI. The package is implemented as a complex, highly object-oriented wrapper around the NI-DAQmx C API using the ctypes Python library.
nidaqmx 0.5 supports all versions of the NI-DAQmx driver that ships with the C API. The C API is included in any version of the driver that supports it. The nidaqmx package does not require installation of the C header files.
Some functions in the nidaqmx package may be unavailable with earlier versions of the NI-DAQmx driver. Visit the ni.com/downloads to upgrade your version of NI-DAQmx.
nidaqmx supports only the Windows operating system.
nidaqmx supports CPython 2.7, 3.4+, PyPy2, and PyPy3.
Installation
Running nidaqmx requires NI-DAQmx or NI-DAQmx Runtime. Visit the ni.com/downloads to download the latest version of NI-DAQmx.
nidaqmx can be installed with pip:
$ python -m pip install nidaqmx
Or easy_install from setuptools:
$ python -m easy_install nidaqmx
You also can download the project source and run:
$ python setup.py install
Usage
The following is a basic example of using an nidaqmx.task.Task object. This example illustrates how the single, dynamic nidaqmx.task.Task.read method returns the appropriate data type.
>>> import nidaqmx
>>> with nidaqmx.Task() as task:
... task.ai_channels.add_ai_voltage_chan("Dev1/ai0")
... task.read()
...
-0.07476920729381246
>>> with nidaqmx.Task() as task:
... task.ai_channels.add_ai_voltage_chan("Dev1/ai0")
... task.read(number_of_samples_per_channel=2)
...
[0.26001373311970705, 0.37796597238117036]
>>> from nidaqmx.constants import LineGrouping
>>> with nidaqmx.Task() as task:
... task.di_channels.add_di_chan(
... "cDAQ2Mod4/port0/line0:1", line_grouping=LineGrouping.CHAN_PER_LINE)
... task.read(number_of_samples_per_channel=2)
...
[[False, True], [True, True]]
A single, dynamic nidaqmx.task.Task.write method also exists.
>>> import nidaqmx
>>> from nidaqmx.types import CtrTime
>>> with nidaqmx.Task() as task:
... task.co_channels.add_co_pulse_chan_time("Dev1/ctr0")
... sample = CtrTime(high_time=0.001, low_time=0.001)
... task.write(sample)
...
1
>>> with nidaqmx.Task() as task:
... task.ao_channels.add_ao_voltage_chan("Dev1/ao0")
... task.write([1.1, 2.2, 3.3, 4.4, 5.5], auto_start=True)
...
5
Consider using the nidaqmx.stream_readers and nidaqmx.stream_writers classes to increase the performance of your application, which accept pre-allocated NumPy arrays.
Following is an example of using an nidaqmx.system.System object.
>>> import nidaqmx.system
>>> system = nidaqmx.system.System.local()
>>> system.driver_version
DriverVersion(major_version=16L, minor_version=0L, update_version=0L)
>>> for device in system.devices:
... print(device)
...
Device(name=Dev1)
Device(name=Dev2)
Device(name=cDAQ1)
>>> import collections
>>> isinstance(system.devices, collections.Sequence)
True
>>> device = system.devices['Dev1']
>>> device == nidaqmx.system.Device('Dev1')
True
>>> isinstance(device.ai_physical_chans, collections.Sequence)
True
>>> phys_chan = device.ai_physical_chans['ai0']
>>> phys_chan
PhysicalChannel(name=Dev1/ai0)
>>> phys_chan == nidaqmx.system.PhysicalChannel('Dev1/ai0')
True
>>> phys_chan.ai_term_cfgs
[<TerminalConfiguration.RSE: 10083>, <TerminalConfiguration.NRSE: 10078>, <TerminalConfiguration.DIFFERENTIAL: 10106>]
>>> from enum import Enum
>>> isinstance(phys_chan.ai_term_cfgs[0], Enum)
True
Support / Feedback
The nidaqmx package is supported by NI. For support for nidaqmx, open a request through the NI support portal at ni.com.
Bugs / Feature Requests
To report a bug or submit a feature request, please use the GitHub issues page.
Information to Include When Asking for Help
Please include all of the following information when opening an issue:
Detailed steps on how to reproduce the problem and full traceback, if applicable.
The python version used:
$ python -c "import sys; print(sys.version)"
The versions of the nidaqmx, numpy, six and enum34 packages used:
$ python -m pip list
The version of the NI-DAQmx driver used. Follow this KB article to determine the version of NI-DAQmx you have installed.
The operating system and version, for example Windows 7, CentOS 7.2, …
Documentation
Documentation is available here.
Additional Documentation
Refer to the NI-DAQmx Help for API-agnostic information about NI-DAQmx or measurement concepts.
NI-DAQmx Help installs only with the full version of NI-DAQmx.
License
nidaqmx is licensed under an MIT-style license (see LICENSE). Other incorporated projects may be licensed under different licenses. All licenses allow for non-commercial and commercial use.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nidaqmx-0.5.5.zip
.
File metadata
- Download URL: nidaqmx-0.5.5.zip
- Upload date:
- Size: 281.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8a3b3c262c590d29f59b636427887b274273da4ccc09a681ed076f7fe4d642c |
|
MD5 | 82afad7c120c1cabd788781e14e074d7 |
|
BLAKE2b-256 | aadbee406833f398703880895abfe450b0296abec71c6087bf810c0f44981041 |
File details
Details for the file nidaqmx-0.5.5-py2.py3-none-any.whl
.
File metadata
- Download URL: nidaqmx-0.5.5-py2.py3-none-any.whl
- Upload date:
- Size: 270.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | caa1c5436a4beb0e2deb0fed8b3a4401e49055b76264d68137d7e86a85dcfbce |
|
MD5 | a49df3a012346d9b191498d4fb0cca08 |
|
BLAKE2b-256 | 442b1bffbe5b6c918af1c8493a82f513c90104191e3535979d35b5852ca3d335 |