private static void WriteSymbolTree(ReadOnlySymbolCollection symbolLoaderSymbols, AdsConnection connection) { Console.WriteLine("\t"); foreach (var symbolLoaderSymbol in symbolLoaderSymbols) { Console.Write(symbolLoaderSymbol.InstancePath); // var symbolInfo = client.ReadSymbolInfo(symbolLoaderSymbol.InstancePath); // var symbolInfor = new symbolin try { if (symbolLoaderSymbol is ISymbol info) { if (info.Category == DataTypeCategory.Primitive) { SymbolCollection coll = new SymbolCollection() { symbolLoaderSymbol }; SumSymbolRead readCommand = new SumSymbolRead(connection, coll); object[] values = readCommand.Read(); Console.Write(": " + values.FirstOrDefault()); } else { Console.Write(": " + info.Category); } } else { Console.Write(": -"); } } catch (Exception e) { var type = symbolLoaderSymbol.DataType.GetType(); var symbol = connection.ReadSymbol(symbolLoaderSymbol.InstanceName, symbolLoaderSymbol.DataType.GetType(), true); Console.Write("Exception: " + e); } Console.WriteLine(string.Empty); if (symbolLoaderSymbol.SubSymbols.Any()) { Console.WriteLine("__________subs to " + symbolLoaderSymbol.InstancePath); WriteSymbolTree(symbolLoaderSymbol.SubSymbols, connection); } } }