예제 #1
0
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
예제 #2
0
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
예제 #3
0
 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)
예제 #5
0
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")
예제 #6
0
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
예제 #7
0
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)
예제 #8
0
 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
예제 #9
0
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)
예제 #10
0
 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)
예제 #11
0
def test_ViInt32_attribute(device_info):
    with nidmm.Session(device_info['name']) as session:
        session.sample_count = 5
        assert 5 == session.sample_count
예제 #12
0
 def test_close(self):
     session = nidmm.Session('dev1')
     session.close()
     self.patched_ctypes_library.niDMM_close.assert_called_once_with(
         SESSION_NUM_FOR_TEST)
예제 #13
0
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
예제 #14
0
def test_method_call_with_one_parameter(device_info):
    with nidmm.Session(device_info['name']) as session:
        session.configure_power_line_frequency(60)
예제 #15
0
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.'
예제 #16
0
    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)
예제 #17
0
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
예제 #18
0
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
예제 #19
0
def test_ViString_attribute(device_info):
    with nidmm.Session(device_info['name']) as session:
        assert device_info['name'] == session.io_resource_descriptor
예제 #20
0
def test_ViBoolean_attribute(device_info):
    with nidmm.Session(device_info['name']) as session:
        assert session.interchange_check is False
예제 #21
0
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.
예제 #22
0
def session():
    with nidmm.Session('FakeDevice', False, True, 'Simulate=1, DriverSetup=Model:4082; BoardType:PXIe') as simulated_session:
        yield simulated_session
예제 #23
0
def test_ViReal64_attribute(device_info):
    with nidmm.Session(device_info['name']) as session:
        session.range = 50 # Coerces up!
        assert 100 == session.range