Beispiel #1
0
 public ICoreObject CreateTagTable(
     ICoreObject folder,
     IObjectTypeInfo tagTableType,
     bool defaultTagTable = false,
     string name          = "")
 {
     using (new ObjectFrameBulkOperationMode(folder))
     {
         return(Reflector.RunInstanceMethodByName(
                    TSC,
                    "CreateTagTable",
                    ReflectionWays.SystemReflection,
                    folder,
                    tagTableType,
                    defaultTagTable,
                    name) as ICoreObject);
     }
 }
Beispiel #2
0
        /// <summary>
        /// 创建变量
        /// </summary>
        /// <param name="cpu">控制器</param>
        /// <param name="tagTable">变量表</param>
        /// <param name="properties">变量数据</param>
        /// <param name="isConstant">是否静态变量</param>
        public static IBLTag CreateRootTagInTagTable(
            this ICoreObject cpu,
            ICoreObject tagTable,
            Dictionary <string, string> properties,
            bool isConstant = false,
            ISynchronizeInvoke synchronizer = null
            )
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }

            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                () =>
            {
                IObjectTypeInfo iot = null;
                if (isConstant)
                {
                    iot = tagTable.GetConstantType();
                }
                else
                {
                    iot = tagTable.GetTagType();
                }

                ITagService tagService = cpu.GetTagService();

                using (new ObjectFrameBulkOperationMode(tagTable))
                {
                    return tagService.CreateRootTag(
                        cpu,
                        iot,
                        Enumerable.ToDictionary(properties,
                                                kvp => kvp.Key, (Func <KeyValuePair <string, string>, object>)(kvp => kvp.Value))) as IBLTag;
                }
            }) as IBLTag);
        }
Beispiel #3
0
        /// <summary>
        /// 取得变量表文件夹
        /// </summary>
        /// <param name="cpu">控制器</param>
        public static ICoreObject GetTagsFolder(this ICoreObject cpu,
                                                ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (c) =>
            {
                IFolderService folderService = cpu.GetFolderService();
                IObjectTypeInfo tagTableType = GetTagTableType(cpu);
                return folderService.GetAppropriateFolder(cpu, tagTableType, false);
            }, cpu) as ICoreObject);
        }
 public IOnlineFunctionProvider GetOnlineProvider(IObjectTypeInfo targetType, string onlineFunction)
 {
     return(OnlineServiceManager.GetOnlineProvider(targetType, onlineFunction));
 }