def test_Enum_attribute(device_info): with nidmm.Session(device_info['name']) as session: session.function = nidmm.Function.AC_CURRENT assert session.function == nidmm.Function.AC_CURRENT assert type(session.function) is nidmm.Function try: session.function = nidmm.LCCalculationModel.SERIES assert False except TypeError as e: print(e) pass
def test_get_measurement_period(): with nidmm.Session( 'FakeDevice', False, True, 'Simulate=1, DriverSetup=Model:4072; BoardType:PXI') as session: session.configure_measurement_digits(nidmm.Function.DC_VOLTS, 10, 5.5) measurement_period = session.get_measurement_period() expected_period = 0.0071333333333333335 # 0.0071333333333333335 is the time required for 4072 to take a DC_VOLT measurement with range 10V on Digits_resolution 5.5 in_range = abs(measurement_period - expected_period) <= max( 1e-09 * max(abs(measurement_period), abs(expected_period)), 0.0 ) # https://stackoverflow.com/questions/5595425/what-is-the-best-way-to-compare-floats-for-almost-equality-in-python assert in_range is True
def test_acquisition_context_manager(self): self.patched_ctypes_library.niDMM_Initiate.side_effect = self.side_effects_helper.niDMM_Initiate self.patched_ctypes_library.niDMM_Abort.side_effect = self.side_effects_helper.niDMM_Abort with nidmm.Session('dev1') as session: with session.initiate(): self.patched_ctypes_library.niDMM_Initiate.assert_called_once_with( SESSION_NUM_FOR_TEST) self.patched_ctypes_library.niDMM_Abort.assert_called_once_with( SESSION_NUM_FOR_TEST) self.patched_ctypes_library.niDMM_close.assert_called_once_with( SESSION_NUM_FOR_TEST)
def example(resource_name, options, function, range, digits, samples, triggers): with nidmm.Session(resource_name=resource_name, options=options) as session: session.configure_measurement_digits( measurement_function=nidmm.Function[function], range=range, resolution_digits=digits) session.configure_multi_point(trigger_count=triggers, sample_count=samples) measurements = session.read_multi_point(array_size=samples) print('Measurements: ', measurements)
def test_warning(device_info): with nidmm.Session(device_info['name']) as session: session.configure_measurement_digits(nidmm.Function._2_WIRE_RESISTANCE, 1e6, 3.5) if not session.simulate: try: print(session.read(1000)) # Assume nothing is connected to device, overrange! assert False except nidmm.Warning as w: print(w) pass else: pytest.skip("Simulated")
def test_error_message(): try: # We pass in an invalid model name to force going to error_message with nidmm.Session( 'FakeDevice', False, True, 'Simulate=1, DriverSetup=Model:invalid_model; BoardType:PXIe'): assert False except nidmm.Error as e: assert e.code == -1074134964 assert e.description.find( 'The option string parameter contains an entry with an unknown option value.' ) != -1
def initialize_session(tsm: SMContext): """ creates the sessions for all the niDMM resource string available in the tsm context for instruments. Args: tsm (SMContext): TestStand semiconductor module context """ instrument_list = tsm.get_all_nidmm_instrument_names() for instrument in instrument_list: session = nidmm.Session(resource_name=instrument, reset_device=True) tsm.set_nidmm_session(instrument_name=instrument, session=session)
def test_cannot_add_properties_to_session(self): with nidmm.Session('dev1') as session: try: session.nonexistent_property = 5 assert False except TypeError as e: print(e) pass try: value = session.nonexistent_property # noqa: F841 assert False except AttributeError as e: print(e) pass
def example(resource_name, options, function, range, digits, points, rate): with nidmm.Session(resource_name=resource_name, options=options) as session: session.configure_waveform_acquisition( measurement_function=nidmm.Function[function], range=range, rate=rate, waveform_points=points) with session.initiate(): while True: time.sleep(0.1) backlog, acquisition_state = session.read_status() if acquisition_state == nidmm.AcquisitionStatus.FINISHED_WITH_NO_BACKLOG: break measurements = session.fetch_waveform(array_size=backlog) print(measurements)
def test_multiple_return_params(self): self.patched_ctypes_library.niDMM_GetCalDateAndTime.side_effect = self.side_effects_helper.niDMM_GetCalDateAndTime self.side_effects_helper['GetCalDateAndTime']['month'] = 6 self.side_effects_helper['GetCalDateAndTime']['day'] = 30 self.side_effects_helper['GetCalDateAndTime']['year'] = 2017 self.side_effects_helper['GetCalDateAndTime']['hour'] = 10 self.side_effects_helper['GetCalDateAndTime']['minute'] = 12 with nidmm.Session('dev1') as session: month, day, year, hour, minute = session.get_cal_date_and_time(0) assert (month == 6) assert (day == 30) assert (year == 2017) assert (hour == 10) assert (minute == 12) self.patched_ctypes_library.niDMM_GetCalDateAndTime.assert_called_once_with( SESSION_NUM_FOR_TEST, 0, ANY, ANY, ANY, ANY, ANY) assert self.patched_errors._handle_error.call_count == 2 self.patched_errors._handle_error.assert_called_with( session, self.patched_ctypes_library.niDMM_GetCalDateAndTime. return_value)
def test_ViInt32_attribute(device_info): with nidmm.Session(device_info['name']) as session: session.sample_count = 5 assert 5 == session.sample_count
def test_close(self): session = nidmm.Session('dev1') session.close() self.patched_ctypes_library.niDMM_close.assert_called_once_with( SESSION_NUM_FOR_TEST)
def test_library_singleton(device_info): with nidmm.Session(device_info['name']) as session: lib1 = session.library with nidmm.Session(device_info['name']) as session: lib2 = session.library assert lib1 == lib2
def test_method_call_with_one_parameter(device_info): with nidmm.Session(device_info['name']) as session: session.configure_power_line_frequency(60)
def test_self_test(device_info): with nidmm.Session(device_info['name']) as session: result, message = session.self_test() assert result == 0 assert message == 'Self Test passed.'
default='PXI1Slot2', help='Resource name of a National Instruments Digital Multimeter.') parser.add_argument('-f', '--function', default='DC_VOLTS', choices=nidmm.Function.__members__.keys(), type=str.upper, help='Measurement function.') parser.add_argument('-r', '--range', default=10, type=float, help='Measurement range.') parser.add_argument('-d', '--digits', default=6.5, type=float, help='Digits of resolution for the measurement.') args = parser.parse_args() try: with nidmm.Session(args.name) as session: session.configure_measurement_digits(nidmm.Function[args.function], args.range, args.digits) print( session.read(1000) ) # TODO(marcoskirsch): Remove once we have default in the method except nidmm.Error as e: sys.stderr.write(str(e)) sys.exit(e.code)
def test_method_call_with_zero_parameter(device_info): with nidmm.Session(device_info['name']) as session: assert session.get_aperture_time_info()[1] == 0 # Assuming default aperture time unit will be seconds
def test_get_dev_temp(device_info): with nidmm.Session(device_info['name']) as session: temperature = session.get_dev_temp('') print(temperature) assert 20 <= temperature <= 50
def test_ViString_attribute(device_info): with nidmm.Session(device_info['name']) as session: assert device_info['name'] == session.io_resource_descriptor
def test_ViBoolean_attribute(device_info): with nidmm.Session(device_info['name']) as session: assert session.interchange_check is False
def test_take_simple_measurement_works(device_info): with nidmm.Session(device_info['name']) as session: session.configure_measurement_digits(nidmm.Function.DC_CURRENT, 1, 5.5) assert session.read(1000) != 0 # Assumes DMM reading is not exactly zero to support non-connected modules and simulated modules.
def session(): with nidmm.Session('FakeDevice', False, True, 'Simulate=1, DriverSetup=Model:4082; BoardType:PXIe') as simulated_session: yield simulated_session
def test_ViReal64_attribute(device_info): with nidmm.Session(device_info['name']) as session: session.range = 50 # Coerces up! assert 100 == session.range