You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
4.7 KiB

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Threading;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Input;
using GummingCommon;
using GummingEntity;
using GummingSupport;
using GummingControl;
using System.Text;
using GummingBusiness;
using Newtonsoft.Json;
using GummingLine;
namespace Gumming
{
public class IOViewModule : ViewModelBase
{
#region base parameters
private int rows = 20;
private int pagenumber = 1;
public IOView View { get; set; }
private bool IsConfirm;
private bool isLoading;
private System.Timers.Timer timer;
#endregion
#region constructor
public IOViewModule()
{
View = new IOView();
View.DataContext = this;
InitializeCommands();
InitializeParameters();
}
private void InitializeCommands()
{
InputCommand = new DelegateCommand(OnInputCommand);
OutputCommand = new DelegateCommand(OnOutputCommand);
}
public override void InitializeParameters(object content = null)
{
IsConfirm = false;
WindowTitle = "";
}
~IOViewModule()
{
}
public void LoadDefaultValue()
{
Ports = new ObservableCollection<HardPortsEntity>();
for (int i = 0; i < Global.InputIOs.Count; i++)
{
Ports.Add(Global.InputIOs[i]);
}
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Interval = 5000;
timer.Elapsed += timer_Elapsed;
timer.Start();
}
}
#endregion
#region Binding Properties
public string WindowTitle { get; private set; }
private string _TotalRecords;
public string TotalRecords
{
get
{
return _TotalRecords;
}
set
{
_TotalRecords = value;
OnPropertyChanged("TotalRecords");
}
}
private ObservableCollection<HardPortsEntity> _Ports;
public ObservableCollection<HardPortsEntity> Ports
{
get
{
return _Ports;
}
set
{
_Ports = value;
OnPropertyChanged("Ports");
}
}
private ObservableCollection<HardPortsEntity> _PortViews;
public ObservableCollection<HardPortsEntity> PortViews
{
get
{
return _PortViews;
}
set
{
_PortViews = value;
OnPropertyChanged("PortViews");
}
}
#endregion
#region Binding Commands
private ICommand _InputCommand;
public ICommand InputCommand
{
get
{
return _InputCommand;
}
set
{
_InputCommand = value;
OnPropertyChanged("InputCommand");
}
}
private ICommand _OutputCommand;
public ICommand OutputCommand
{
get
{
return _OutputCommand;
}
set
{
_OutputCommand = value;
OnPropertyChanged("OutputCommand");
}
}
#endregion
#region Private Methods
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
for (int i = 0; i < Ports.Count; i++)
{
var port = Global.InputIOs?.FirstOrDefault(q => q.PortCode == Ports[i].PortCode);
if (port != null)
{
Ports[i].IsOpen = port.IsOpen;
}
port = Global.OutputIOs?.FirstOrDefault(q => q.PortCode == Ports[i].PortCode);
if (port != null)
{
Ports[i].IsOpen = port.IsOpen;
}
}
}
private void OnInputCommand(Object sender)
{
Ports.Clear();
for (int i = 0; i < Global.InputIOs.Count; i++)
{
Ports.Add(Global.InputIOs[i]);
}
}
private void OnOutputCommand(Object sender)
{
Ports.Clear();
for (int i = 0; i < Global.OutputIOs.Count; i++)
{
Ports.Add(Global.OutputIOs[i]);
}
}
#endregion
}
}