Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
We need to deal with a range ('0-3' or '0:3'), a list ('0,1,2,3') and a single item
'''
# First we deal with a list
rep_cap_list = repeated_capability.split(',')
if len(rep_cap_list) > 1:
# We have a list so call ourselves again to let the iterable instance handle it
return _convert_repeated_capabilities(rep_cap_list, prefix)
# Now we deal with ranges
# We remove any prefix and change ':' to '-'
r = repeated_capability.strip().replace(prefix, '').replace(':', '-')
rc = r.split('-')
if len(rc) > 1:
if len(rc) > 2:
raise errors.InvalidRepeatedCapabilityError("Multiple '-' or ':'", repeated_capability)
start = int(rc[0])
end = int(rc[1])
if end < start:
rng = range(start, end - 1, -1)
else:
rng = range(start, end + 1)
return _convert_repeated_capabilities(rng, prefix)
# If we made it here, it must be a simple item so we remove any prefix and return
return [repeated_capability.replace(prefix, '').strip()]
+-----------------------------------+---+----------------------+
| NIDMM_VAL_INTERNAL_AREA (default) | 0 | Self-Calibration |
+-----------------------------------+---+----------------------+
| NIDMM_VAL_EXTERNAL_AREA | 1 | External Calibration |
+-----------------------------------+---+----------------------+
Note: The NI 4065 does not support self-calibration.
Returns:
temperature (float): Returns the **temperature** during the last calibration.
'''
vi_ctype = visatype.ViSession(self._vi) # case 1
cal_type_ctype = visatype.ViInt32(cal_type) # case 9
temperature_ctype = visatype.ViReal64() # case 14
error_code = self._library.niDMM_GetLastCalTemp(vi_ctype, cal_type_ctype, ctypes.pointer(temperature_ctype))
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
return float(temperature_ctype.value)
nidmm.Session object, then the method will use all repeated capabilities in the session.
You can specify a subset of repeated capabilities using the Python index notation on an
nidmm.Session instance, and calling this method on the result.:
session['0,1']._set_attribute_vi_boolean(attribute_id, attribute_value)
Args:
attribute_id (int): Pass the ID of an attribute.
attribute_value (bool): Pass the value that you want to set the attribute to.
'''
vi_ctype = visatype.ViSession(self._vi) # case 1
channel_name_ctype = ctypes.create_string_buffer(self._repeated_capability.encode(self._encoding)) # case 2
attribute_id_ctype = visatype.ViAttr(attribute_id) # case 9
attribute_value_ctype = visatype.ViBoolean(attribute_value) # case 9
error_code = self._library.niDMM_SetAttributeViBoolean(vi_ctype, channel_name_ctype, attribute_id_ctype, attribute_value_ctype)
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
return
def _get_library_name():
try:
return ctypes.util.find_library(_library_info[platform.system()][platform.architecture()[0]]['name']) # We find and return full path to the DLL
except KeyError:
raise errors.UnsupportedConfigurationError
Returns the library.Library singleton for nidmm.
'''
global _instance
global _instance_lock
with _instance_lock:
if _instance is None:
try:
library_type = _get_library_type()
if library_type == 'windll':
ctypes_library = ctypes.WinDLL(_get_library_name())
else:
assert library_type == 'cdll'
ctypes_library = ctypes.CDLL(_get_library_name())
except OSError:
raise errors.DriverNotInstalledError()
_instance = _library.Library(ctypes_library)
return _instance
def _get_library_type():
try:
return _library_info[platform.system()][platform.architecture()[0]]['type']
except KeyError:
raise errors.UnsupportedConfigurationError
'''
try:
_, error_string = self._get_error()
return error_string
except errors.Error:
pass
try:
'''
It is expected for _get_error to raise when the session is invalid
(IVI spec requires GetError to fail).
Use _error_message instead. It doesn't require a session.
'''
error_string = self._error_message(error_code)
return error_string
except errors.Error:
return "Failed to retrieve error description."
Returns the library.Library singleton for nidmm.
'''
global _instance
global _instance_lock
with _instance_lock:
if _instance is None:
try:
library_type = _get_library_type()
if library_type == 'windll':
ctypes_library = ctypes.WinDLL(_get_library_name())
else:
assert library_type == 'cdll'
ctypes_library = ctypes.CDLL(_get_library_name())
except OSError:
raise errors.DriverNotInstalledError()
_instance = _library.Library(ctypes_library)
return _instance
Each instance should return a list of strings, without prefix
- '0' --> ['0']
- 0 --> ['0']
- '0, 1' --> ['0', '1']
- 'ScriptTrigger0, ScriptTrigger1' --> ['0', '1']
- '0-1' --> ['0', '1']
- '0:1' --> ['0', '1']
- '0-1,4' --> ['0', '1', '4']
- range(0, 2) --> ['0', '1']
- slice(0, 2) --> ['0', '1']
- (0, 1, 4) --> ['0', '1', '4']
- ('0-1', 4) --> ['0', '1', '4']
- (slice(0, 1), '2', [4, '5-6'], '7-9', '11:14', '16, 17') -->
['0', '2', '4', '5', '6', '7', '8', '9', '11', '12', '13', '14', '16', '17']
'''
raise errors.InvalidRepeatedCapabilityError('Invalid type', type(arg))