using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.ObjectModel; using System.Threading; using System.Windows; using System.Windows.Threading; using OpenSEMI.ClientBase; using OpenSEMI.ClientBase.IO; namespace VirgoUI.Client.Models.Common.IO { public class IO3ViewModel : BaseModel { protected override void OnInitialize() { base.OnInitialize(); //init I/O get the whole I/O info this.AIs = IO3Provider.Instance.InitIOData("PLC1.AIList"); this.AOs = IO3Provider.Instance.InitIOData("PLC1.AOList"); this.DIs = IO3Provider.Instance.InitIOData("PLC1.DIList"); this.DOs = IO3Provider.Instance.InitIOData("PLC1.DOList"); } protected override void OnActivate() { base.OnActivate(); BaseApp.Instance.UIHandler.Register("IO3View", GetIOs); } protected override void OnDeactivate(bool close) { base.OnDeactivate(close); BaseApp.Instance.UIHandler.UnRegister("IO3View"); } public void SetDO(IOItem _do) { IO3Provider.Instance.SetDO(_do.Name, !_do.Value); } public void SetAO(AOItem _ao) { IO3Provider.Instance.SetAO(_ao.Name, _ao.Value); } public void GetIOs() { //get I/O value and update UI Dictionary _ai = IO3Provider.Instance.GetIOData("PLC1.AIList"); Dictionary _ao = IO3Provider.Instance.GetIOData("PLC1.AOList"); Dictionary _di = IO3Provider.Instance.GetIOData("PLC1.DIList"); Dictionary _do = IO3Provider.Instance.GetIOData("PLC1.DOList"); foreach (IOItem item in AIs) { if (_ai.ContainsKey(item.Name)) item.Value = _ai[item.Name]; } foreach (IOItem item in AOs) { if (_ao.ContainsKey(item.Name)) item.Value = _ao[item.Name]; } foreach (IOItem item in DIs) { if (_di.ContainsKey(item.Name)) item.Value = _di[item.Name]; } foreach (IOItem item in DOs) { if (_do.ContainsKey(item.Name)) item.Value = _do[item.Name]; } } public ObservableCollection> AIs { get; private set; } public ObservableCollection AOs { get; private set; } public ObservableCollection> DIs { get; private set; } public ObservableCollection> DOs { get; private set; } } }