def get_args(self):
     nodeid, bname = self.get_nodeid_and_bname()
     dtype = self.dataTypeButton.get_node()
     vtype = data_type_to_variant_type(dtype)
     if vtype == ua.VariantType.ExtensionObject:
         # we currently cannot construct a complex object from a string
         var = ua.Variant()
     else:
         var = string_to_variant(self.valLineEdit.text(), vtype)
     return nodeid, bname, var, vtype, dtype.nodeid
Example #2
0
    def test_base_data_type(self):
        nint32 = self.opc.get_node(ua.ObjectIds.Int32)
        dtype = nint32.add_data_type(0, "MyCustomDataType")
        dtype2 = dtype.add_data_type(0, "MyCustomDataType2")
        self.assertEqual(ua_utils.get_base_data_type(dtype), nint32)
        self.assertEqual(ua_utils.get_base_data_type(dtype2), nint32)

        ext = self.opc.nodes.objects.add_variable(0, "MyExtensionObject", ua.Argument())
        d = ext.get_data_type()
        d = self.opc.get_node(d)
        self.assertEqual(ua_utils.get_base_data_type(d), self.opc.get_node(ua.ObjectIds.Structure))
        self.assertEqual(ua_utils.data_type_to_variant_type(d), ua.VariantType.ExtensionObject)
Example #3
0
    def _call(self):
        parent = self.node.get_parent()
        args = []
        for inp in self.inputs:
            val = string_to_variant(inp.text(), data_type_to_variant_type(inp.data_type))
            args.append(val)

        result = call_method_full(parent, self.node, *args)
        self.result_label.setText(str(result.StatusCode))

        for idx, res in enumerate(result.OutputArguments):
            self.outputs[idx].setText(val_to_string(res))
    def _call(self):
        parent = self.node.get_parent()
        args = []
        for inp in self.inputs:
            val = string_to_variant(inp.text(), data_type_to_variant_type(inp.data_type))
            args.append(val)

        result = call_method_full(parent, self.node, *args)
        self.result_label.setText(str(result.StatusCode))

        for idx, res in enumerate(result.OutputArguments):
            self.outputs[idx].setText(val_to_string(res))
Example #5
0
 def _add_design_node(self, base_struct, idx, el):
     try:
         struct_node = base_struct.get_child(f"{idx}:{el.name}")
     except ua.UaError:
         logger.warning("Could not find struct %s under %s", el.name, base_struct)
         return
     for field in el.fields:
         if hasattr(ua.ObjectIds, field.uatype):
             dtype = self.server_mgr.get_node(getattr(ua.ObjectIds, field.uatype))
         else:
             dtype = self._get_datatype_from_string(idx, field.uatype)
             if not dtype:
                 logger.warning("Could not find datatype of name %s %s", field.uatype, type(field.uatype))
                 return
         vtype = data_type_to_variant_type(dtype)
         struct_node.add_variable(idx, field.name, field.value, varianttype=vtype, datatype=dtype.nodeid)
Example #6
0
 def _add_design_node(self, base_struct, idx, el):
     try:
         struct_node = base_struct.get_child(f"{idx}:{el.name}")
     except ua.UaError:
         logger.warning("Could not find struct %s under %s", el.name, base_struct)
         return
     for field in el.fields:
         if hasattr(ua.ObjectIds, field.uatype):
             dtype = self.server_mgr.get_node(getattr(ua.ObjectIds, field.uatype))
         else:
             dtype = self._get_datatype_from_string(idx, field.uatype)
             if not dtype:
                 logger.warning("Could not find datatype of name %s %s", field.uatype, type(field.uatype))
                 return
         vtype = data_type_to_variant_type(dtype)
         struct_node.add_variable(idx, field.name, field.value, varianttype=vtype, datatype=dtype.nodeid)
Example #7
0
 def test_data_type_to_variant_type(self):
     test_data = {
         ua.ObjectIds.Boolean: ua.VariantType.Boolean,
         ua.ObjectIds.Byte: ua.VariantType.Byte,
         ua.ObjectIds.String: ua.VariantType.String,
         ua.ObjectIds.Int32: ua.VariantType.Int32,
         ua.ObjectIds.UInt32: ua.VariantType.UInt32,
         ua.ObjectIds.NodeId: ua.VariantType.NodeId,
         ua.ObjectIds.LocalizedText: ua.VariantType.LocalizedText,
         ua.ObjectIds.Structure: ua.VariantType.ExtensionObject,
         ua.ObjectIds.EnumValueType: ua.VariantType.ExtensionObject,
         ua.ObjectIds.Enumeration: ua.VariantType.Int32,  # enumeration
         ua.ObjectIds.AttributeWriteMask: ua.VariantType.UInt32,
         ua.ObjectIds.AxisScaleEnumeration: ua.VariantType.Int32  # enumeration
         }
     for dt, vdt in test_data.items():
         self.assertEqual(ua_utils.data_type_to_variant_type(self.opc.get_node(ua.NodeId(dt))), vdt)