def __init__(self):
     self.BooleanValue = True
     self.SByteValue = 0
     self.ByteValue = 0
     self.Int16Value = 0
     self.UInt16Value = 0
     self.Int32Value = 0
     self.UInt32Value = 0
     self.Int64Value = 0
     self.UInt64Value = 0
     self.FloatValue = 0
     self.DoubleValue = 0
     self.StringValue = ''
     self.DateTimeValue = datetime.utcnow()
     self.GuidValue = uuid.uuid4()
     self.ByteStringValue = b''
     self.XmlElementValue = ua.XmlElement()
     self.NodeIdValue = ua.NodeId()
     self.ExpandedNodeIdValue = ua.ExpandedNodeId()
     self.QualifiedNameValue = ua.QualifiedName()
     self.LocalizedTextValue = ua.LocalizedText()
     self.StatusCodeValue = ua.StatusCode()
     self.VariantValue = ua.Variant()
     self.EnumerationValue = 0
     self.StructureValue = ua.ExtensionObject()
     self.Number = ua.Variant()
     self.Integer = ua.Variant()
     self.UInteger = ua.Variant()
Exemple #2
0
    def test_string_to_val_xml_element(self):
        string = "<p> titi toto </p>"
        obj = ua.XmlElement(string)

        self.assertEqual(string_to_val(string, ua.VariantType.XmlElement), obj)
        self.assertEqual(val_to_string(obj), string)

        b = struct_to_binary(obj)
        obj2 = struct_from_binary(ua.XmlElement, ua.utils.Buffer(b))
        self.assertEqual(obj, obj2)
Exemple #3
0
def string_to_val(string, vtype):
    """
    Convert back a string to a python or python-opcua object
    Note: no error checking is done here, supplying null strings could raise exceptions (datetime and guid)
    """
    string = string.strip()
    if string.startswith("["):
        string = string[1:-1]
        var = []
        for s in string.split(","):
            s = s.strip()
            val = string_to_val(s, vtype)
            var.append(val)
        return var

    if vtype == ua.VariantType.Null:
        val = None
    elif vtype == ua.VariantType.Boolean:
        if string in ("True", "true", "on", "On", "1"):
            val = True
        else:
            val = False
    elif vtype in (ua.VariantType.SByte, ua.VariantType.Int16,
                   ua.VariantType.Int32, ua.VariantType.Int64):
        val = int(string)
    elif vtype in (ua.VariantType.Byte, ua.VariantType.UInt16,
                   ua.VariantType.UInt32, ua.VariantType.UInt64):
        val = int(string)
    elif vtype in (ua.VariantType.Float, ua.VariantType.Double):
        val = float(string)
    elif vtype == ua.VariantType.XmlElement:
        val = ua.XmlElement(string)
    elif vtype == ua.VariantType.String:
        val = string
    elif vtype == ua.VariantType.ByteString:
        val = string.encode()
    elif vtype in (ua.VariantType.NodeId, ua.VariantType.ExpandedNodeId):
        val = ua.NodeId.from_string(string)
    elif vtype == ua.VariantType.QualifiedName:
        val = ua.QualifiedName.from_string(string)
    elif vtype == ua.VariantType.DateTime:
        val = parser.parse(string)
    elif vtype == ua.VariantType.LocalizedText:
        val = ua.LocalizedText(string)
    elif vtype == ua.VariantType.StatusCode:
        val = ua.StatusCode(string)
    elif vtype == ua.VariantType.Guid:
        val = uuid.UUID(string)
    else:
        # FIXME: Some types are probably missing!
        raise NotImplementedError
    return val
