public void AddSymbol(AdsSymbol symbol) { if (Symbols.ContainsKey(symbol.Name)) { throw new ArgumentException($"Symbol with the same name ('{symbol.Name}') already exists"); } //Define Symbol Offset var offset = GetCurrentDataOffset(); symbol.Offset = offset; var symbolBytes = symbol.GetBytes(); //Add symbol to list Symbols.Add(symbol.Name, symbol); //Add symbol to data memory.AddData(61451, symbolBytes); memory.AddData(61449, symbolBytes); //add symbol handlers memory.AddData(61443, offset.GetBytes()); memory.AddData(61446, offset.GetBytes()); //Update symbolUploadInfo memory.SetData(61455, new SymbolUploadInfo(Symbols.Count, GetCurrentSymbolSize()).GetBytes()); //Add Data memory.AddData(61445, new byte[symbol.Size]); }
public void CreateSymbol(SymbolDto symbol) { var symbolType = symbol.Type.StartsWith("System.") ? symbol.Type : "System." + symbol.Type; var type = Type.GetType(symbolType); if (type != null) { var adsSymbol = new AdsSymbol(symbol.Name, type); server.AddSymbol(adsSymbol); } else { throw new Exception($"Unable to find type named {symbolType}"); } }