using Aitex.Common.Util; using Aitex.Core.UI.MVVM; using Aitex.Core.Util; using Aitex.Core.Utilities; using CyberX8_Simulator.Devices; using MECF.Framework.Common.Device.Festo; using MECF.Framework.Simulator.Core.Commons; using System.Collections.ObjectModel; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Xml.Linq; namespace CyberX8_Simulator.Views { /// /// FestoView.xaml 的交互逻辑 /// public partial class FestoView : UserControl { public FestoView() { InitializeComponent(); this.Loaded += OnViewLoaded; } private void OnViewLoaded(object sender, RoutedEventArgs e) { (DataContext as TimerViewModelBase)?.Start(); } } class FestoViewModel : SocketDeviceViewModel { #region 属性 public string Title { get { return "Festo Simulator"; } } private string _DOSelectedItem; [IgnorePropertyChange] public string DOSelectedItem { get { return _DOSelectedItem; } set { _DOSelectedItem = value; } } private int _DOInputValue; [IgnorePropertyChange] public int DOInputValue { get { return _DOInputValue; } set { _DOInputValue = value; } } private int _DOCurrentValue; [IgnorePropertyChange] public int DOCurrentValue { get { return _DOCurrentValue; } set { _DOCurrentValue = value; } } public ObservableCollection DONameItems { get; set; } public ObservableCollection DigitalOutputSelected { get; set; } #endregion public ICommand SetDOCommand { get; set; } public ICommand DOSelectionChangedCommand { get; set; } private FestoSocketSimulator _sim; public FestoViewModel(string str) : base("FestoViewModel") { int.TryParse(str, out int port); _sim = new FestoSocketSimulator(port); Init(_sim); InitData(port); SetDOCommand = new DelegateCommand(SetDOAction); DOSelectionChangedCommand = new DelegateCommand(DOSelectionChangedAction); } private void InitData(int port) { DigitalOutputSelected = new ObservableCollection { 0, 1 }; DONameItems = new ObservableCollection(); foreach (var item in _sim.FestoNameIndexDic.Keys) { DONameItems.Add(item); } } private void SetDOAction(object obj) { _sim.UpdataDOBytes(DOSelectedItem, DOInputValue); DOSelectionChangedAction(""); } private void DOSelectionChangedAction(object obj) { DOCurrentValue = _sim.GetDOData(DOSelectedItem); } } }