private void NodeTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e) { e.Node.Nodes.Clear(); ReferenceDescriptionCollection referenceDescriptionCollection; ReferenceDescription refDesc = (ReferenceDescription)e.Node.Tag; try { referenceDescriptionCollection = myClientHelperAPI.BrowseNode(refDesc); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); return; } foreach (ReferenceDescription tempRefDesc in referenceDescriptionCollection) { if (tempRefDesc.ReferenceTypeId != ReferenceTypeIds.HasNotifier) { e.Node.Nodes.Add(tempRefDesc.DisplayName.ToString()).Tag = tempRefDesc; } } foreach (TreeNode node in e.Node.Nodes) { node.Nodes.Add(""); } }
private ushort GetRfidNamespaceIndex() { ushort nameSpaceIndex = 0; ReferenceDescriptionCollection refDescCol = new ReferenceDescriptionCollection(); refDescCol = myHelperApi.BrowseRoot(); //Browse to variable "AutoIdModelVersion" (mandatory in AutoID) in RfidReaderDeviceType object to find out namespace foreach (ReferenceDescription refDescA in refDescCol) { if (refDescA.BrowseName.Name == "Objects") { refDescCol = myHelperApi.BrowseNode(refDescA); foreach (ReferenceDescription refDescB in refDescCol) { if (refDescB.BrowseName.Name == "DeviceSet") { refDescCol = myHelperApi.BrowseNode(refDescB); foreach (ReferenceDescription refDescC in refDescCol) { if (refDescC.TypeDefinition == new ExpandedNodeId(RfidOpcUaForm.AutoID.ObjectTypes.RfidReaderDeviceType, (ushort)myHelperApi.GetNamespaceIndex(RfidOpcUaForm.AutoID.Namespaces.AutoID))) { refDescCol = myHelperApi.BrowseNode(refDescC); foreach (ReferenceDescription refDescD in refDescCol) { if (refDescD.BrowseName.Name == "AutoIdModelVersion") { nameSpaceIndex = refDescD.NodeId.NamespaceIndex; break; } } break; } } break; } } break; } } return(nameSpaceIndex); }
private void GetNodes(ReferenceDescriptionCollection refDes, NavModal parent) { //parent 上一层的modal for (int i = 0; i < refDes.Count; i++) { NavModal thisModal = new NavModal() { Id = Guid.NewGuid().ToString(), Node = new Node(refDes[i]), Parent = parent }; parent.Children.Add(thisModal); if (refDes[i].NodeClass == NodeClass.Variable) { continue; } ReferenceDescriptionCollection collection = uAClient.BrowseNode(refDes[i]); if (collection.Count > 0) { GetNodes(collection, thisModal); } } }
private void GetIDsAtConstruction() { ReferenceDescriptionCollection refDescCol = new ReferenceDescriptionCollection(); ReferenceDescriptionCollection foundRefDescCol = new ReferenceDescriptionCollection(); refDescCol = myHelperApi.BrowseRoot(); foreach (ReferenceDescription refDescA in refDescCol) { if (refDescA.BrowseName.Name == "Objects") { refDescCol = myHelperApi.BrowseNode(refDescA); foreach (ReferenceDescription refDescB in refDescCol) { if (refDescB.BrowseName.Name == "DeviceSet") { refDescCol = myHelperApi.BrowseNode(refDescB); foreach (ReferenceDescription refDescC in refDescCol) { if (refDescC.TypeDefinition == new ExpandedNodeId(AutoID.ObjectTypes.RfidReaderDeviceType, (ushort)myHelperApi.GetNamespaceIndex(AutoID.Namespaces.AutoID))) { foundRefDescCol.Add(refDescC); } } } } } } MethodIds methodIds; for (int i = 0; i < foundRefDescCol.Count; i++) { refDescCol = myHelperApi.BrowseNode(foundRefDescCol[i]); foreach (ReferenceDescription refDescD in refDescCol) { if (refDescD.BrowseName.Name == "Scan") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.Scan; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } else if (refDescD.BrowseName.Name == "ScanStart") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.ScanStart; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } else if (refDescD.BrowseName.Name == "ScanStop") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.ScanStop; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } else if (refDescD.BrowseName.Name == "ReadTag") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.ReadTag; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } else if (refDescD.BrowseName.Name == "WriteTag") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.WriteTag; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } else if (refDescD.BrowseName.Name == "KillTag") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.KillTag; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } else if (refDescD.BrowseName.Name == "LockTag") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.LockTag; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } else if (refDescD.BrowseName.Name == "SetTagPassword") { objectIdentifier = (uint)foundRefDescCol[i].NodeId.Identifier; methodIdentifier = (uint)refDescD.NodeId.Identifier; methodIds.method = MethodToCall.SetTagPw; methodIds.readpoint = i; methodIds.methodNodeId = methodIdentifier; methodIds.objectNodeId = objectIdentifier; methodIdList[i].Add(methodIds); } } } }
/// <summary> /// Call the Browse service of an UA server. /// </summary> /// <param name="parentNode">The node of the treeview to browse.</param> public int Browse(TreeNode parentNode) { NodeId nodeToBrowse = null; TreeNodeCollection parentCollection = null; // Check if we browse from root if (parentNode == null) { nodeToBrowse = new NodeId(Objects.RootFolder, 0); // Get all the tree nodes that are assigned to the control parentCollection = tvBrowseTree.Nodes; } else { // Get the data about the parent tree node ReferenceDescription parentRefDescription = (ReferenceDescription)parentNode.Tag; if (parentRefDescription == null) { return(-1); } nodeToBrowse = (NodeId)parentRefDescription.NodeId; parentCollection = parentNode.Nodes; } ReferenceDescriptionCollection browseResults; ReferenceDescription refDesc; int result = 0; bool bBrowse; // Set wait cursor. Cursor.Current = Cursors.WaitCursor; // Check if we want to browse on the server. if (m_RebrowseOnExpandNode) { bBrowse = true; } else if (parentNode == null) { bBrowse = true; } else if (parentNode.Checked) { bBrowse = false; } else { bBrowse = true; } // Delete children if required. if (bBrowse) { if (parentNode != null) { parentNode.Nodes.Clear(); } try { // Call browse service. refDesc = new ReferenceDescription(); refDesc.NodeId = nodeToBrowse; browseResults = m_Server.BrowseNode(refDesc); if (browseResults == null) { return(-1); } if (result == 0) { // Add children. tvBrowseTree.BeginUpdate(); // Mark parent node as browsed. if (parentNode != null) { parentNode.Checked = true; } foreach (ReferenceDescription refDescr in browseResults) { if (refDescr.ReferenceTypeId != ReferenceTypeIds.HasNotifier) { TreeNode node = new TreeNode(); node.Text = refDescr.BrowseName.Name.ToString(); node.Tag = refDescr; CustomizeTreeNode(ref node); // Add dummy child. TreeNode dummy = new TreeNode("dummy"); node.Nodes.Add(dummy); parentCollection.Add(node); } } // Sort the tree nodes of the particular node collection this.SortTreeNode((parentNode == null) ? tvBrowseTree.Nodes : parentNode.Nodes); tvBrowseTree.EndUpdate(); // Update status label. OnUpdateStatusLabel("Browse succeeded.", true); } else { // Update status label. OnUpdateStatusLabel("Browse failed. Error: " + result.ToString(), false); } } catch (Exception e) { result = -1; // Update status label. OnUpdateStatusLabel("An exception occured while browsing: " + e.Message, false); } } // Restore default cursor. Cursor.Current = Cursors.Default; return(result); }