Esempio n. 1
0
 public PlcDataMapper(int pduSize,
                      ReadOperation readEventHandler,
                      WriteOperation writeEventHandler,
                      UpdateMonitoring updateHandler,
                      ReadBlockInfo blockInfoHandler,
                      OptimizerType optimizer = OptimizerType.Block)
 {
     PduSize            = pduSize;
     _readEventHandler  = readEventHandler;
     _writeEventHandler = writeEventHandler;
     _updateHandler     = updateHandler;
     _blockInfoHandler  = blockInfoHandler;
     Optimizer          = OptimizerFactory.CreateOptimizer(optimizer);
     ReadDataBlockSize  = pduSize - _readDataHeaderLength;
     if (ReadDataBlockSize <= 0)
     {
         ExceptionThrowHelper.ThrowInvalidPduSizeException(_readDataHeaderLength);
     }
     PlcMetaDataTreePath.CreateAbsolutePath(PlcObjectResolver.RootNodeName);
 }
Esempio n. 2
0
        public static PlcObject AddPlcObjectToTree(PlcObject obj, ITree tree, ITreePath path)
        {
            var node = PlcMetaDataTreePath.CreateNodePath(path, obj);

            if (!(tree.Get(node) is PlcObject metaDataNode))
            {
                lock (tree.Root)
                {
                    metaDataNode = tree.Get(node) as PlcObject;
                    if (metaDataNode == null)
                    {
                        tree.Root.AddChild(path, obj);
                    }
                    else
                    {
                        return(metaDataNode);
                    }
                }
                return(obj);
            }
            return(metaDataNode);
        }