示例#1
0
        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]);
        }
示例#2
0
        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}");
            }
        }