def __init__(self, identifier=None, namespaceidx=0, nodeidtype=None): self.Identifier = identifier self.NamespaceIndex = namespaceidx self.NodeIdType = nodeidtype self.NamespaceUri = "" self.ServerIndex = 0 self._freeze = True if self.Identifier is None: self.Identifier = 0 self.NodeIdType = NodeIdType.TwoByte return if self.NodeIdType is None: if isinstance(self.Identifier, int): self.NodeIdType = NodeIdType.Numeric elif isinstance(self.Identifier, str): self.NodeIdType = NodeIdType.String elif isinstance(self.Identifier, bytes): self.NodeIdType = NodeIdType.ByteString elif isinstance(self.Identifier, uuid.UUID): self.NodeIdType = NodeIdType.Guid else: raise UaError( "NodeId: Could not guess type of NodeId, set NodeIdType")
def to_binary(uatype, val): """ Pack a python object to binary given a string defining its type """ if uatype.startswith("ListOf"): #if isinstance(val, (list, tuple)): return list_to_binary(uatype[6:], val) elif isinstance(uatype, (str, unicode)) and hasattr(ua.VariantType, uatype): vtype = getattr(ua.VariantType, uatype) return pack_uatype(vtype, val) elif isinstance(uatype, (str, unicode)) and hasattr(Primitives, uatype): return getattr(Primitives, uatype).pack(val) elif isinstance(val, (IntEnum, Enum)): return Primitives.UInt32.pack(val.value) elif isinstance(val, ua.NodeId): return nodeid_to_binary(val) elif isinstance(val, ua.Variant): return variant_to_binary(val) elif hasattr(val, "ua_types"): return struct_to_binary(val) else: raise UaError("No known way to pack {} of type {} to ua binary".format( val, uatype))
def __init__(self, val): self.name = "Custom" self.value = val if self.value > 0b00111111: raise UaError("Cannot create VariantType. VariantType must be {0} > x > {1}, received {2}".format(0b111111, 25, val))
def __init__(self, name=None, namespaceidx=0): if not isinstance(namespaceidx, int): raise UaError("namespaceidx must be an int") self.NamespaceIndex = namespaceidx self.Name = name self._freeze = True
def _get_val_type(self, obj, attname): for name, uatype in obj.ua_types: if name == attname: return uatype raise UaError("Attribute '{}' defined in xml is not found in object '{}'".format(attname, ext))