Exemple #4
0
    def test_custom_structs_array(self):
        xmlpath = "tests/example.bsd"
        c = StructGenerator()
        c.make_model_from_file(xmlpath)
        c.save_to_file("tests/structures.py")
        import structures as s

        # test with default values
        v = s.ArrayValueDataType()
        data = struct_to_binary(v)
        v2 = struct_from_binary(s.ArrayValueDataType, ua.utils.Buffer(data))

        # set some values
        v = s.ArrayValueDataType()
        v.SbyteValue = [1]
        v.ByteValue = [2]
        v.Int16Value = [3]
        v.UInt16Value = [4]
        v.Int32Value = [5]
        v.UInt32Value = [6]
        v.Int64Value = [7]
        v.UInt64Value = [8]
        v.FloatValue = [9.0]
        v.DoubleValue = [10.0]
        v.StringValue = ["elleven"]
        v.DateTimeValue = [datetime.utcnow()]
        #self.GuidValue = uuid.uudib"14"
        v.ByteStringValue = [b"fifteen", b"sixteen"]
        v.XmlElementValue = [ua.XmlElement("<toto>titi</toto>")]
        v.NodeIdValue = [
            ua.NodeId.from_string("ns=4;i=9999"),
            ua.NodeId.from_string("i=6")
        ]
        #self.ExpandedNodeIdValue =
        #self.QualifiedNameValue =
        #self.LocalizedTextValue =
        #self.StatusCodeValue =
        #self.VariantValue =
        #self.EnumerationValue =
        #self.StructureValue =
        #self.Number =
        #self.Integer =
        #self.UInteger =

        data = struct_to_binary(v)
        v2 = struct_from_binary(s.ArrayValueDataType, ua.utils.Buffer(data))
        self.assertEqual(v.NodeIdValue, v2.NodeIdValue)
        print(v2.NodeIdValue)
    def test_custom_structs(self):
        xmlpath = "tests/example.bsd"
        c = StructGenerator()
        c.make_model_from_file(xmlpath)
        c.save_to_file("structures.py")
        import structures as s

        # test with default values
        v = s.ScalarValueDataType()
        data = v.to_binary()
        v2 = s.ScalarValueDataType.from_binary(ua.utils.Buffer(data))


        # set some values
        v = s.ScalarValueDataType()
        v.SbyteValue = 1
        v.ByteValue = 2
        v.Int16Value = 3
        v.UInt16Value = 4
        v.Int32Value = 5
        v.UInt32Value = 6
        v.Int64Value = 7
        v.UInt64Value = 8
        v.FloatValue = 9.0
        v.DoubleValue = 10.0
        v.StringValue = "elleven"
        v.DateTimeValue = datetime.utcnow()
        #self.GuidValue = uuid.uudib"14"
        v.ByteStringValue = b"fifteen"
        v.XmlElementValue = ua.XmlElement("<toto>titi</toto>")
        v.NodeIdValue = ua.NodeId.from_string("ns=4;i=9999")
        #self.ExpandedNodeIdValue =
        #self.QualifiedNameValue =
        #self.LocalizedTextValue =
        #self.StatusCodeValue =
        #self.VariantValue =
        #self.EnumerationValue =
        #self.StructureValue =
        #self.Number =
        #self.Integer =
        #self.UInteger =


        data = v.to_binary()
        v2 = s.ScalarValueDataType.from_binary(ua.utils.Buffer(data))
        self.assertEqual(v.NodeIdValue, v2.NodeIdValue)
 def __init__(self):
     self.BooleanDataType = True
     self.SByteDataType = 0
     self.ByteDataType = 0
     self.Int16DataType = 0
     self.UInt16DataType = 0
     self.Int32DataType = 0
     self.UInt32DataType = 0
     self.Int64DataType = 0
     self.UInt64DataType = 0
     self.FloatDataType = 0
     self.DoubleDataType = 0
     self.StringDataType = ''
     self.DateTimeDataType = datetime.utcnow()
     self.GuidDataType = uuid.uuid4()
     self.ByteStringDataType = b''
     self.XmlElementDataType = ua.XmlElement()
     self.NodeIdDataType = ua.NodeId()
     self.ExpandedNodeIdDataType = ua.ExpandedNodeId()
     self.QualifiedNameDataType = ua.QualifiedName()
     self.LocalizedTextDataType = ua.LocalizedText()
     self.StatusCodeDataType = ua.StatusCode()
     self.VariantDataType = ua.Variant()