示例#1
0
 def _show_timestamps(self, item, dv):
     #while item.hasChildren():
         #self.model.removeRow(0, item.index())
     string = val_to_string(dv.ServerTimestamp)
     item.appendRow([QStandardItem("Server Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
     string = val_to_string(dv.SourceTimestamp)
     item.appendRow([QStandardItem("Source Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
示例#2
0
 def _show_attrs(self, node):
     try:
         attrs = self.uaclient.get_all_attrs(node)
     except Exception as ex:
         self.window.show_error(ex)
         raise
     self.model.setHorizontalHeaderLabels(['Attribute', 'Value', 'DataType'])
     for name, dv in attrs:
         if name == "DataType":
             if isinstance(dv.Value.Value.Identifier, int) and dv.Value.Value.Identifier < 63:
                 string = ua.DataType_to_VariantType(dv.Value.Value).name
             elif dv.Value.Value.Identifier in ua.ObjectIdNames:
                 string = ua.ObjectIdNames[dv.Value.Value.Identifier]
             else:
                 string = dv.Value.Value.to_string()
         elif name in ("AccessLevel", "UserAccessLevel"):
             string = ",".join([e.name for e in ua.int_to_AccessLevel(dv.Value.Value)])
         elif name in ("WriteMask", "UserWriteMask"):
             string = ",".join([e.name for e in ua.int_to_WriteMask(dv.Value.Value)])
         elif name in ("EventNotifier"):
             string = ",".join([e.name for e in ua.int_to_EventNotifier(dv.Value.Value)])
         else:
             string = variant_to_string(dv.Value)
         name_item = QStandardItem(name)
         vitem = QStandardItem(string)
         vitem.setData(dv.Value)
         self.model.appendRow([name_item, vitem, QStandardItem(dv.Value.VariantType.name)])
         if name == "Value":
             string = val_to_string(dv.ServerTimestamp)
             name_item.appendRow([QStandardItem("Server Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
             string = val_to_string(dv.SourceTimestamp)
             name_item.appendRow([QStandardItem("Source Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
示例#3
0
 def _show_timestamps(self, item, dv):
     while item.hasChildren():
         self.model.removeRow(0, item.index())
     string = val_to_string(dv.ServerTimestamp)
     item.appendRow([QStandardItem("Server Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
     string = val_to_string(dv.SourceTimestamp)
     item.appendRow([QStandardItem("Source Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
示例#4
0
    def _show_attrs(self):
        attrs = self.get_all_attrs()
        self.model.setHorizontalHeaderLabels(['Attribute', 'Value', 'DataType'])
        for attr, dv in attrs:
            if attr == ua.AttributeIds.DataType:
                string = data_type_to_string(dv)
            elif attr in (ua.AttributeIds.AccessLevel,
                          ua.AttributeIds.UserAccessLevel,
                          ua.AttributeIds.WriteMask,
                          ua.AttributeIds.UserWriteMask,
                          ua.AttributeIds.EventNotifier):
                attr_name = attr.name
                if attr_name.startswith("User"):
                    attr_name = attr_name[4:]
                attr_enum = getattr(ua, attr_name)
                string = ", ".join([e.name for e in attr_enum.parse_bitfield(dv.Value.Value)])
            else:
                string = variant_to_string(dv.Value)
            name_item = QStandardItem(attr.name)
            vitem = QStandardItem(string)
            vitem.setData((attr, dv), Qt.UserRole)
            self.model.appendRow([name_item, vitem, QStandardItem(dv.Value.VariantType.name)])

            # special case for Value, we want to show timestamps
            if attr == ua.AttributeIds.Value:
                string = val_to_string(dv.ServerTimestamp)
                name_item.appendRow([QStandardItem("Server Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
                string = val_to_string(dv.SourceTimestamp)
                name_item.appendRow([QStandardItem("Source Timestamp"), QStandardItem(string), QStandardItem(ua.VariantType.DateTime.name)])
示例#5
0
 def test_string_to_variant_localized_text(self):
     string = "_This is my string"
     # string = "_This is my nøåæ"FIXME: does not work with python2 ?!?!
     obj = ua.LocalizedText(string)
     self.assertEqual(string_to_val(string, ua.VariantType.LocalizedText),
                      obj)
     self.assertEqual(val_to_string(obj), string)
示例#6
0
 def test_string_to_variant_datetime_string(self):
     s_arr_datetime = "[2014-05-6, 2016-10-3]"
     arr_string = ['2014-05-6', '2016-10-3']
     arr_datetime = [datetime(2014, 5, 6), datetime(2016, 10, 3)]
     s_datetime = "2014-05-3"
     self.assertEqual(val_to_string(arr_string), s_arr_datetime)
     self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.String), arr_string)
     self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.DateTime), arr_datetime)
示例#7
0
 def edit_attr_finished(self, item):
     if not self._check_edit(item):
         return
     try:
         var = item.data()
         val = item.text()
         var = string_to_variant(val, var.VariantType)
         self.current_node.set_value(var)
     except Exception as ex:
         self.window.show_error(ex)
         raise
     finally:
         dv = self.current_node.get_data_value()
         item.setText(variant_to_string(dv.Value))
         name_item = self.model.item(item.row(), 0)
         name_item.child(0, 1).setText(val_to_string(dv.ServerTimestamp))
         name_item.child(1, 1).setText(val_to_string(dv.SourceTimestamp))
示例#8
0
    def test_string_to_variant_int(self):
        s_arr_uint = "[1, 2, 3, 4]"
        arr_uint = [1, 2, 3, 4]
        s_uint = "1"

        self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt32), arr_uint)
        self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt16), arr_uint)
        self.assertEqual(val_to_string(arr_uint), s_arr_uint)
示例#9
0
 def test_string_to_variant_datetime_string(self):
     s_arr_datetime = "[2014-05-6, 2016-10-3]"
     arr_string = ['2014-05-6', '2016-10-3']
     arr_datetime = [datetime(2014, 5, 6), datetime(2016, 10, 3)]
     s_datetime = "2014-05-3"
     self.assertEqual(val_to_string(arr_string), s_arr_datetime)
     self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.String), arr_string)
     self.assertEqual(string_to_val(s_arr_datetime, ua.VariantType.DateTime), arr_datetime )
示例#10
0
    def test_string_to_variant_int(self):
        s_arr_uint = "[1, 2, 3, 4]"
        arr_uint = [1, 2, 3, 4]
        s_uint = "1"

        self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt32), arr_uint)
        self.assertEqual(string_to_val(s_arr_uint, ua.VariantType.UInt16), arr_uint)
        self.assertEqual(val_to_string(arr_uint), s_arr_uint)
示例#11
0
 def _show_list(self, parent, mylist, vtype):
     for idx, val in enumerate(mylist):
         name_item = QStandardItem(str(idx))
         vitem = QStandardItem()
         vitem.setText(val_to_string(val))
         vitem.setData(ListData(mylist, idx, val, vtype), Qt.UserRole)
         row = [name_item, vitem, QStandardItem(vtype.name)]
         parent.appendRow(row)
         if vtype == ua.VariantType.ExtensionObject:
             self._show_ext_obj(name_item, val)
示例#12
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)
示例#13
0
def show_attr(attr, dv):
    if attr == ua.AttributeIds.DataType:
        string = data_type_to_string(dv.Value.Value)
    elif attr in (ua.AttributeIds.AccessLevel, ua.AttributeIds.UserAccessLevel,
                  ua.AttributeIds.WriteMask, ua.AttributeIds.UserWriteMask,
                  ua.AttributeIds.EventNotifier):
        string = enum_to_string(attr, dv.Value.Value)
    else:
        string = val_to_string(dv.Value.Value)
    print(attr.name, ':', string)
示例#14
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 = obj.to_binary()
        obj2 = obj.from_binary(ua.utils.Buffer(b))
        self.assertEqual(obj, obj2)
示例#15
0
 def _show_list(self, parent, mylist, vtype):
     for idx, val in enumerate(mylist):
         name_item = QStandardItem(str(idx))
         vitem = QStandardItem()
         vitem.setText(val_to_string(val))
         vitem.setData(ListData(mylist, idx, val, vtype), Qt.UserRole)
         row = [name_item, vitem, QStandardItem(vtype.name)]
         parent.appendRow(row)
         if vtype == ua.VariantType.ExtensionObject:
             self._show_ext_obj(name_item, val)
    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))
示例#17
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))
示例#18
0
 def _show_val(self, parent, obj, name, val, vtype):
     name_item = QStandardItem(name)
     vitem = QStandardItem()
     vitem.setText(val_to_string(val))
     vitem.setData(MemberData(obj, name, val, vtype), Qt.UserRole)
     row = [name_item, vitem, QStandardItem(vtype.name)]
     # if we have a list or extension object we display children
     if isinstance(val, list):
         row[2].setText("List of " + vtype.name)
         self._show_list(name_item, val, vtype)
     elif vtype == ua.VariantType.ExtensionObject:
         self._show_ext_obj(name_item, val)
     parent.appendRow(row)
     return row
示例#19
0
 def _show_val(self, parent, obj, name, val, vtype):
     name_item = QStandardItem(name)
     vitem = QStandardItem()
     vitem.setText(val_to_string(val))
     vitem.setData(MemberData(obj, name, val, vtype), Qt.UserRole)
     row = [name_item, vitem, QStandardItem(vtype.name)]
     # if we have a list or extension object we display children
     if isinstance(val, list):
         row[2].setText("List of " + vtype.name)
         self._show_list(name_item, val, vtype)
     elif vtype == ua.VariantType.ExtensionObject:
         self._show_ext_obj(name_item, val)
     parent.appendRow(row)
     return row
示例#20
0
 def _show_attr(self, attr, dv):
     if attr == ua.AttributeIds.DataType:
         # FIXME: Could query for browsename here, it does not cost much
         string = data_type_to_string(dv.Value.Value)
     elif attr in (ua.AttributeIds.AccessLevel,
                   ua.AttributeIds.UserAccessLevel,
                   ua.AttributeIds.WriteMask,
                   ua.AttributeIds.UserWriteMask,
                   ua.AttributeIds.EventNotifier):
         string = enum_to_string(attr, dv.Value.Value)
     else:
         string = val_to_string(dv.Value.Value)
     name_item = QStandardItem(attr.name)
     vitem = QStandardItem(string)
     vitem.setData(AttributeData(attr, dv.Value.Value, dv.Value.VariantType), Qt.UserRole)
     self.model.appendRow([name_item, vitem, QStandardItem(dv.Value.VariantType.name)])
示例#21
0
 def _show_attr(self, attr, dv):
     if attr == ua.AttributeIds.DataType:
         # FIXME: Could query for browsename here, it does not cost much
         string = data_type_to_string(dv.Value.Value)
     elif attr in (ua.AttributeIds.AccessLevel,
                   ua.AttributeIds.UserAccessLevel,
                   ua.AttributeIds.WriteMask,
                   ua.AttributeIds.UserWriteMask,
                   ua.AttributeIds.EventNotifier):
         string = enum_to_string(attr, dv.Value.Value)
     else:
         string = val_to_string(dv.Value.Value)
     name_item = QStandardItem(attr.name)
     vitem = QStandardItem(string)
     vitem.setData(AttributeData(attr, dv.Value.Value, dv.Value.VariantType), Qt.UserRole)
     self.model.appendRow([name_item, vitem, QStandardItem(dv.Value.VariantType.name)])
示例#22
0
 def _show_val(self, parent, obj, name, val, vtype, status_code=None):
     name_item = QStandardItem(name)
     vitem = QStandardItem()
     vitem.setText(val_to_string(val))
     vitem.setData(MemberData(obj, name, val, vtype), Qt.UserRole)
     row = [name_item, vitem, QStandardItem(vtype.name)]
     # Color value according to status code
     if status_code is not None:
         if status_code == ua.StatusCodes.Good:
             vitem.setForeground(QBrush(QColor("green")))
         elif status_code == ua.StatusCodes.Uncertain:
             vitem.setForeground(QBrush(QColor("yellow")))
         else:  # StatusCode = Bad:
             vitem.setForeground(QBrush(QColor("red")))
     # if we have a list or extension object we display children
     if isinstance(val, list):
         row[2].setText("List of " + vtype.name)
         self._show_list(name_item, val, vtype)
     elif vtype == ua.VariantType.ExtensionObject:
         self._show_ext_obj(name_item, val)
     parent.appendRow(row)
     return row
示例#23
0
 def test_string_to_variant_float(self):
     s_arr_float = "[1.1, 2.1, 3, 4.0]"
     arr_float = [1.1, 2.1, 3, 4.0]
     s_float = "1.9"
     self.assertEqual(string_to_val(s_float, ua.VariantType.Float), 1.9)
     self.assertEqual(val_to_string(arr_float), s_arr_float)
示例#24
0
 def test_string_to_variant_qname(self):
     string = "2:name"
     obj = ua.QualifiedName("name", 2)
     self.assertEqual(string_to_val(string, ua.VariantType.QualifiedName),
                      obj)
     self.assertEqual(val_to_string(obj), string)
示例#25
0
def show_value_attr(attr, dv):
    print('Value', ':', dv.Value.Value)
    print('Server Timestamp', ':', val_to_string(dv.ServerTimestamp))
    print('Source Timestamp', ':', val_to_string(dv.SourceTimestamp))
示例#26
0
 def test_string_to_variant_float(self):
     s_arr_float = "[1.1, 2.1, 3, 4.0]"
     arr_float = [1.1, 2.1, 3, 4.0]
     s_float = "1.9"
     self.assertEqual(string_to_val(s_float, ua.VariantType.Float), 1.9)
     self.assertEqual(val_to_string(arr_float), s_arr_float)
示例#27
0
 def _item_collapsed(self, idx):
     it = self.model.itemFromIndex(idx.sibling(0, 1))
     data = it.data(Qt.UserRole)
     it.setText(val_to_string(data.value))
示例#28
0
 def test_string_to_variant_localized_text(self):
     string = "_This is my string"
     #string = "_This is my nøåæ"FIXME: does not work with python2 ?!?!
     obj = ua.LocalizedText(string)
     self.assertEqual(string_to_val(string, ua.VariantType.LocalizedText), obj)
     self.assertEqual(val_to_string(obj), string)
示例#29
0
 def test_string_to_variant_qname(self):
     string = "2:name"
     obj = ua.QualifiedName("name", 2)
     self.assertEqual(string_to_val(string, ua.VariantType.QualifiedName), obj)
     self.assertEqual(val_to_string(obj), string)
示例#30
0
 def _item_collapsed(self, idx):
     it = self.model.itemFromIndex(idx.sibling(0, 1))
     data = it.data(Qt.UserRole)
     it.setText(val_to_string(data.value))