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(); }
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; } }
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 万条; } }