Example #1
0
        public void StartMonitor(string groupKey, List <string> items, string serverID, string host = "127.0.0.1")
        {
            JsonArray properties = new JsonArray();

            OpcDaService server = GetOpcDaService(host, serverID);

            if (server == null)
            {
                return;
            }
            foreach (string item in items)
            {
                string md5Str = groupKey + item;
                if (server.OpcDaGroupS.ContainsKey(md5Str) == false)
                {
                    OpcDaGroup group = server.Service.AddGroup(md5Str);  // maybe cost lot of time
                    group.IsActive = true;
                    server.OpcDaGroupS.Add(md5Str, group);
                    List <OpcDaItemDefinition> itemDefList = new List <OpcDaItemDefinition>();
                    var def = new OpcDaItemDefinition
                    {
                        ItemId   = item,
                        UserData = groupKey,
                        IsActive = true
                    };
                    itemDefList.Add(def);

                    group.AddItems(itemDefList);
                    groupKeys.Add(md5Str);
                    SetGroupFlag(groupKey, 0);
                    LogHelper.Log("StartMonitoring  is groupId " + md5Str + " interval " + "1000  ms", (int)LogHelper.Level.INFO);
                    setItemsCount(groupKey, group);
                    group.UpdateRate     = TimeSpan.FromMilliseconds(1000); // 1000毫秒触发一次
                    group.ValuesChanged += MonitorValuesChanged;
                    if (!groupCollection.ContainsKey(md5Str))
                    {
                        GroupEntity groupEntity = new GroupEntity()
                        {
                            Host   = server.Host,
                            ProgId = server.ServiceId
                        };
                        groupCollection.Add(md5Str, groupEntity);
                    }
                    LogHelper.Log("groupKeygroupKeygroupKey: " + groupKey);
                    // LogHelper.Log("aaaa: " + GetUnits(group), (int)LogHelper.Level.INFO);
                }
            }
        }