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); }
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); }