Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -799,6 +799,7 @@
#### [nidmm] Unreleased
- Added
- Added the `nidmm_measure_ac_volts.py` example.
- Added the `nidmm_measure_capacitance.py` example.
- (Common) Added `nitlsconfig[grpc]>=1.0.0a2` to the optional gRPC dependencies.
- Changed
- Removed
Expand Down
9 changes: 9 additions & 0 deletions docs/nidmm/examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ nidmm_measure_ac_volts.py
:encoding: utf8
:caption: `(nidmm_measure_ac_volts.py) <https://github.com/ni/nimi-python/blob/master/src/nidmm/examples/nidmm_measure_ac_volts.py>`_

nidmm_measure_capacitance.py
----------------------------

.. literalinclude:: ../../src/nidmm/examples/nidmm_measure_capacitance.py
:language: python
:linenos:
:encoding: utf8
:caption: `(nidmm_measure_capacitance.py) <https://github.com/ni/nimi-python/blob/master/src/nidmm/examples/nidmm_measure_capacitance.py>`_

nidmm_measurement.py
--------------------

Expand Down
57 changes: 57 additions & 0 deletions src/nidmm/examples/nidmm_measure_capacitance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/python

import argparse
import math
import nidmm
import re
import sys

# Only these models support capacitance measurements.
SUPPORTED_MODELS = ('4072', '4082')


def example(resource_name, options, function, range, measurements_to_average):
with nidmm.Session(resource_name=resource_name, options=options) as session:
model_match = re.search('[0-9]+', session.instrument_model)
model = model_match.group() if model_match else ''
if model not in SUPPORTED_MODELS:
print(f'{session.instrument_model} does not support capacitance measurements.\r\nSupported models: NI {", NI ".join(SUPPORTED_MODELS)}.')
return
# Resolution is ignored for capacitance and inductance, but the driver still validates it (3.5, 4.5, 5.5 or 6.5).
session.configure_measurement_digits(measurement_function=nidmm.Function[function], range=range, resolution_digits=5.5)
session.lc_number_meas_to_average = measurements_to_average
measurement = session.read()
# NI-DMM reports an underrange condition as negative infinity.
under_range = math.isinf(measurement) and measurement < 0
print(f'Measurement (Farads): {measurement}')
print(f'Signal Under Range: {under_range}')


def _main(argsv):
supported_functions = list(nidmm.Function.__members__.keys())
parser = argparse.ArgumentParser(description='Performs a single capacitance measurement using the NI-DMM API (NI 4072/4082 only).', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-n', '--resource-name', default='PXI1Slot2', help='Contains the resource_name of the device to initialize.')
parser.add_argument('-f', '--function', default='CAPACITANCE', choices=supported_functions, type=str.upper, help='Specifies the measurement_function used to acquire the measurement.')
parser.add_argument('-r', '--range', default=3e-10, type=float, help='Specifies the range for the function specified in the Measurement_Function parameter.')
parser.add_argument('-a', '--measurements-to-average', default=1, type=int, help='For the NI 4072 only, specifies the number of LC measurements that are averaged to produce one reading.')
parser.add_argument('-op', '--option-string', default='', type=str, help='Sets the initial value of certain attributes for the session.')
args = parser.parse_args(argsv)
example(args.resource_name, args.option_string, args.function, args.range, args.measurements_to_average)


def main():
_main(sys.argv[1:])


def test_example():
options = {'simulate': True, 'driver_setup': {'Model': '4082', 'BoardType': 'PXIe', }, }
example('PXI1Slot2', options, 'CAPACITANCE', 3e-10, 1)


def test_main():
cmd_line = ['--option-string', 'Simulate=1, DriverSetup=Model:4082; BoardType:PXIe', ]
_main(cmd_line)


if __name__ == '__main__':
main()
Loading