# nidaqmx-python
**Repository Path**: cydata/nidaqmx-python
## Basic Information
- **Project Name**: nidaqmx-python
- **Description**: A Python API for interacting with NI-DAQmx
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-25
- **Last Updated**: 2024-06-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
=========== =================================================================================================================================
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-section:
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.
.. code-block:: python
>>> 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.
.. code-block:: python
>>> 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.
.. code-block:: python
>>> 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
[, , ]
>>> 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.