示例#1
0
 /// <summary>
 /// Test client
 /// </summary>
 private static async Task TestOpcUaServerClientAsync(EndpointModel endpoint)
 {
     using (var logger = StackLogger.Create(ConsoleLogger.Create()))
         using (var client = new ClientServices(logger.Logger, new TestClientServicesConfig()))
             using (var server = new ServerWrapper(endpoint, logger)) {
                 await client.ExecuteServiceAsync(endpoint, null, session => {
                     Console.WriteLine("Browse the OPC UA server namespace.");
                     var w     = Stopwatch.StartNew();
                     var stack = new Stack <Tuple <string, ReferenceDescription> >();
                     session.Browse(null, null, ObjectIds.RootFolder,
                                    0u, Opc.Ua.BrowseDirection.Forward, ReferenceTypeIds.HierarchicalReferences,
                                    true, 0, out var continuationPoint, out var references);
                     Console.WriteLine(" DisplayName, BrowseName, NodeClass");
                     references.Reverse();
                     foreach (var rd in references)
                     {
                         stack.Push(Tuple.Create("", rd));
                     }
                     while (stack.Count > 0)
                     {
                         var browsed = stack.Pop();
                         session.Browse(null, null,
                                        ExpandedNodeId.ToNodeId(browsed.Item2.NodeId, session.NamespaceUris),
                                        0u, Opc.Ua.BrowseDirection.Forward, ReferenceTypeIds.HierarchicalReferences,
                                        true, 0, out continuationPoint, out references);
                         references.Reverse();
                         foreach (var rd in references)
                         {
                             stack.Push(Tuple.Create(browsed.Item1 + "   ", rd));
                         }
                         Console.WriteLine($"{browsed.Item1}{(references.Count == 0 ? "-" : "+")} " +
                                           $"{browsed.Item2.DisplayName}, {browsed.Item2.BrowseName}, {browsed.Item2.NodeClass}");
                     }
                     Console.WriteLine($"   ....        took {w.ElapsedMilliseconds} ms...");
                     return(Task.FromResult(true));
                 });