123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using FestoDebugger.Beckoff;
- using FestoDebugger.Models;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.ComponentModel;
- using System.Data;
- using System.Linq;
- using System.Net;
- using System.Net.Sockets;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Threading;
- namespace FestoDebugger.ViewModels
- {
- public class MainViewModel : ViewModelBase
- {
- #region 内部变量
- private static bool IsInDesignMode => DesignerProperties.GetIsInDesignMode(new DependencyObject());
- private ObservableCollection<SignalModuleData> _signalModuleDatas;
- /// <summary>
- /// 定时器
- /// </summary>
- DispatcherTimer _timer;
- #endregion
- #region 属性
- public ObservableCollection<SignalModuleData> SignalModuleDatas
- {
- get => _signalModuleDatas;
- set => SetProperty(ref _signalModuleDatas, value);
- }
- #endregion
- public MainViewModel()
- {
- if (IsInDesignMode)
- {
- return;
- }
-
- LoadSignalConfig();
-
- SignalModuleDatas = new ObservableCollection<SignalModuleData>();
- if (_timer == null)
- {
- _timer = new DispatcherTimer();
- _timer.Interval = TimeSpan.FromMilliseconds(100);
- _timer.Tick += Timer_Tick;
- }
- _timer.Start();
-
- }
-
- /// <summary>
- /// 加载配置文件,初始化数据
- /// </summary>
- private void LoadSignalConfig()
- {
- BeckhoffManager.Instance.Initialize();
- TwincatAdoManager.Instance.Initialize();
- }
- /// <summary>
- /// 定时器执行
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Timer_Tick(object sender, EventArgs e)
- {
- Dictionary<string, object> NameValueDic = BeckhoffIOManager.Instance.GetNameValueDic();
- foreach (KeyValuePair<string, object> kvp in NameValueDic)
- {
- bool exists = SignalModuleDatas.Any(p => p.ModuleName == kvp.Key);
- if(!exists)
- {
- SignalModuleData signalModuleData = new SignalModuleData();
- signalModuleData.ModuleName = kvp.Key;
- signalModuleData.SignalOn = (bool)kvp.Value;
- SignalModuleDatas.Add(signalModuleData);
- }
- else
- {
- SignalModuleDatas.FirstOrDefault(p => p.ModuleName == kvp.Key).SignalOn = (bool)kvp.Value;
- }
- }
- }
- }
- }
-
|