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; } } }
void ReadTableAO(StreamReader reader, out int count) { count = 0; string line; //CultureInfo culture = new CultureInfo("ru-RU"); CultureInfo culture = new CultureInfo("en-US"); try { reader.ReadLine(); //пропускаем строку с заголовками // List<AOStruct> items = new List<AOStruct>(); while (!reader.EndOfStream) { line = reader.ReadLine(); string[] values = line.Split('\t'); if (values.Count() < 11) { continue; // System.Windows.Forms.MessageBox.Show("Ошибка чтения файла"); } AOStruct item = new AOStruct(); item.En = bool.Parse(values[0]); item.indx = int.Parse(values[1]); item.OPCtag = values[2]; item.PLCAddr = int.Parse(values[3]); item.PLCDestType = (EPLCDestType)Enum.Parse(typeof(EPLCDestType), values[4]); item.Forced = bool.Parse(values[5]); //item.ForcedValue = float.Parse(values[6], culture); item.fVal = float.Parse(values[6], culture); item.minACD = ushort.Parse(values[7], culture); item.maxACD = ushort.Parse(values[8], culture); item.minPhis = float.Parse(values[9], culture); item.maxPhis = float.Parse(values[10], culture); if (values.Length > 10) { item.TagName = values[11]; } if (values.Length > 11) { item.Name = values[12]; } // items.Add(item); AOStruct.items.Add(item); } count = AOStruct.items.Count; //обновление ссылок 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("Ошибка импорта таблицы AO:\n\r" + ex.Message); } }
public WatchItem(AOStruct signal) { index = signal.indx; signalType = ESignalType.AO; signal.PropertyChanged += Signal_PropertyChanged; }