Exemple #1
0
        public BatchHelper(ICollectorStore store)
        {
            _store = store;
            if (LineBatch != null)
            {
                LineBatch.Clear();
            }
            else
            {
                LineBatch = new ConcurrentDictionary <string, Ps_Batch>();
            }

            var batch = new Ps_Batch();

            batch.Status = 1;
            LineBatch.TryAdd(line1_key, batch);

            batch        = new Ps_Batch();
            batch.Status = 1;
            LineBatch.TryAdd(line2_key, batch);

            batch        = new Ps_Batch();
            batch.Status = 1;
            LineBatch.TryAdd(line4_key, batch);

            batch        = new Ps_Batch();
            batch.Status = 1;
            LineBatch.TryAdd(line5_key, batch);
        }
Exemple #2
0
        public ScanInstance(Channel _channel, LogicGroup _group, int _interval, ICollectorStore _store)
        {
            ScanEnabled = false;
            Channel     = _channel;
            Group       = _group;
            Interval    = _interval;
            store       = _store;
            DataList    = new Dictionary <VarType, Dictionary <int, List <DataItem> > >();

            var keys = Group.TargetNodeIdList.GetValueOrDefault(Interval);

            foreach (var key in keys)
            {
                var node = Channel.Nodes[key];

                if (!DataList.ContainsKey(node.VarType))
                {
                    var pageData = new Dictionary <int, List <DataItem> >();
                    pageData.Add(1, new List <DataItem>());
                    pageData[1].Add((DataItem)Channel.Nodes[key]);

                    DataList.Add(node.VarType, pageData);
                }
                else
                {
                    if (node.VarType == VarType.String || node.VarType == VarType.StringEx)
                    {
                        var iPageIndex = DataList[node.VarType].Keys.Last();
                        if (DataList[node.VarType][iPageIndex].Count >= 1)
                        {
                            var iNewPage = iPageIndex + 1;
                            DataList[node.VarType].Add(iNewPage, new List <DataItem>());
                            DataList[node.VarType][iNewPage].Add((DataItem)Channel.Nodes[key]);
                        }
                        else
                        {
                            DataList[node.VarType][iPageIndex].Add((DataItem)Channel.Nodes[key]);
                        }
                    }
                    else
                    {
                        var iPageIndex = DataList[node.VarType].Keys.Last();
                        if (DataList[node.VarType][iPageIndex].Count >= 10)
                        {
                            var iNewPage = iPageIndex + 1;
                            DataList[node.VarType].Add(iNewPage, new List <DataItem>());
                            DataList[node.VarType][iNewPage].Add((DataItem)Channel.Nodes[key]);
                        }
                        else
                        {
                            DataList[node.VarType][iPageIndex].Add((DataItem)Channel.Nodes[key]);
                        }
                    }
                }
            }
        }
Exemple #3
0
        private DataCenter()
        {
            successed = false;
            store     = new CollectorStoreImple();
            Lines     = new Dictionary <int, LineManager>();


            InitKeyLineRelation();
            LoadLinesAsync().Wait();
        }
Exemple #4
0
        /// <summary>
        /// 停止
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override async Task StopAsync(CancellationToken cancellationToken)
        {
            Data.Clear();
            foreach (var line in Lines)
            {
                line.Stop();
            }
            Lines.Clear();
            Lines = null;

            _helper = null;
            _store  = null;

            await base.StopAsync(cancellationToken);
        }
Exemple #5
0
        /// <summary>
        /// 启动
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override async Task StartAsync(CancellationToken cancellationToken)
        {
            Data = new Dictionary <string, object>();
            var _configuration = _serviceScopeFactory.CreateScope().ServiceProvider.GetRequiredService <IConfiguration>();

            ConnectionString      = _configuration["Configurations:ConnectionString"];
            RedisConnectionString = _configuration["Configurations:Redis"];

            _store = new CollectorStoreImple(ConnectionString);
            RedisHelper.Initialization(new CSRedis.CSRedisClient(RedisConnectionString));
            _helper = new BatchHelper(_store);

            await LoadLinesAsync();

            await base.StartAsync(cancellationToken);
        }
        // 禁止外部实例化
        private TerminalClient()
        {
            store       = new CollectorStoreImple();
            PlcDic      = new Dictionary <Int64, Plc>();
            ChannelList = new List <Channel>();

            var list = store.GetPlcListAsync().Result;

            foreach (var entity in list)
            {
                var channel = new Channel(entity.Id, entity.Name);
                channel.CpuType     = entity.CpuType;
                channel.Slot        = entity.Slot;
                channel.Rack        = entity.Rack;
                channel.Port        = entity.Port;
                channel.IP          = entity.Ip;
                channel.IsAvailable = false;
                channel.IsConnected = false;

                ChannelList.Add(channel);
            }
        }
 public CollectorServer(ICollectorStore _store)
 {
     InstanceList = new List <ScanInstance>();
     store        = _store;
     ins          = DataCenter.Instance;
 }