public void readASU() { SqlConnection con = DBSettings.getConnection(); con.Open(); List <SignalInfo> asufull = new List <SignalInfo>(); SqlCommand com = con.CreateCommand(); Status.Text = "Чтение АСУ сигналов из БД"; com.CommandText = "Select kks_id_signal, full_name,short_name,sub_sys,value_step,kks_id_dev,id_level from asu_signals_full"; SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { SignalInfo si = new SignalInfo(); si.KKS = reader.GetString(0); si.FullName = reader.GetString(1); si.ShortName = reader.GetString(2); si.FullNameUp = si.FullName.ToUpper(); si.ShortNameUp = si.ShortName.ToUpper(); si.subSys = reader.GetInt32(3); si.valueStep = reader.GetString(4); si.kksDev = reader.GetString(5); si.idLevel = reader.GetInt32(6); try { si.numSign = NumSignals[si.KKS]; } catch { } asufull.Add(si); } reader.Close(); NumSignals.Clear(); SubSysTables.Clear(); Status.Text = "Чтение АСУ дерева из БД"; Dictionary <string, string> asu_tree = new Dictionary <string, string>(); com.CommandText = "Select * from asu_tree"; reader = com.ExecuteReader(); while (reader.Read()) { string kks = reader.GetString(3); string name = reader.GetString(2); asu_tree.Add(kks, name); } reader.Close(); con.Close(); SignalInfo root = new SignalInfo(); root.KKS = asu_tree.Keys.ToArray()[0]; root.FullName = asu_tree.Values.ToArray()[0]; createTree(root, asu_tree); Status.Text = "Формирование АСУ дерева"; fillTree(root, asufull); Status.Text = "Формирование АСУ групп"; fillSubTree(root); ASURoot = root.Children[0]; }
public void fillTree(SignalInfo root, List <SignalInfo> full) { if (root.Children != null) { foreach (SignalInfo ch in root.Children) { fillTree(ch, full); root.allChildrenCount += ch.allChildrenCount; } } else { string msk = root.KKS.Replace("_", ""); foreach (SignalInfo si in full) { if (si.KKS.Contains(msk)) { if (root.Children == null) { root.Children = new List <SignalInfo>(); } root.Children.Add(si); root.allChildrenCount++; } } } }
private void treeTech_AfterSelect(object sender, TreeViewEventArgs e) { richTextBox1.Text = ""; richTextBox2.Text = ""; try { string kks = treeTech.SelectedNode.Name; SignalInfo si = epa.FindSignal(epa.TechRoot, kks, null); richTextBox1.Text = String.Format("FullName: {0} \n ShortName:{1} \n KKS:{2}\n", si.FullName, si.ShortName, si.KKS); try { string kksAsuStr = epa.TechASUDict[kks]; richTextBox2.Text += String.Format("link_KKS:{0}\n", kksAsuStr); string[] kksAsuL = kksAsuStr.Split(new char[] { ';' }); foreach (string kksAsu in kksAsuL) { try { SignalInfo siAsu = epa.FindSignal(epa.ASURoot, kksAsu, null); richTextBox2.Text += String.Format("FullName: {0} \n ShortName:{1} \n KKS:{2}\nSubSys:{3}\n numSign:{4}\n", siAsu.FullName, siAsu.ShortName, siAsu.KKS, epa.getSubSysName(siAsu), siAsu.numSign); } catch { } } } catch { } } catch { } }
public SignalInfo fillSubRoot(SignalInfo root, SignalGroup group) { string kks = group.KKSDev + "-" + group.level; if (root.Children == null) { root.Children = new List <SignalInfo>(); } foreach (SignalInfo ch in root.Children) { if (ch.KKS == kks) { return(ch); } } SignalInfo si = new SignalInfo(); si.KKS = kks; si.ShortName = group.name; si.FullName = group.name; si.FullNameUp = si.FullName.ToUpper(); si.ShortNameUp = si.ShortName.ToUpper(); root.Children.Add(si); return(si); }
public static string getSignalState(int state, SignalInfo si) { try { string[] vals = si.valueStep.Split(new char[] { ';' }); if (vals.Length > 1) { return(vals[state]); } } catch { } switch (state) { case 0: return("Неопр"); case 1: return("Откл"); case 2: return("Вкл"); case 3: return("Ошибка"); } return("-"); }
private void tabPage3_Enter(object sender, EventArgs e) { listBox2.Items.Clear(); foreach (SignalInfo si in epa.SelectedAnalogSignals) { string name = si.ShortName; string techName = ""; try { string kksT = epa.ASUTechDict[si.KKS]; string[] kksL = kksT.Split(new char[] { ';' }); foreach (string kksTech in kksL) { SignalInfo siTech = epa.FindSignal(epa.TechRoot, kksTech, null); techName = techName + siTech.ShortName; } } catch { } if (techName.Length > 0) { name = name + " (" + techName + ")"; } listBox2.Items.Add(name); } }
public void createTree(SignalInfo root, Dictionary <string, string> tree) { foreach (KeyValuePair <string, string> de in tree) { SignalInfo ch = new SignalInfo(); ch.KKS = de.Key; ch.FullName = de.Value; ch.ShortName = de.Value; ch.FullNameUp = ch.FullName.ToUpper(); ch.ShortNameUp = ch.ShortName.ToUpper(); if (isChild(root.KKS, ch.KKS, tree)) { if (root.Children == null) { root.Children = new List <SignalInfo>(); } root.Children.Add(ch); createTree(ch, tree); } } if (root.Children == null) { root.isLastTreeNode = true; } }
public TreeNode displayTree(SignalInfo si) { TreeNode node = new TreeNode(); node.Text = si.ShortName; node.ToolTipText = si.FullName; node.Name = si.KKS; si.discr = getSubSysName(si).Contains("Дискр"); if (TechASUDict.ContainsKey(si.KKS) || ASUTechDict.ContainsKey(si.KKS)) { node.ForeColor = Color.Blue; } if (DictAlgo.ContainsKey(si.KKS)) { node.Text += " [*]"; } si.treeNode = node; if (si.Children != null) { foreach (SignalInfo ch in si.Children) { TreeNode nodeCh = displayTree(ch); node.Nodes.Add(nodeCh); } } return(node); }
public string getSubSysName(SignalInfo si) { if (si.subSys > 0) { try { return(SubSystems[si.subSys]); } catch { } } return(""); }
public void selectAsuSignal(SignalInfo si, bool check, bool selectLink) { si.treeNode.Checked = check; if (si.Children != null) { foreach (SignalInfo ch in si.Children) { selectAsuSignal(ch, check, selectLink); } } else { if (check) { if (si.discr) { SelectedDiscrSignals.Add(si); } else { SelectedAnalogSignals.Add(si); } } else { if (si.discr) { SelectedDiscrSignals.Remove(si); } else { SelectedAnalogSignals.Remove(si); } } if (selectLink) { try { string kksT = ASUTechDict[si.KKS]; string[] kksL = kksT.Split(new char[] { ';' }); foreach (string KKSTech in kksL) { SignalInfo siTech = FindSignal(TechRoot, KKSTech, null); siTech.treeNode.Checked = check; } } catch { } } } }
public void findText(SignalInfo root, string text, List <SignalInfo> res) { if (root.Children != null) { foreach (SignalInfo ch in root.Children) { if (ch.KKS.Contains(text) || ch.FullNameUp.Contains(text) || (ch.ShortNameUp.Contains(text))) { res.Add(ch); Status.Text = String.Format("Найдено {0} сигналов", res.Count); } findText(ch, text, res); } } }
private void treeAsu_DoubleClick(object sender, EventArgs e) { try { string kks = treeAsu.SelectedNode.Name; string kksT = epa.ASUTechDict[kks]; string[] kksL = kksT.Split(new char[] { ';' }); foreach (string kksTech in kksL) { SignalInfo siTech = epa.FindSignal(epa.TechRoot, kksTech, null); treeTech.SelectedNode = siTech.treeNode; treeTech.SelectedNode.EnsureVisible(); } statusLabel.Text = String.Format("Найдено {0} сигналов", kksL.Length); } catch { } }
public void readTech() { SqlConnection con = DBSettings.getConnection(); con.Open(); List <SignalInfo> techfull = new List <SignalInfo>(); SqlCommand com = con.CreateCommand(); com.CommandText = "Select * from tech_parameters_full"; Status.Text = "Чтение Тех сигналов из БД"; SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { SignalInfo si = new SignalInfo(); si.KKS = reader.GetString(0); si.FullName = reader.GetString(1); si.ShortName = reader.GetString(2); si.FullNameUp = si.FullName.ToUpper(); si.ShortNameUp = si.ShortName.ToUpper(); techfull.Add(si); } reader.Close(); Status.Text = "Чтение Тех дерева из БД"; Dictionary <string, string> tech_tree = new Dictionary <string, string>(); com.CommandText = "Select * from tech_tree"; reader = com.ExecuteReader(); while (reader.Read()) { string kks = reader.GetString(3); string name = reader.GetString(2); tech_tree.Add(kks, name); } reader.Close(); con.Close(); SignalInfo root = new SignalInfo(); root.KKS = tech_tree.Keys.ToArray()[0]; root.FullName = tech_tree.Values.ToArray()[0]; Status.Text = "Формирование Тех дерева"; createTree(root, tech_tree); fillTree(root, techfull); TechRoot = root.Children[0]; }
public void selectTechSignal(SignalInfo si, bool check) { si.treeNode.Checked = check; if (si.Children != null) { foreach (SignalInfo ch in si.Children) { selectTechSignal(ch, check); } } try { string kksA = TechASUDict[si.KKS]; string[] kksL = kksA.Split(new char[] { ';' }); foreach (string KKSAsu in kksL) { SignalInfo siAsu = FindSignal(ASURoot, KKSAsu, null); siAsu.treeNode.Checked = check; if (check) { if (siAsu.discr) { SelectedDiscrSignals.Add(siAsu); } else { SelectedAnalogSignals.Add(siAsu); } } else { if (siAsu.discr) { SelectedDiscrSignals.Remove(siAsu); } else { SelectedAnalogSignals.Remove(siAsu); } } } } catch { } }
public SignalInfo FindSignal(SignalInfo root, string kks, SignalInfo found) { if (root.Children != null) { foreach (SignalInfo ch in root.Children) { if (ch.KKS == kks) { found = ch; break; } if (found == null) { found = FindSignal(ch, kks, found); } } } return(found); }
private void treeAsu_AfterCheck(object sender, TreeViewEventArgs e) { if (epa.processingSelect) { return; } epa.processingSelect = true; try { string kks = e.Node.Name; SignalInfo si = epa.FindSignal(epa.ASURoot, kks, null); if (si.allChildrenCount > 500) { e.Node.Checked = !e.Node.Checked; } else { epa.selectAsuSignal(si, e.Node.Checked, true); } } catch { } epa.processingSelect = false; }
public void findText(SignalInfo root, string text, List<SignalInfo> res) { if (root.Children != null) { foreach (SignalInfo ch in root.Children) { if (ch.KKS.Contains(text) || ch.FullNameUp.Contains(text) || (ch.ShortNameUp.Contains(text))) { res.Add(ch); Status.Text = String.Format("Найдено {0} сигналов", res.Count); } findText(ch, text, res); } } }
public SignalInfo FindSignal(SignalInfo root, string kks, SignalInfo found) { if (root.Children != null) { foreach (SignalInfo ch in root.Children) { if (ch.KKS == kks) { found = ch; break; } if (found == null) found = FindSignal(ch, kks, found); } } return found; }
public void fillTree(SignalInfo root, List<SignalInfo> full) { if (root.Children != null) { foreach (SignalInfo ch in root.Children) { fillTree(ch, full); root.allChildrenCount += ch.allChildrenCount; } } else { string msk = root.KKS.Replace("_", ""); foreach (SignalInfo si in full) { if (si.KKS.Contains(msk)) { if (root.Children == null) { root.Children = new List<SignalInfo>(); } root.Children.Add(si); root.allChildrenCount++; } } } }
public void fillSubTree(SignalInfo root) { if (!root.isLastTreeNode) { foreach (SignalInfo ch in root.Children) { fillSubTree(ch); } } else if (root.Children!=null) { SignalInfo subRoot = new SignalInfo(); subRoot.Children = new List<SignalInfo>(); List<SignalInfo> forDel = new List<SignalInfo>(); foreach (SignalInfo si in root.Children) { if (!Signals.ContainsKey(si.kksDev)) continue; List<SignalGroup> groups = Signals[si.kksDev]; List<SignalGroup> subTree = new List<SignalGroup>(); try { int level = si.idLevel; int index = 0; while (index < groups.Count) { SignalGroup gr = groups[index]; if (gr.level == level) { subTree.Add(gr); level = gr.parent; index = -1; } index++; } } catch { } try { if (subTree.Count > 0) { SignalInfo siTemp = subRoot; for (int i = subTree.Count - 1; i >= 0; i--) { SignalGroup gr = subTree[i]; siTemp = fillSubRoot(siTemp, gr); } if (siTemp.Children == null) siTemp.Children = new List<SignalInfo>(); siTemp.Children.Add(si); forDel.Add(si); } } catch { } } foreach (SignalInfo del in forDel) { root.Children.Remove(del); } foreach (SignalInfo add in subRoot.Children) { bool found = false; foreach (SignalInfo s in root.Children) if (s.KKS == add.KKS) { found = true; break; } if (!found) { root.Children.Add(add); } } } }
public SignalInfo fillSubRoot(SignalInfo root, SignalGroup group) { string kks = group.KKSDev + "-" + group.level; if (root.Children == null) root.Children = new List<SignalInfo>(); foreach (SignalInfo ch in root.Children) { if (ch.KKS == kks) return ch; } SignalInfo si = new SignalInfo(); si.KKS = kks; si.ShortName = group.name; si.FullName = group.name; si.FullNameUp = si.FullName.ToUpper(); si.ShortNameUp = si.ShortName.ToUpper(); root.Children.Add(si); return si; }
public void readTech() { SqlConnection con = DBSettings.getConnection(); con.Open(); List<SignalInfo> techfull = new List<SignalInfo>(); SqlCommand com = con.CreateCommand(); com.CommandText = "Select * from tech_parameters_full"; Status.Text = "Чтение Тех сигналов из БД"; SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { SignalInfo si = new SignalInfo(); si.KKS = reader.GetString(0); si.FullName = reader.GetString(1); si.ShortName = reader.GetString(2); si.FullNameUp = si.FullName.ToUpper(); si.ShortNameUp = si.ShortName.ToUpper(); techfull.Add(si); } reader.Close(); Status.Text = "Чтение Тех дерева из БД"; Dictionary<string, string> tech_tree = new Dictionary<string, string>(); com.CommandText = "Select * from tech_tree"; reader = com.ExecuteReader(); while (reader.Read()) { string kks = reader.GetString(3); string name = reader.GetString(2); tech_tree.Add(kks, name); } reader.Close(); con.Close(); SignalInfo root = new SignalInfo(); root.KKS = tech_tree.Keys.ToArray()[0]; root.FullName = tech_tree.Values.ToArray()[0]; Status.Text = "Формирование Тех дерева"; createTree(root, tech_tree); fillTree(root, techfull); TechRoot = root.Children[0]; }
public void readState(DateTime date, DataGridView grid) { SqlConnection con = DBSettings.getConnection(); con.Open(); Int64 time = EPADB.GetIntDate(date); grid.Rows.Clear(); Dictionary <string, int> gridRows = new Dictionary <string, int>(); Dictionary <string, SignalInfo> signals = new Dictionary <string, SignalInfo>(); foreach (SignalInfo siAsu in epa.SelectedDiscrSignals) { try { int i = grid.Rows.Add(); SignalInfo siTech = null; try { string kksTech = epa.ASUTechDict[siAsu.KKS]; siTech = epa.FindSignal(epa.TechRoot, kksTech, null); } catch { } grid.Rows[i].Cells[0].Value = siAsu.ShortName; grid.Rows[i].Cells[1].Value = siTech != null ? siTech.ShortName : "-"; grid.Rows[i].Cells[2].Value = "-"; grid.Rows[i].Cells[3].Value = "-"; grid.Rows[i].Cells[4].Value = "-"; gridRows.Add(siAsu.KKS, i); signals.Add(siAsu.KKS, siAsu); } catch { } } foreach (int subSys in tablesState.Keys) { Status.Text = "Чтение данных подсистемы " + subSys; foreach (string table in tablesState[subSys]) { try { SqlCommand com = con.CreateCommand(); com.CommandText = String.Format("Select top 1 time_page from {0} where time_page>={1}", table.Replace("state", "time"), time); Object timeObj = com.ExecuteScalar(); if ((Int32)timeObj <= 0) { continue; } List <string> kksQList = new List <string>(); List <int> numsQList = new List <int>(); foreach (SignalInfo si in SignalsBySubSys[subSys]) { try { kksQList.Add("'" + si.KKS + "'"); numsQList.Add(si.numSign); if (kksQList.Count < 10 && si != SignalsBySubSys[subSys].Last()) { continue; } string kksQ = string.Join(",", kksQList); string numsQ = string.Join(",", numsQList); kksQList.Clear(); numsQList.Clear(); Status.Text = Status.Text + "...|"; if (!epa.UseNumSignals) { com.CommandText = String.Format("Select time_page,time,kks_id_signal,mcs,data,bsrc from {0} where time_page={1} and kks_id_signal in ({2})", table, timeObj, kksQ); } else { com.CommandText = String.Format("Select time_page,time,kks_id_signal,mcs,data,bsrc from {0} where time_page={1} and num_sign in ({2})", table, timeObj, numsQ); } SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { DateTime dt = EPADB.GetDate(reader.GetInt32(0)); DateTime dt_prev = EPADB.GetDate(reader.GetInt32(1)); string kksAsu = reader.GetString(2); int state = Int32.Parse(reader[4].ToString()); int src = Int32.Parse(reader[5].ToString()); int mcs = Int32.Parse(reader[3].ToString()); dt = dt.AddMilliseconds(mcs / 1000.0); int index = gridRows[kksAsu]; grid.Rows[index].Cells[2].Value = dt_prev.ToString("dd.MM.yyyy HH:mm:ss,fff"); grid.Rows[index].Cells[3].Value = EPADB.getSignalState(state, signals[kksAsu]); grid.Rows[index].Cells[4].Value = EPADB.getSignalSrc(src); } reader.Close(); } catch (Exception e) { Logger.Info(e.ToString()); } } } catch (Exception e) { Logger.Info(e.ToString()); } } } Status.Text = "Готово "; }
public void selectTechSignal(SignalInfo si, bool check) { si.treeNode.Checked = check; if (si.Children != null) { foreach (SignalInfo ch in si.Children) { selectTechSignal(ch, check); } } try { string kksA = TechASUDict[si.KKS]; string[] kksL = kksA.Split(new char[] { ';' }); foreach (string KKSAsu in kksL) { SignalInfo siAsu = FindSignal(ASURoot, KKSAsu, null); siAsu.treeNode.Checked = check; if (check) { if (siAsu.discr) SelectedDiscrSignals.Add(siAsu); else SelectedAnalogSignals.Add(siAsu); } else { if (siAsu.discr) SelectedDiscrSignals.Remove(siAsu); else SelectedAnalogSignals.Remove(siAsu); } } } catch { } }
public void readData(string fn, GraphPane graph) { SqlConnection con = DBSettings.getConnection(); con.Open(); Int64 timeStart = EPADB.GetIntDate(DateStart); Int64 timeEnd = EPADB.GetIntDate(DateEnd); Dictionary <Int64, Dictionary <string, double> > Data = new Dictionary <long, Dictionary <string, double> >(); Int64 time = timeStart; while (time <= timeEnd) { Data.Add(time, new Dictionary <string, double>()); foreach (SignalInfo si in epa.SelectedAnalogSignals) { Data[time].Add(si.KKS, double.NaN); } time += Step; } List <string> kksQList = new List <string>(); List <int> numSignQList = new List <int>(); List <int> timesQList = new List <int>(); Dictionary <int, int> timesDict = new Dictionary <int, int>(); List <int> timesList = new List <int>(); foreach (int ss in SignalsBySubSys.Keys) { foreach (string table in tables) { if (subSystemsByTables[table] != ss) { continue; } Status.Text = "Обработка таблицы " + table; SqlCommand com = con.CreateCommand(); com.CommandText = String.Format("Select * from {0} where time_page>={1} and time_page<={2}", table.Replace("state", "time"), timeStart, timeEnd); List <Int32> times = new List <int>(); try { Status.Text += "---|"; SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { try { int tm = reader.GetInt32(0); times.Add(tm); } catch { } } times.Sort(); reader.Close(); foreach (SignalInfo si in SignalsBySubSys[ss]) { kksQList.Add("'" + si.KKS + "'"); numSignQList.Add(si.numSign); if (kksQList.Count() <= 10 && si != SignalsBySubSys[ss].Last()) { continue; } string kksQ = String.Join(",", kksQList); string numQ = String.Join(",", numSignQList); kksQList.Clear(); timesDict.Clear(); numSignQList.Clear(); timesQList.Clear(); foreach (int t in Data.Keys) { if (t >= times.First() && t <= times.Last()) { int valT = times.First(tempT => { return(tempT >= t); }); if (valT - t < Step) { timesQList.Add(valT); timesDict.Add(valT, t); } } if (timesQList.Count < 100 && t != Data.Keys.Last()) { continue; } string timesQ = String.Join(",", timesQList); timesQList.Clear(); try { com = con.CreateCommand(); //com.CommandText = String.Format("Select kks_id_signal,time_page,data from {0} where time_page in ({2}) and kks_id_signal in ({1})", table, kksQ, timesQ); //com.CommandText = String.Format("Select kks_id_signal,time_page,data from {0} where time_page={2} and kks_id_signal = '{1}'", table, kks, valT); if (!epa.UseNumSignals) { com.CommandText = String.Format("Select kks_id_signal,time_page,data from {0} where time_page in ({2}) and kks_id_signal in ({1})", table, kksQ, timesQ); } else { com.CommandText = String.Format("Select kks_id_signal,time_page,data from {0} where time_page in ({2}) and num_sign in ({1})", table, numQ, timesQ); } Status.Text += "---|"; reader = com.ExecuteReader(); while (reader.Read()) { try { int timeRes = reader.GetInt32(1); string kksAsu = reader.GetString(0); double val = reader.GetFloat(2); long resultTime = timesDict[timeRes]; Data[resultTime][kksAsu] = val; } catch (Exception e) { Logger.Info(e.ToString()); } } reader.Close(); } catch (Exception e) { Logger.Info(e.ToString()); } } } } catch (Exception e) { Logger.Info(e.ToString()); } } } con.Close(); Status.Text = "Чтение завершено"; List <string> thAsuList = new List <string>(); List <string> thTechList = new List <string>(); foreach (SignalInfo si in epa.SelectedAnalogSignals) { thAsuList.Add(String.Format("<th>{0}</th>", si.ShortName)); try { string kksTech = epa.ASUTechDict[si.KKS]; SignalInfo tech = epa.FindSignal(epa.TechRoot, kksTech, null); thTechList.Add(String.Format("<th>{0}</th>", tech.ShortName)); } catch { thTechList.Add("<th>-</th>"); } } OutputData.writeToOutput(fn, String.Format("<table border='1'><tr><th rowspan='2'>Дата</th>{0}</tr><tr>{1}</tr>", string.Join(" ", thAsuList), string.Join(" ", thTechList))); foreach (int tm in Data.Keys) { OutputData.writeToOutput(fn, String.Format("<tr><th>{0}</th><td>{1}</td></tr>", EPADB.GetDate(tm), String.Join("</td><td>", Data[tm].Values))); } OutputData.writeToOutput(fn, "</table>"); graph.CurveList.Clear(); graph.XAxis.Scale.Min = Data.Keys.First(); graph.XAxis.Scale.Max = Data.Keys.Last(); graph.XAxis.Scale.MinAuto = false; graph.XAxis.Scale.MaxAuto = false; graph.XAxis.Title.IsVisible = false; graph.YAxis.IsVisible = false; graph.YAxis.Title.IsVisible = false; graph.Legend.FontSpec.Size = 6; graph.Legend.Location.X = 0; graph.Legend.Location.Y = 0; graph.Title.IsVisible = false; graph.YAxis.Scale.FontSpec.Size = 6; graph.YAxis.IsVisible = false; graph.XAxis.Scale.FontSpec.Size = 6; int index = 0; foreach (SignalInfo si in epa.SelectedAnalogSignals) { try { string name = si.ShortName; int axInd = graph.AddYAxis(""); graph.YAxisList[axInd].Color = Colors[index % 8]; graph.YAxisList[axInd].Scale.FontSpec.Size = 6; graph.YAxisList[axInd].Scale.FontSpec.FontColor = Colors[index % 8]; try { string kksTech = epa.ASUTechDict[si.KKS]; SignalInfo tech = epa.FindSignal(epa.TechRoot, kksTech, null); name = name + " (" + tech.ShortName + ")"; } catch { } PointPairList list = new PointPairList(); foreach (int tm in Data.Keys) { list.Add(new PointPair(tm, Data[tm][si.KKS])); } graph.AddCurve(name, list, Colors[index % 8], SymbolType.None); graph.CurveList[index].YAxisIndex = axInd; } catch (Exception e) { Logger.Info(e.ToString()); } graph.AxisChange(); index++; } }
public void fillSubTree(SignalInfo root) { if (!root.isLastTreeNode) { foreach (SignalInfo ch in root.Children) { fillSubTree(ch); } } else if (root.Children != null) { SignalInfo subRoot = new SignalInfo(); subRoot.Children = new List <SignalInfo>(); List <SignalInfo> forDel = new List <SignalInfo>(); foreach (SignalInfo si in root.Children) { if (!Signals.ContainsKey(si.kksDev)) { continue; } List <SignalGroup> groups = Signals[si.kksDev]; List <SignalGroup> subTree = new List <SignalGroup>(); try { int level = si.idLevel; int index = 0; while (index < groups.Count) { SignalGroup gr = groups[index]; if (gr.level == level) { subTree.Add(gr); level = gr.parent; index = -1; } index++; } } catch { } try { if (subTree.Count > 0) { SignalInfo siTemp = subRoot; for (int i = subTree.Count - 1; i >= 0; i--) { SignalGroup gr = subTree[i]; siTemp = fillSubRoot(siTemp, gr); } if (siTemp.Children == null) { siTemp.Children = new List <SignalInfo>(); } siTemp.Children.Add(si); forDel.Add(si); } } catch { } } foreach (SignalInfo del in forDel) { root.Children.Remove(del); } foreach (SignalInfo add in subRoot.Children) { bool found = false; foreach (SignalInfo s in root.Children) { if (s.KKS == add.KKS) { found = true; break; } } if (!found) { root.Children.Add(add); } } } }
public string getSubSysName(SignalInfo si) { if (si.subSys > 0) { try { return SubSystems[si.subSys]; } catch { } } return ""; }
public void readASU() { SqlConnection con = DBSettings.getConnection(); con.Open(); List<SignalInfo> asufull = new List<SignalInfo>(); SqlCommand com = con.CreateCommand(); Status.Text = "Чтение АСУ сигналов из БД"; com.CommandText = "Select kks_id_signal, full_name,short_name,sub_sys,value_step,kks_id_dev,id_level from asu_signals_full"; SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { SignalInfo si = new SignalInfo(); si.KKS = reader.GetString(0); si.FullName = reader.GetString(1); si.ShortName = reader.GetString(2); si.FullNameUp = si.FullName.ToUpper(); si.ShortNameUp = si.ShortName.ToUpper(); si.subSys = reader.GetInt32(3); si.valueStep = reader.GetString(4); si.kksDev = reader.GetString(5); si.idLevel = reader.GetInt32(6); try { si.numSign = NumSignals[si.KKS]; } catch { } asufull.Add(si); } reader.Close(); NumSignals.Clear(); SubSysTables.Clear(); Status.Text = "Чтение АСУ дерева из БД"; Dictionary<string, string> asu_tree = new Dictionary<string, string>(); com.CommandText = "Select * from asu_tree"; reader = com.ExecuteReader(); while (reader.Read()) { string kks = reader.GetString(3); string name = reader.GetString(2); asu_tree.Add(kks, name); } reader.Close(); con.Close(); SignalInfo root = new SignalInfo(); root.KKS = asu_tree.Keys.ToArray()[0]; root.FullName = asu_tree.Values.ToArray()[0]; createTree(root, asu_tree); Status.Text = "Формирование АСУ дерева"; fillTree(root, asufull); Status.Text = "Формирование АСУ групп"; fillSubTree(root); ASURoot = root.Children[0]; }
public void createTree(SignalInfo root, Dictionary<string, string> tree) { foreach (KeyValuePair<string, string> de in tree) { SignalInfo ch = new SignalInfo(); ch.KKS = de.Key; ch.FullName = de.Value; ch.ShortName = de.Value; ch.FullNameUp = ch.FullName.ToUpper(); ch.ShortNameUp = ch.ShortName.ToUpper(); if (isChild(root.KKS, ch.KKS, tree)) { if (root.Children == null) root.Children = new List<SignalInfo>(); root.Children.Add(ch); createTree(ch, tree); } } if (root.Children == null) root.isLastTreeNode = true; }
public void selectAsuSignal(SignalInfo si, bool check, bool selectLink) { si.treeNode.Checked = check; if (si.Children != null) { foreach (SignalInfo ch in si.Children) { selectAsuSignal(ch, check, selectLink); } } else { if (check) { if (si.discr) SelectedDiscrSignals.Add(si); else SelectedAnalogSignals.Add(si); } else { if (si.discr) SelectedDiscrSignals.Remove(si); else SelectedAnalogSignals.Remove(si); } if (selectLink) { try { string kksT = ASUTechDict[si.KKS]; string[] kksL = kksT.Split(new char[] { ';' }); foreach (string KKSTech in kksL) { SignalInfo siTech = FindSignal(TechRoot, KKSTech, null); siTech.treeNode.Checked = check; } } catch { } } } }
public TreeNode displayTree(SignalInfo si) { TreeNode node = new TreeNode(); node.Text = si.ShortName; node.ToolTipText = si.FullName; node.Name = si.KKS; si.discr = getSubSysName(si).Contains("Дискр"); if (TechASUDict.ContainsKey(si.KKS) || ASUTechDict.ContainsKey(si.KKS)) { node.ForeColor = Color.Blue; } if (DictAlgo.ContainsKey(si.KKS)) { node.Text += " [*]"; } si.treeNode = node; if (si.Children != null) { foreach (SignalInfo ch in si.Children) { TreeNode nodeCh = displayTree(ch); node.Nodes.Add(nodeCh); } } return node; }
public static string getSignalState(int state, SignalInfo si) { try { string[] vals = si.valueStep.Split(new char[] { ';' }); if (vals.Length > 1) { return vals[state]; } } catch { } switch (state) { case 0: return "Неопр"; case 1: return "Откл"; case 2: return "Вкл"; case 3: return "Ошибка"; } return "-"; }
public void readData(string fn) { OutputData.writeToOutput(fn, "<table border='1'><tr><th>Дата</th><th>kks_asu</th><th>kks_tech</th><th>name_asu</th><th>name_tech</th><th>state</th><th>source</th><th>subsys</th></tr>"); SqlConnection con = DBSettings.getConnection(); con.Open(); Int64 timeStart = EPADB.GetIntDate(DateStart); Int64 timeEnd = EPADB.GetIntDate(DateEnd); Dictionary <int, string> colors = new Dictionary <int, string>(); colors.Add(0, "white"); colors.Add(1, "PaleGreen"); colors.Add(2, "LightSkyBlue"); colors.Add(3, "LightCoral"); SortedList <DateTime, string> outputData = new SortedList <DateTime, string>(); foreach (string tab in tables) { SqlCommand com = con.CreateCommand(); Status.Text = "Чтение данных из таблицы " + tab; int index = 0; try { com.CommandText = String.Format("Select time,mcs,data,kks_id_signal,bsrc from {0} where time>={1} and time<={2}", tab, timeStart, timeEnd); if (epa.SelectedDiscrSignals.Count > 0) { int ss = subSystemsByTables[tab]; List <string> kksList = new List <string>(); List <int> numsList = new List <int>(); foreach (SignalInfo si in SignalsBySubSys[ss]) { kksList.Add("'" + si.KKS + "'"); numsList.Add(si.numSign); } if (!epa.UseNumSignals) { com.CommandText += String.Format(" and kks_id_signal in ({0})", String.Join(",", kksList)); } else { com.CommandText += String.Format(" and num_sign in ({0})", String.Join(",", numsList)); } } SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { try { index++; if (index % 1000 == 0) { Status.Text += "...|"; } DateTime dt = EPADB.GetDate(reader.GetInt32(0)); string kks = reader.GetString(3); int state = Int32.Parse(reader[2].ToString()); int src = Int32.Parse(reader[4].ToString()); int mcs = Int32.Parse(reader[1].ToString()); dt = dt.AddMilliseconds(mcs / 1000.0); SignalInfo siAsu = epa.FindSignal(epa.ASURoot, kks, null); SignalInfo siTech = null; try { string kksTech = epa.ASUTechDict[kks]; siTech = epa.FindSignal(epa.TechRoot, kksTech, null); } catch { } string color = "white"; try { color = colors[state]; } catch { } string outStr = String.Format("<tr bgColor='{0}'><th>{1}</th><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td><td>{6}</td><td>{7}</td><td>{8}</td></tr>", color, dt.ToString("dd.MM.yyyy HH:mm:ss,fff"), kks, siTech == null ? "-" : siTech.KKS, siAsu.ShortName, siTech == null ? "-" : siTech.ShortName, EPADB.getSignalState(state, siAsu), EPADB.getSignalSrc(src), siAsu.subSys); if (!outputData.ContainsKey(dt)) { outputData.Add(dt, ""); } outputData[dt] += "\r\n" + outStr; } catch (Exception e) { Logger.Info(e.ToString()); } } reader.Close(); } catch { } } con.Close(); foreach (string str in outputData.Values) { OutputData.writeToOutput(fn, str); } OutputData.writeToOutput(fn, "</table>"); Status.Text = "Отчет сформирован"; }