- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.9.0
- 0.8.0
- 0.7.0
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.8
- 0.5.7
- 0.5.6
- 0.5.5
- 0.5.4
- 0.5.2
- 0.5.0
All notable changes to this project will be documented in this file.
-
- ...
-
- ...
-
- ...
-
- 540: Task.wait_for_valid_timestamp doesn't return the timestamp
- 606: CERTIFICATE_VERIFY_FAILED occurs when executing installdriver command on Windows system
- 615: Onboard device memory overflow
- 623: installdriver CLI doesn't prompt or indicate what versions are being downloaded/installed on a clean system
-
- Add support for strain calibration (offset nulling and shunt calibration)
- Add support for DAQmx calibration info properties
- Add support for WaitForValidTimestamp
- Fix naming issues:
- Rename
ShuntCalSelect.AAND_B
toA_AND_B
.
- Rename
- Automate Driver Install Experience within nidaqmx Module
- Update libtime to accept time before 1970
-
- ...
-
nidaqmx.errors.DaqNotFoundError
,nidaqmx.errors.DaqNotSupportedError
, andnidaqmx.errors.DaqFunctionNotSupportedError
are now public exceptions.- Consistently return
nidaqmx.errors.DaqNotFoundError
on all platforms when the NI-DAQmx driver is not installed. - Updated supported Python versions to 3.8, 3.9, 3.10, 3.11, and 3.12
-
- ...
-
- Full changelog: 0.7.0...0.8.0
- Query: Closed PRs with the label: interpreter_implementation
- Query: Closed PRs with the label: library_interpreter
- Query: Closed PRs with the label: grpc_interpreter
- Query: Closed PRs with the label: test_improvements
- Query: Closed PRs with the label: interpreter_fixes
- Query: Closed PRs with the label: interpreter_testcase_update
- Query: Closed PRs with the label: event_handling
-
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
- The initialization methods for
Task
,Scale
, and other classes now accept a keyword-onlygrpc_options
parameter. Pass aGrpcSessionsOptions
object to enable gRPC support. - The
System
class now has aremote()
method which accepts aGrpcSessionOptions
object. - NI gRPC Device Server version 2.2 or later is required. Older versions of NI gRPC Device Server are unsupported because they are missing bug fixes needed to support nidaqmx-python.
- The initialization methods for
- The following functions now emit
DeprecationWarning
when called:nidaqmx.errors
module:check_for_error
,is_string_buffer_too_small
, andis_array_buffer_too_small
arectypes
-specific helper functions, so they have been moved to an internal module.System
class:set_analog_power_up_states
does not supportPowerUpStates.TRISTATE
andget_analog_power_up_states
has design issues that make the previous implementation unworkable, so they have been deprecated in favor ofset_analog_power_up_states_with_output_type
andget_analog_power_up_states_with_output_type
.
- The internals of the
nidaqmx
package have been refactored to support gRPC:- Access to the DAQmx driver is now handled by the internal
BaseInterpreter
abstract base class. There are separate implementations of this abstract base class forctypes
vs. gRPC. - Internal initialization methods now accept an
interpreter
parameter. Methods that take aninterpreter
are not part of the public API. - Added a stub generator which will generate the gRPC stub files based on the proto files present in
src/codegen/protos
. The files will be generated intogenerator/nidaqmx/_stubs
. - The internal
nidaqmx._task_modules.read_functions
andnidaqmx._task_modules.write_functions
modules have been removed. If your application uses these modules, you must update it to use public APIs such astask.read()
/task.write()
,task.in_stream.read()
/task.out_stream.write()
, ornidaqmx.stream_readers
/nidaqmx.stream_writers
. - Updated the existing tests to run with and without gRPC support.
- Added multiple test cases to improve the overall test coverage.
- Access to the DAQmx driver is now handled by the internal
- Added support for communicating with DAQmx devices through gRPC using NI gRPC Device Server. This enables using DAQmx with the MeasurementLink session management service.
-
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
Device("Dev1")
refers to a local device andDevice("Dev1", grpc_options=...)
refers to a remote device, but they are considered equal. Likewise, two instances ofDevice("Dev1", grpc_options=...)
with different remote hosts are considered equal.
- Comparisons between DAQmx object instances do not take gRPC remoting into account. For example,
-
- Added a generator that produces the
nidaqmx
module code. - Some properties were renamed in an effort to improve the consistency of the
nidaqmx
module and to support maintainability of the generator. The previous names are still usable, but will emit aDeprecationWarning
on usage. These deprecated properties may be removed in a future update. - Unused enums have been removed. This affects enums that are solely used by DAQmx features that are not supported in the
nidaqmx
module, such as external calibration, the DAQmx switch API, and internal APIs. - Refactored the repository folder structure as follows:
generated/nidaqmx/
- The output of the code generator and source for the buildnidaqmx
module. Do not directly modify any files in this folder.examples/
- Example programs demonstrating how to use thenidaqmx
module.src/codegen/
- The code generator.src/handwritten/
- Hand-maintained files that are copied as-is during code generation.tests
- Test code that exercises thenidaqmx
module to ensure it functions correctly and doesn't introduce regressions.
- Multiple various test improvements in support of the generator refactoring.
- Added a generator that produces the
-
- DAQmx 22.0 updates.
-
- Added NI-DAQmx Power Channel APIs.
-
- 37: ai_raw example is bad
- 54: Linux supported?
- 64: nidaqmx-python and pynidaqmx projects use the same package name
- 65: ci_count_edges.py REQUIRES A START COMMAND
- 100: How to clear task and create a new task with same name?
- 101: Use IntEnum instead of Enum
- 102: handle types and daqmx versions
- 117: Error in example
- 131: task.write for COUNTER_OUTPUT - UsageTypeCO.PULSE_FREQUENCY has frequency and duty cycle reversed
- 124: nidaqmx_examples/system_properties.py errors out as of version 0.5.7
- 151: Write functions require writable numpy array
- 154: Problem with task.write() when not enough buffer free
-
- Scrubbed all examples to ensure they all function correctly and use DAQmx best practices.
- Added
DaqReadError
andDaqWriteError
subclasses ofDaqError
that provide important metadata for partial reads and writes. - Linux is officially supported.
-
- Add support for most NI-DAQmx 16.1-21.5 APIs.
- APIs using time data types are not yet supported.
- Various other improvements:
- No more empty docstrings on constants.
- Fix C API function mapping for attributes - dozens were incorrect.
- Remove some internal-only enumerations that were unused.
- (compat breaker) Fix two egregious naming issues when translating the API to
SNAKE_CASE
.M_HZ
is nowMHZ
(megahertz) and<word>m_VOLTS
is nowMILLIVOLTS
. - (compat breaker) Fix various constant names that didn't make any sense.
- Add a header to all auto-generated files indicating that they should not be edited by hand.
- Add support for most NI-DAQmx 16.1-21.5 APIs.
-
- Bug in InStream.readinto()
- Fix for Linux where DAQmxGetSysNIDAQUpdateVersion is not available
- Fix RelativeTo function names to match DLL names
- fix: exported symbol names
- fix: dev dependencies to avoid security alerts
- fix: task.del to use _saved_name
- remove: python2.7 support
- update: requirements
- Fix warning regarding ABC import from collections
- remove: py2, py27 support from classifiers
- Correct Network Connection Loss Property
-
- Fixed
test_many_sample_pulse_ticks
test - Added a bridge device to test MAX config to enable
test_list_of_floats_property
to run - 36: no version information available
- Fixed
-
- Switched to poetry build system.
- Updated supported Python versions to 3.7, 3.8, 3.9, and 3.10
- Updated to latest dependencies
- Replaced
numpy.bool
withbool
native type
- Replaced
-
- Adding lock around
argtypes
to prevent race condition between settingargtypes
and calling functions, in cases the functions run in parallel. - Some special cases needed unconditional locks around both the setting of
argtypes
and the actual function call, like the variadic power-up state functions in system.py, and the register events functions in task.py.
- Adding lock around
- Initial public release of nidaqmx
- Update setup.py description and fix issues 2, 3, 5, and 6 raised by Ed Page.
- Splitting joined acronyms AIADC, AIDC, AILVDT, AIRVDT and CITC.
- Adding link to LICENSE file.
- Updating README.rst file in source directory to eliminate Sphinx domaindirectives and add link to documentation on readthedocs.
- Initial pre-release of nidaqmx