public WatchItem(int index, ESignalType type) { this.index = index; this.signalType = type; switch (type) { case ESignalType.DI: DIStruct signaldi = DIStruct.FindByIndex(index); signaldi.PropertyChanged += Signal_PropertyChanged; break; case ESignalType.AI: AIStruct signalai = AIStruct.FindByIndex(index); signalai.PropertyChanged += Signal_PropertyChanged; break; case ESignalType.DO: DOStruct signaldo = DOStruct.FindByIndex(index); signaldo.PropertyChanged += Signal_PropertyChanged; break; case ESignalType.AO: AOStruct signalao = AOStruct.FindByIndex(index); signalao.PropertyChanged += Signal_PropertyChanged; break; } }
/// <summary> /// актуализировать привязку /// </summary> public void RefreshLink() { if (index > -1) { switch (signalType) { case ESignalType.DI: DIStruct signaldi = DIStruct.FindByIndex(index); signaldi.PropertyChanged += Signal_PropertyChanged; break; case ESignalType.AI: AIStruct signalai = AIStruct.FindByIndex(index); signalai.PropertyChanged += Signal_PropertyChanged; break; case ESignalType.DO: DOStruct signaldo = DOStruct.FindByIndex(index); signaldo.PropertyChanged += Signal_PropertyChanged; break; case ESignalType.AO: AOStruct signalao = AOStruct.FindByIndex(index); signalao.PropertyChanged += Signal_PropertyChanged; break; } } }
private void Empty_Filter(object sender, FilterEventArgs e) { AIStruct item = e.Item as AIStruct; if (item != null) { if (item.NameAI == null) { e.Accepted = !hideEmpty; } else { e.Accepted = true; } } }
private void Name_Filter(object sender, FilterEventArgs e) { AIStruct item = e.Item as AIStruct; if (item != null) { if (item.NameAI != null) { if (item.NameAI.ToLower().Contains(NameFilter.ToLower())) { e.Accepted = true; } else { e.Accepted = false; } } } }
/// <summary> /// Обновление ссылок /// </summary> public void UpdateRefs() { ABB = DOStruct.FindByIndex(_ABBindxArrDO); ABO = DOStruct.FindByIndex(_ABOindxArrDO); ABO2 = DOStruct.FindByIndex(_ABO2indxArrDO); MBC12 = DIStruct.FindByIndex(_MBC12indxArrDI); MBC22 = DIStruct.FindByIndex(_MBC22indxArrDI); ECB = DIStruct.FindByIndex(_ECBindxArrDI); ECO = DIStruct.FindByIndex(_ECO12indxArrDI); CT_AI = AIStruct.FindByIndex(_CTindxArrDI); MBC11 = DIStruct.FindByIndex(_MBC11indxArrDI); MBC21 = DIStruct.FindByIndex(_MBC21indxArrDI); ECx = DIStruct.FindByIndex(_ECxindxArrDI); ECO11 = DIStruct.FindByIndex(_ECO11indxArrDI); EC = DIStruct.FindByIndex(_ECindxArrDI); /*current = AIStruct.FindByIndex(_current_indexArrAi); * RPM = AIStruct.FindByIndex(_RPMindxArrAI);*/ }
private void Filter_Func(object sender, FilterEventArgs e) { AIStruct item = e.Item as AIStruct; if (item != null) { if (item.NameAI == "") { e.Accepted = !hideEmpty; } else { if ((item.NameAI.ToLower().Contains(_nameFilter.ToLower())) && (item.TegAI.ToLower().Contains(_tagFilter.ToLower()))) { e.Accepted = true; } else { e.Accepted = false; } } } }
private static void ReadSignals(OleDbConnection conn) { OleDbCommand cmd = new OleDbCommand { Connection = conn }; // Get all Sheets in Excel File DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); // Loop through all Sheets to get data string sheetName = ""; //==================================================== ЧТЕНИЕ ТАБЛИЦЫ СИГНАЛОВ ========================================================== foreach (DataRow dr in dtSheet.Rows) { sheetName = dr["TABLE_NAME"].ToString(); if (sheetName.Contains("Таблица сигналов")) { //LogViewModel.WriteLine("Таблица сигналов найдена, чтение данных..."); LogWriter.AppendLog("Таблица сигналов найдена, чтение данных..."); break; } } // Get all rows from the Sheet cmd.CommandText = "SELECT * FROM [" + sheetName + "]"; DataTable dt = new DataTable { TableName = sheetName }; OleDbDataAdapter da = new OleDbDataAdapter(cmd); da.Fill(dt); // ds.Tables.Add(dt); foreach (DataColumn col in dt.Columns) { LogWriter.AppendLog(col.ColumnName); } //LogViewModel.WriteLine(col.ColumnName); //--- тип сигнала ai,di,do --- string signalType = ""; //---адрес сигнала --- double currentAddr = 0; //---- номер бита если попадется int bit = 0; //---- string tagName = ""; string signalName = ""; //--- номер сигнала, пригодится--- int NSign = 0; for (int i = 0; i < dt.Rows.Count; i++) { // mod =(string)dt.Rows[i].ItemArray[1]; if (!(dt.Rows[i].ItemArray[1] is DBNull)) { signalType = (string)dt.Rows[i].ItemArray[1]; } // addr = (string)dt.Rows[i].ItemArray[6]; // if (!(dt.Rows[i].ItemArray[6] is DBNull)) if (dt.Rows[i].ItemArray[6] is double) { currentAddr = (double)dt.Rows[i].ItemArray[6]; } else if (dt.Rows[i].ItemArray[6] is string) { currentAddr = double.Parse((string)dt.Rows[i].ItemArray[6]); } try { if (dt.Rows[i].ItemArray[7] is string) { bit = int.Parse((string)dt.Rows[i].ItemArray[7]); } else if (dt.Rows[i].ItemArray[7] is double) { bit = (int)((double)dt.Rows[i].ItemArray[7]); } else { bit = 0; } if (dt.Rows[i].ItemArray[8] is string) { NSign = int.Parse((string)dt.Rows[i].ItemArray[8]); } else if (dt.Rows[i].ItemArray[8] is double) { NSign = (int)((double)dt.Rows[i].ItemArray[8]); } else { NSign = 0; } } catch (Exception ex) { LogWriter.AppendLog(ex.Message); } try { tagName = (string)dt.Rows[i].ItemArray[4]; } catch { tagName = ""; } try { signalName = (string)dt.Rows[i].ItemArray[5]; } catch { signalName = ""; } if (signalType.ToLower() == "ai" && signalName != "") { AIStruct ai = new AIStruct { En = true, NameAI = signalName, TegAI = tagName, PLCAddr = (int)currentAddr - 300000 + 40000 }; AIStruct.items.Add(ai); //LogViewModel.WriteLine("прочитан сигнал AI: " + ai.NameAI); } if (signalType.ToLower() == "di" && signalName != "") { DIStruct di = new DIStruct { En = true, NameDI = signalName, TegDI = tagName, PLCAddr = (int)currentAddr - 300000 + 40000, indxBitDI = bit, Nsign = NSign }; DIStruct.items.Add(di); } if (signalType.ToLower() == "do" && signalName != "") { DOStruct _do = new DOStruct { En = true, TegDO = tagName, NameDO = signalName, PLCAddr = (int)currentAddr - 400000, indxBitDO = bit, Nsign = NSign }; DOStruct.items.Add(_do); } } cmd = null; }
void ReadTableAI(StreamReader reader) { int Nline = 2; string line; //CultureInfo culture = new CultureInfo("ru-RU"); CultureInfo culture = new CultureInfo("en-US"); //считываем страницу DI try { reader.ReadLine();//пропускаем строку с заголовками List <AIStruct> items = new List <AIStruct>(); while (!reader.EndOfStream) { line = reader.ReadLine(); string[] values = line.Split('\t'); if (values.Count() < 11) { continue; // System.Windows.Forms.MessageBox.Show("Ошибка чтения файла"); } AIStruct item = new AIStruct { En = bool.Parse(values[0]), indxAI = int.Parse(values[1]), OPCtag = values[2], PLCAddr = int.Parse(values[3]), PLCDestType = (EPLCDestType)Enum.Parse(typeof(EPLCDestType), values[4]), Forced = bool.Parse(values[5]), ForcedValue = float.Parse(values[6], culture), fValAI = float.Parse(values[7], culture), minACD = ushort.Parse(values[8], culture), maxACD = ushort.Parse(values[9], culture), minPhis = float.Parse(values[10], culture), maxPhis = float.Parse(values[11], culture) }; if (values.Length > 11) { item.TegAI = values[12]; } if (values.Length > 12) { item.NameAI = values[13]; } items.Add(item); Nline++; } // Debug.WriteLine(count.ToString() + " successfuly parsed"); // AIStruct.items.Clear(); foreach (AIStruct item in items) { AIStruct.items.Add(item); } //DITableViewModel.Instance.Init(DIStruct.items); // dataGridDI.ItemsSource = DITableViewModel.Instance.viewSource.View; //обновление ссылок foreach (KLStruct kl in KLTableViewModel.KL) { kl.UpdateRefs(); } foreach (ZDStruct zd in ZDTableViewModel.ZDs) { zd.UpdateRefs(); } foreach (VSStruct vs in VSTableViewModel.VS) { vs.UpdateRefs(); } foreach (MPNAStruct mpna in MPNATableViewModel.MPNAs) { mpna.UpdateRefs(); } foreach (USOCounter counter in CountersTableViewModel.Counters) { counter.Refresh(); } foreach (WatchItem item in WatchItem.Items) { item.RefreshLink(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Ошибка импорта таблицы AI в строке " + Nline.ToString() + ":\n\r" + ex.Message); } }
public WatchItem(AIStruct signal) { index = signal.indxAI; signalType = ESignalType.AI; signal.PropertyChanged += Signal_PropertyChanged; }