From 056660c0071107de257842c1ca109ca3f709bc30 Mon Sep 17 00:00:00 2001 From: Subash Suresh Date: Wed, 14 Dec 2022 18:17:22 +0530 Subject: [PATCH 1/6] add instrument type for corresponding measurements --- examples/nidcpower_source_dc_voltage/measurement.py | 2 +- .../nidcpower_source_dc_voltage_with_labview_ui/measurement.py | 2 +- examples/nidmm_measurement/measurement.py | 2 +- examples/nifgen_standard_function/measurement.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/nidcpower_source_dc_voltage/measurement.py b/examples/nidcpower_source_dc_voltage/measurement.py index 884223487..bb89ce98e 100644 --- a/examples/nidcpower_source_dc_voltage/measurement.py +++ b/examples/nidcpower_source_dc_voltage/measurement.py @@ -34,7 +34,7 @@ @measurement_service.register_measurement -@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1") +@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1", instrument_type="niDCPower") @measurement_service.configuration("voltage_level", nims.DataType.Double, 6.0) @measurement_service.configuration("voltage_level_range", nims.DataType.Double, 6.0) @measurement_service.configuration("current_limit", nims.DataType.Double, 0.01) diff --git a/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py b/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py index c4a5666d2..eb92cd7d5 100644 --- a/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py +++ b/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py @@ -34,7 +34,7 @@ @measurement_service.register_measurement -@measurement_service.configuration("pin_names", nims.DataType.PinArray1D, ["Pin1"]) +@measurement_service.configuration("pin_names", nims.DataType.PinArray1D, ["Pin1"], instrument_type="niDCPower") @measurement_service.configuration("voltage_level", nims.DataType.Double, 6.0) @measurement_service.configuration("voltage_level_range", nims.DataType.Double, 6.0) @measurement_service.configuration("current_limit", nims.DataType.Double, 0.01) diff --git a/examples/nidmm_measurement/measurement.py b/examples/nidmm_measurement/measurement.py index 0b2d4aad6..cc8ef5209 100644 --- a/examples/nidmm_measurement/measurement.py +++ b/examples/nidmm_measurement/measurement.py @@ -45,7 +45,7 @@ @measurement_service.register_measurement -@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1") +@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1", instrument_type="niDMM") @measurement_service.configuration("measurement_type", nims.DataType.String, "DC Volts") @measurement_service.configuration("range", nims.DataType.Double, 10.0) @measurement_service.configuration("resolution_digits", nims.DataType.Double, 5.5) diff --git a/examples/nifgen_standard_function/measurement.py b/examples/nifgen_standard_function/measurement.py index 1f2bb88d2..1e97673d1 100644 --- a/examples/nifgen_standard_function/measurement.py +++ b/examples/nifgen_standard_function/measurement.py @@ -42,7 +42,7 @@ @measurement_service.register_measurement # TODO: Rename pin_name to pin_names and make it PinArray1D -@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1") +@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1", instrument_type="niFGen") @measurement_service.configuration("waveform_type", nims.DataType.String, "Sine") @measurement_service.configuration("frequency", nims.DataType.Double, 1.0e6) @measurement_service.configuration("amplitude", nims.DataType.Double, 2.0) From 99071315d47d29ea9ceeffd56f9a13d1c2f0f466 Mon Sep 17 00:00:00 2001 From: Subash Suresh Date: Wed, 14 Dec 2022 19:07:47 +0530 Subject: [PATCH 2/6] Update for doc instrument type param --- .../nidcpower_source_dc_voltage/measurement.py | 4 +++- .../measurement.py | 4 +++- ni_measurement_service/measurement/service.py | 15 ++++++++++++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/examples/nidcpower_source_dc_voltage/measurement.py b/examples/nidcpower_source_dc_voltage/measurement.py index bb89ce98e..c89d0eca0 100644 --- a/examples/nidcpower_source_dc_voltage/measurement.py +++ b/examples/nidcpower_source_dc_voltage/measurement.py @@ -34,7 +34,9 @@ @measurement_service.register_measurement -@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1", instrument_type="niDCPower") +@measurement_service.configuration( + "pin_name", nims.DataType.Pin, "Pin1", instrument_type="niDCPower" +) @measurement_service.configuration("voltage_level", nims.DataType.Double, 6.0) @measurement_service.configuration("voltage_level_range", nims.DataType.Double, 6.0) @measurement_service.configuration("current_limit", nims.DataType.Double, 0.01) diff --git a/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py b/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py index eb92cd7d5..041523775 100644 --- a/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py +++ b/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py @@ -34,7 +34,9 @@ @measurement_service.register_measurement -@measurement_service.configuration("pin_names", nims.DataType.PinArray1D, ["Pin1"], instrument_type="niDCPower") +@measurement_service.configuration( + "pin_names", nims.DataType.PinArray1D, ["Pin1"], instrument_type="niDCPower" +) @measurement_service.configuration("voltage_level", nims.DataType.Double, 6.0) @measurement_service.configuration("voltage_level_range", nims.DataType.Double, 6.0) @measurement_service.configuration("current_limit", nims.DataType.Double, 0.01) diff --git a/ni_measurement_service/measurement/service.py b/ni_measurement_service/measurement/service.py index 88a57ac9f..d1da4c4e0 100644 --- a/ni_measurement_service/measurement/service.py +++ b/ni_measurement_service/measurement/service.py @@ -166,6 +166,7 @@ def measure(configuration1, configuration2): def configuration( self, display_name: str, type: DataType, default_value: Any, *, instrument_type: str = "" ) -> Callable: + """Add a configuration parameter to a measurement function. This decorator maps the measurement service's configuration parameters @@ -184,9 +185,17 @@ def configuration( default_value (Any): Default value of the configuration. instrument_type (str): Optional. - Instrument type to be used to show instrument specific values to the configurations. - This is only supported when configuration type is DataType.Pin. - + Filter pins by instrument type. This is only supported when configuration type + is DataType.Pin. Pin maps have built in instrument definitions using the following + NI driver based instrument types: + "niDCPower" + "niDigitalPattern" + "niScope" + "niDMM" + "niDAQmx" + "niFGen". + For custom instruments the user defined instrument type id is defined in the + pin map file. Returns ------- Callable: Callable that takes in Any Python Function From 96456932bff3e7474a0167ca55860b3eb2d1c03b Mon Sep 17 00:00:00 2001 From: Subash Suresh Date: Wed, 14 Dec 2022 19:20:36 +0530 Subject: [PATCH 3/6] fix lint errors --- ni_measurement_service/measurement/service.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ni_measurement_service/measurement/service.py b/ni_measurement_service/measurement/service.py index d1da4c4e0..cc0b589b6 100644 --- a/ni_measurement_service/measurement/service.py +++ b/ni_measurement_service/measurement/service.py @@ -166,7 +166,6 @@ def measure(configuration1, configuration2): def configuration( self, display_name: str, type: DataType, default_value: Any, *, instrument_type: str = "" ) -> Callable: - """Add a configuration parameter to a measurement function. This decorator maps the measurement service's configuration parameters @@ -194,8 +193,9 @@ def configuration( "niDMM" "niDAQmx" "niFGen". - For custom instruments the user defined instrument type id is defined in the + For custom instruments the user defined instrument type id is defined in the pin map file. + Returns ------- Callable: Callable that takes in Any Python Function From 2e7e42ea01749e8d5663168d3c1112167c926696 Mon Sep 17 00:00:00 2001 From: Subash Suresh Date: Thu, 15 Dec 2022 13:16:32 +0530 Subject: [PATCH 4/6] use instrument type constants --- examples/nidcpower_source_dc_voltage/measurement.py | 5 ++++- .../measurement.py | 5 ++++- examples/nidmm_measurement/measurement.py | 7 ++++++- examples/nifgen_standard_function/measurement.py | 7 ++++++- ni_measurement_service/measurement/service.py | 12 ++++-------- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/examples/nidcpower_source_dc_voltage/measurement.py b/examples/nidcpower_source_dc_voltage/measurement.py index c89d0eca0..b169921fd 100644 --- a/examples/nidcpower_source_dc_voltage/measurement.py +++ b/examples/nidcpower_source_dc_voltage/measurement.py @@ -35,7 +35,10 @@ @measurement_service.register_measurement @measurement_service.configuration( - "pin_name", nims.DataType.Pin, "Pin1", instrument_type="niDCPower" + "pin_name", + nims.DataType.Pin, + "Pin1", + instrument_type=nims.session_management.INSTRUMENT_TYPE_NI_DCPOWER, ) @measurement_service.configuration("voltage_level", nims.DataType.Double, 6.0) @measurement_service.configuration("voltage_level_range", nims.DataType.Double, 6.0) diff --git a/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py b/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py index 041523775..2b85e5cf6 100644 --- a/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py +++ b/examples/nidcpower_source_dc_voltage_with_labview_ui/measurement.py @@ -35,7 +35,10 @@ @measurement_service.register_measurement @measurement_service.configuration( - "pin_names", nims.DataType.PinArray1D, ["Pin1"], instrument_type="niDCPower" + "pin_names", + nims.DataType.PinArray1D, + ["Pin1"], + instrument_type=nims.session_management.INSTRUMENT_TYPE_NI_DCPOWER, ) @measurement_service.configuration("voltage_level", nims.DataType.Double, 6.0) @measurement_service.configuration("voltage_level_range", nims.DataType.Double, 6.0) diff --git a/examples/nidmm_measurement/measurement.py b/examples/nidmm_measurement/measurement.py index cc8ef5209..e8abbad33 100644 --- a/examples/nidmm_measurement/measurement.py +++ b/examples/nidmm_measurement/measurement.py @@ -45,7 +45,12 @@ @measurement_service.register_measurement -@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1", instrument_type="niDMM") +@measurement_service.configuration( + "pin_name", + nims.DataType.Pin, + "Pin1", + instrument_type=nims.session_management.INSTRUMENT_TYPE_NI_DMM, +) @measurement_service.configuration("measurement_type", nims.DataType.String, "DC Volts") @measurement_service.configuration("range", nims.DataType.Double, 10.0) @measurement_service.configuration("resolution_digits", nims.DataType.Double, 5.5) diff --git a/examples/nifgen_standard_function/measurement.py b/examples/nifgen_standard_function/measurement.py index 1e97673d1..b049c89ae 100644 --- a/examples/nifgen_standard_function/measurement.py +++ b/examples/nifgen_standard_function/measurement.py @@ -42,7 +42,12 @@ @measurement_service.register_measurement # TODO: Rename pin_name to pin_names and make it PinArray1D -@measurement_service.configuration("pin_name", nims.DataType.Pin, "Pin1", instrument_type="niFGen") +@measurement_service.configuration( + "pin_name", + nims.DataType.Pin, + "Pin1", + instrument_type=nims.session_management.INSTRUMENT_TYPE_NI_FGEN, +) @measurement_service.configuration("waveform_type", nims.DataType.String, "Sine") @measurement_service.configuration("frequency", nims.DataType.Double, 1.0e6) @measurement_service.configuration("amplitude", nims.DataType.Double, 2.0) diff --git a/ni_measurement_service/measurement/service.py b/ni_measurement_service/measurement/service.py index cc0b589b6..fec78c996 100644 --- a/ni_measurement_service/measurement/service.py +++ b/ni_measurement_service/measurement/service.py @@ -185,14 +185,10 @@ def configuration( instrument_type (str): Optional. Filter pins by instrument type. This is only supported when configuration type - is DataType.Pin. Pin maps have built in instrument definitions using the following - NI driver based instrument types: - "niDCPower" - "niDigitalPattern" - "niScope" - "niDMM" - "niDAQmx" - "niFGen". + is DataType.Pin. Pin maps have built in instrument definitions using the + NI driver based instrument type ids. These can be found as constants + in `nims.session_management`. For example, for an NI DCPower instrument + the instrument type is `nims.session_management.INSTRUMENT_TYPE_NI_DCPOWER`. For custom instruments the user defined instrument type id is defined in the pin map file. From 2373e97037072275027061bcd4b9707b087f278b Mon Sep 17 00:00:00 2001 From: Subash Suresh Date: Thu, 15 Dec 2022 22:51:50 +0530 Subject: [PATCH 5/6] added instrument type for niscope_acquire_waveform --- examples/niscope_acquire_waveform/measurement.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/niscope_acquire_waveform/measurement.py b/examples/niscope_acquire_waveform/measurement.py index 4371d8be3..897fc279b 100644 --- a/examples/niscope_acquire_waveform/measurement.py +++ b/examples/niscope_acquire_waveform/measurement.py @@ -50,7 +50,12 @@ @measurement_service.register_measurement # TODO: Make pin_names PinArray1D -@measurement_service.configuration("pin_names", nims.DataType.Pin, "Pin1,Pin2,Pin3,Pin4") +@measurement_service.configuration( + "pin_names", + nims.DataType.Pin, + "Pin1,Pin2,Pin3,Pin4", + instrument_type=nims.session_management.INSTRUMENT_TYPE_NI_SCOPE, +) @measurement_service.configuration("vertical_range", nims.DataType.Double, 5.0) @measurement_service.configuration("vertical_coupling", nims.DataType.String, "DC") @measurement_service.configuration("input_impedance", nims.DataType.Double, 1e6) From ced64a580d0645e91f4dc62bbfa94a14d82994e4 Mon Sep 17 00:00:00 2001 From: Subash Suresh Date: Thu, 15 Dec 2022 22:59:10 +0530 Subject: [PATCH 6/6] update niscope example --- examples/niscope_acquire_waveform/measurement.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/niscope_acquire_waveform/measurement.py b/examples/niscope_acquire_waveform/measurement.py index 897fc279b..9e40bdb4d 100644 --- a/examples/niscope_acquire_waveform/measurement.py +++ b/examples/niscope_acquire_waveform/measurement.py @@ -61,7 +61,12 @@ @measurement_service.configuration("input_impedance", nims.DataType.Double, 1e6) @measurement_service.configuration("min_sample_rate", nims.DataType.Double, 10e6) @measurement_service.configuration("min_record_length", nims.DataType.Int32, 40000) -@measurement_service.configuration("trigger_source", nims.DataType.Pin, "Pin1") +@measurement_service.configuration( + "trigger_source", + nims.DataType.Pin, + "Pin1", + instrument_type=nims.session_management.INSTRUMENT_TYPE_NI_SCOPE, +) @measurement_service.configuration("trigger_level", nims.DataType.Double, 0.5) @measurement_service.configuration("trigger_slope", nims.DataType.String, "Positive") @measurement_service.configuration("auto_trigger", nims.DataType.Boolean, False)