Metadata-Version: 2.5
Name: pymodaq_plugins_daqmx
Version: 1.1.0
Summary: Hardware plugins for PyMoDAQ using the NiDAQmx framework (pydaqmx wrapper)
Project-URL: Homepage, https://pymodaq.cnrs.fr
Project-URL: Documentation , https://pymodaq.cnrs.fr
Project-URL: Repository , https://github.com/PyMoDAQ/pymodaq_plugins_daqmx
Author-email: Sébastien Weber <sebastien.weber@cemes.fr>
Maintainer-email: Sébastien Weber <sebastien.weber@cemes.fr>
License: The MIT License (MIT)
        
        Copyright (c) 2021 Sebastien Weber <sebastien.weber@cemes.fr>
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in
        all copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
        THE SOFTWARE.
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=3.10
Requires-Dist: pydaqmx
Requires-Dist: pymodaq-data>=5.3.0
Requires-Dist: pymodaq-gui>=5.3.0
Requires-Dist: pymodaq-utils>=5.3.1
Requires-Dist: pymodaq>=5.3.7
Description-Content-Type: text/x-rst

pymodaq_plugins_daqmx (National Instrument DAQmx)
#################################################

.. image:: https://img.shields.io/pypi/v/pymodaq_plugins_daqmx.svg
   :target: https://pypi.org/project/pymodaq_plugins_daqmx/
   :alt: Latest Version

.. image:: https://readthedocs.org/projects/pymodaq/badge/?version=latest
   :target: https://pymodaq.readthedocs.io/en/stable/?badge=latest
   :alt: Documentation Status

.. image:: https://github.com/PyMoDAQ/pymodaq_plugins_daqmx/workflows/Upload%20Python%20Package/badge.svg
    :target: https://github.com/PyMoDAQ/pymodaq_plugins_daqmx

Plugins devoted to National Instruments signal acquisition and generation, using the NI-DAQmx driver through the
`PyDAQmx <https://pythonhosted.org/PyDAQmx/>`_ package. They include generic actuator and viewer plugins (a task
configured from the settings tree), plugins for specific uses (photon counting, piezo scanner control, analog input
acquisition), and the ``DAQmx`` wrapper object to build your own plugin on.

Authors
=======

* Sébastien J. Weber

Contributors
============

* Amelie Jarnac
* Aurore Finco

Instruments
===========
Below is the list of instruments included in this plugin

Actuators
+++++++++

* **DAQmx**: generic signal generation (analog, digital) with a NI device, configured from the settings tree
* **DAQmx_ScannerControl**: control of a piezo scanner with an analog output. It needs a clock channel to time the
  movement and display the position
* **DAQmx_MultipleScannerControl**: control of several piezo scanners (x, y, z) with analog outputs, sharing one clock
  channel between the master and the slave modules

Viewer0D
++++++++

* **DAQmx**: generic signal acquisition with a NI device, configured from the settings tree
* **DAQmxAI**: acquisition of one analog input channel, displayed as 0D or 1D data
* **DAQmxDualAI**: acquisition of two analog input channels, displayed as 0D or 1D data
* **DAQmx_PLcounter**: single photon counting

Viewer1D
++++++++

* **DAQmx**: generic signal acquisition with a NI device as a function of time, configured from the settings tree

Documentation
+++++++++++++

Refer to the `documentation <https://pymodaq.github.io/pymodaq_plugins_daqmx/>`_ to use this plugin or discover its
functionalities (user guide for the photon counter and the scanner control, and how to create your own module with
the ``DAQmx`` object).

Difference with the 5.3.x branch
================================

The repository has two lines of plugins, which use two different Python interfaces to the same NI-DAQmx driver. They
do not share their instrument plugins (``DAQmx_...`` here, ``NIDAQmx`` there).

.. list-table::
   :header-rows: 1
   :widths: 20 40 40

   * -
     - ``pydaqmx`` branch (this one)
     - ``5.3.x`` branch
   * - Python interface
     - `PyDAQmx <https://pythonhosted.org/PyDAQmx/>`_ (``DAQmx`` object in ``hardware/national_instruments/daqmx.py``)
     - `nidaqmx <https://nidaqmx-python.readthedocs.io/en/stable/>`_, the package of National Instruments (``NIDAQmx``
       object in ``daqmxni.py``)
   * - Instruments
     - generic ``DAQmx`` actuator and viewers (0D, 1D), ``DAQmxAI``, ``DAQmxDualAI``, ``DAQmx_PLcounter``,
       ``DAQmx_ScannerControl``, ``DAQmx_MultipleScannerControl``
     - ``NIDAQmx`` actuator, 0D viewer and 1D viewer
   * - Use
     - specific tasks (photon counting, piezo scanner control, analog input) and a base to write your own plugin
     - measurement of voltage, current or temperature with a general viewer, whose channels can be loaded from a
       configuration file of the user (``config_daqmx.toml``) and saved from the interface
   * - State
     - the ``PyDAQmx`` based plugins, kept as they are
     - the ``NIDAQmx`` viewers were tested with a cDAQ-9174 and a USB-6341 (modules NI-9205, NI-9211, NI-9217); the
       ``NIDAQmx`` actuator is not finished yet (its movements still raise ``NotImplementedError``)

The ``5.3.x`` branch still contains the ``PyDAQmx`` based ``DAQmx`` object and its user guides, but not the instrument plugins
of this branch.

Requirements
============

* PyMoDAQ >= 5.3.7
* the NI-DAQmx driver of National Instruments, installed on the computer connected to the device (use NI MAX to test
  your hardware). Where ``PyDAQmx`` cannot find the driver, the modules of this plugin cannot be imported and PyMoDAQ
  skips them.
* the ``pydaqmx`` Python package, installed with the plugin.
