| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | using Aitex.Core.UI.MVVM;using Aitex.Core.Utilities;using PunkHPX8_Simulator.Devices;using MECF.Framework.Simulator.Core.Commons;using System.Collections.ObjectModel;using System.Windows;using System.Windows.Controls;using System.Windows.Input;namespace PunkHPX8_Simulator.Views{    /// <summary>    /// GalilView.xaml 的交互逻辑    /// </summary>    public partial class GalilView : UserControl    {        public GalilView()        {            InitializeComponent();            this.Loaded += OnViewLoaded;        }        private void OnViewLoaded(object sender, RoutedEventArgs e)        {            (DataContext as TimerViewModelBase)?.Start();        }    }    class GalilViewModel : SocketDeviceViewModel    {        #region 属性        public string Title        {            get { return "Galil Simulator"; }        }        private string _inputsSelectedItem;        [IgnorePropertyChange]        public string InputsSelectedItem        {            get            {                return _inputsSelectedItem;            }            set            {                _inputsSelectedItem = value;            }        }        private int _inputValue;        [IgnorePropertyChange]        public int InputValue        {            get            {                return _inputValue;            }            set            {                _inputValue = value;            }        }        private int _inputCurrentValue;        [IgnorePropertyChange]        public int InputCurrentValue        {            get            {                return _inputCurrentValue;            }            set            {                _inputCurrentValue = value;            }        }        public ObservableCollection<string> InputsNameItems { get; set; }        public ObservableCollection<int> DigitalOutputSelected { get; set; }        #endregion        #region 内部变量        public ICommand SetInputsCommand { get; set; }        public ICommand InputsSelectionChangedCommand { get; set; }        private GalilSocketSimulator _sim;        #endregion        public GalilViewModel(string str) : base("GalilViewModel")        {            int.TryParse(str, out int port);            _sim = new GalilSocketSimulator(port);            Init(_sim);            InitData(port);            SetInputsCommand = new DelegateCommand<object>(SetInputsAction);            InputsSelectionChangedCommand = new DelegateCommand<object>(InputsSelectionChangedAction);        }        private void InitData(int port)        {            DigitalOutputSelected = new ObservableCollection<int> { 0, 1 };            InputsNameItems = new ObservableCollection<string>();            foreach (var item in _sim.InputDataNameDIDic.Keys)            {                InputsNameItems.Add(item);            }        }        private void SetInputsAction(object obj)        {            _sim.UpdateInputByte(InputsSelectedItem, InputValue);            InputsSelectionChangedAction("");        }        private void InputsSelectionChangedAction(object obj)        {            InputCurrentValue = _sim.GetInputData(InputsSelectedItem);        }    }}
 |