def print_device_info(nodemap): """ This function prints the device information of the camera from the transport layer; please see NodeMapInfo example for more in-depth comments on printing device information from the nodemap. :param nodemap: Transport layer device nodemap. :type nodemap: INodeMap :returns: True if successful, False otherwise. :rtype: bool """ print('*** DEVICE INFORMATION ***\n') try: result = True node_device_information = PySpin.CCategoryPtr(nodemap.GetNode('DeviceInformation')) if PySpin.IsAvailable(node_device_information) and PySpin.IsReadable(node_device_information): features = node_device_information.GetFeatures() for feature in features: node_feature = PySpin.CValuePtr(feature) print('%s: %s' % (node_feature.GetName(), node_feature.ToString() if PySpin.IsReadable(node_feature) else 'Node not readable')) else: print('Device control information not available.') except PySpin.SpinnakerException as ex: print('Error: %s' % ex) return False return result
def print_value_node(node, level): """ Retrieves and prints the display name and value of all node types as value nodes. A value node is a general node type that allows for the reading and writing of any node type as a string. :param node: Node to get information from. :type node: INode :param level: Depth to indent output. :type level: int :return: True if successful, False otherwise. :rtype: bool """ try: result = True # Create value node node_value = PySpin.CValuePtr(node) # Retrieve display name # # *** NOTES *** # A node's 'display name' is generally more appropriate for output and # user interaction whereas its 'name' is what the camera understands. # Generally, its name is the same as its display name but without # spaces - for instance, the name of the node that houses a camera's # serial number is 'DeviceSerialNumber' while its display name is # 'Device Serial Number'. display_name = node_value.GetDisplayName() # Retrieve value of any node type as string # # *** NOTES *** # Because value nodes return any node type as a string, it can be much # easier to deal with nodes as value nodes rather than their actual # individual types. value = node_value.ToString() # Cap length at MAX_CHARS value = value[:MAX_CHARS] + '...' if len(value) > MAX_CHARS else value # Print value print_with_indent(level, "%s: %s" % (display_name, value)) except PySpin.SpinnakerException as ex: print "Error: %s" % ex return False return result