void InitServerByJson()
        {
            _arguments = DataHelper.GetDriverArgumetByJson();
            List <DriverMetaData> drivers = DataHelper.GetDriverMetaDataByJson();

            foreach (var model in drivers)
            {
                AddDriver1(model.ID, model.Name, model.Assembly, model.ClassName, (JObject)model.Target);
            }
            _list = DataHelper.GetTagMetaDataByJson();
            List <GroupMeta> list = DataHelper.GetGroupMetaByJson();

            _mapping = new Dictionary <string, ITag>(_list.Count);
            foreach (var grpm in list)
            {
                IDriver dv;
                _drivers.TryGetValue(grpm.DriverID, out dv);
                IGroup grp = dv.AddGroup(grpm.Name, grpm.ID, grpm.UpdateRate, grpm.DeadBand, grpm.Active);
                if (grp != null)
                {
                    grp.AddItems(_list);
                }
            }
            reval.Clear();
            _scales.Sort();
        }
Beispiel #2
0
        void InitServerByDatabase()
        {
            using (var dataReader = DataHelper.Instance.ExecuteProcedureReader("InitServer"))
            {
                if (dataReader == null)
                {
                    return;                    // Stopwatch sw = Stopwatch.StartNew();
                }
                dataReader.Read();
                int count = dataReader.GetInt32(0);
                _list    = new List <TagMetaData>(count);//把所有激活的 数据库记录 都导入 _list<TagMetaData> 里面
                _mapping = new Dictionary <string, ITag>(count);
                dataReader.NextResult();
                while (dataReader.Read())
                {
                    var meta = new TagMetaData(dataReader.GetInt16(0), dataReader.GetInt16(1), dataReader.GetString(2), dataReader.GetString(3), dataReader.GetString(10), (DataType)dataReader.GetByte(4),
                                               (ushort)dataReader.GetInt16(5), dataReader.GetBoolean(6), dataReader.GetFloat(7), dataReader.GetFloat(8), dataReader.GetInt32(9));

                    _list.Add(meta);
                    if (meta.Archive)
                    {
                        //Id 和Cycle 其实就是归档的时间,归档周期没有设定(0),则置为 null
                        _archiveTimes.Add(meta.ID, meta.Cycle == 0 ? null : new ArchiveTime(meta.Cycle, DateTime.MinValue));
                    }
                }
                _list.Sort();//只是id 排序就好了
                dataReader.NextResult();
                while (dataReader.Read())
                {
                    if (_driver != null)
                    {
                        IGroup grp = _driver.AddGroup(dataReader.GetString(1), dataReader.GetInt16(2), dataReader.GetInt32(3),
                                                      dataReader.GetFloat(4), dataReader.GetBoolean(5));
                        if (grp != null)
                        {
                            grp.AddItems(_list);//这里完成 从 _list<TagMetaData> 到 _list<ITag>的转换
                        }
                    }
                }
            }
            //待归档的列表里面  有 超过一个的 变量,就开启归档
            if (_archiveTimes.Count > 0)
            {
                _hasHda       = true;
                _hda.Capacity = MAXHDACAP;
            }
        }
Beispiel #3
0
        void InitServerBySqlite()
        {
            string          sql          = "select * from Protocol";
            List <Protocol> protocolList = DataHelper.Instance.ExecuteList <Protocol>(sql);

            if (protocolList.Count == 0)
            {
                MessageBox.Show("数据库读取失败!");
                return;
            }
            int count = protocolList.Count();

            _list    = new List <TagMetaData>(count);//把所有激活的 数据库记录 都导入 _list<TagMetaData> 里面
            _mapping = new Dictionary <string, ITag>(count);
            foreach (Protocol protocol in protocolList)
            {
                var meta = new TagMetaData((short)protocol.TagID, (short)protocol.GroupID, protocol.TagName, protocol.Address, protocol.Description, (DataType)protocol.DataType,
                                           (ushort)protocol.DataSize, protocol.Archive == 1 ? true : false, (float)protocol.Maximum, (float)protocol.Minimum, protocol.Cycle);

                _list.Add(meta);
                if (meta.Archive)
                {
                    //Id 和Cycle 其实就是归档的时间,归档周期没有设定(0),则置为 null
                    _archiveTimes.Add(meta.ID, meta.Cycle == 0 ? null : new ArchiveTime(meta.Cycle, DateTime.MinValue)); //归档的ID,归档的时间
                }
                _list.Sort();                                                                                            //只是id 排序就好了
            }
            sql = "select * from ProtocolGroup";
            List <ProtocolGroup> groupList = DataHelper.Instance.ExecuteList <ProtocolGroup>(sql);

            foreach (ProtocolGroup pgroup in groupList)
            {
                if (_driver != null)
                {
                    IGroup grp = _driver.AddGroup(pgroup.GroupName, (short)pgroup.GroupID, pgroup.UpdateRate,
                                                  pgroup.DeadBand, pgroup.IsActive == 1 ? true : false);
                    if (grp != null)
                    {
                        grp.AddItems(_list);//这里完成 从 _list<TagMetaData> 到 _list<ITag>的转换  ,这个地方是需要根据 GroupID 的不同,生成不同的组别,对应于不同的页面??
                    }
                }
            }

            //using (var dataReader = DataHelper.Instance.ExecuteProcedureReader("InitServer"))
            //{
            //    if (dataReader == null) return;// Stopwatch sw = Stopwatch.StartNew();

            //    dataReader.Read();
            //    int count = dataReader.GetInt32(0);
            //    _list = new List<TagMetaData>(count);//把所有激活的 数据库记录 都导入 _list<TagMetaData> 里面
            //    _mapping = new Dictionary<string, ITag>(count);
            //    dataReader.NextResult();
            //    while (dataReader.Read())
            //    {
            //        var meta = new TagMetaData(dataReader.GetInt16(0), dataReader.GetInt16(1), dataReader.GetString(2), dataReader.GetString(3), dataReader.GetString(10), (DataType)dataReader.GetByte(4),
            //         (ushort)dataReader.GetInt16(5), dataReader.GetBoolean(6), dataReader.GetFloat(7), dataReader.GetFloat(8), dataReader.GetInt32(9));

            //        _list.Add(meta);
            //        if (meta.Archive)
            //        {
            //            //Id 和Cycle 其实就是归档的时间,归档周期没有设定(0),则置为 null
            //            _archiveTimes.Add(meta.ID, meta.Cycle == 0 ? null : new ArchiveTime(meta.Cycle, DateTime.MinValue));//归档的ID,归档的时间
            //        }
            //    }
            //    _list.Sort();//只是id 排序就好了
            //    dataReader.NextResult();
            //    while (dataReader.Read())
            //    {
            //        if (_driver != null)
            //        {
            //            IGroup grp = _driver.AddGroup(dataReader.GetString(1), dataReader.GetInt16(2), dataReader.GetInt32(3),
            //                   dataReader.GetFloat(4), dataReader.GetBoolean(5));
            //            if (grp != null)
            //                grp.AddItems(_list);//这里完成 从 _list<TagMetaData> 到 _list<ITag>的转换  ,这个地方是需要根据 GroupID 的不同,生成不同的组别,对应于不同的页面??
            //        }
            //    }
            //}
            //待归档的列表里面  有 超过一个的 变量,就开启归档
            if (_archiveTimes.Count > 0)
            {
                _hasHda       = true;
                _hda.Capacity = MAXHDACAP;//单次归档的最大数据 1 万条;
            }
        }