using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Runtime.Serialization; using System.Text; using System.Windows.Input; using Aitex.Core.UI.MVVM; namespace Aitex.Core.Common.DeviceData { [DataContract] [Serializable] public class AITWaterFlowMeterData : INotifyPropertyChanged, IDeviceData { public event PropertyChangedEventHandler PropertyChanged; public void InvokePropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public void InvokePropertyChanged() { PropertyInfo[] ps = this.GetType().GetProperties(); foreach (PropertyInfo p in ps) { InvokePropertyChanged(p.Name); if (p.PropertyType == typeof (ICommand)) { DelegateCommand cmd = p.GetValue(this, null) as DelegateCommand; if (cmd != null) cmd.RaiseCanExecuteChanged(); } } FieldInfo[] fi = this.GetType().GetFields(); foreach (FieldInfo p in fi) { InvokePropertyChanged(p.Name); if (p.FieldType == typeof (ICommand)) { DelegateCommand cmd = p.GetValue(this) as DelegateCommand; if (cmd != null) cmd.RaiseCanExecuteChanged(); } } } /// /// 设备的唯一名称,UI与RT交互的ID /// [DataMember] public string DeviceName { get; set; } /// /// 显示在界面上的名称 /// [DataMember] public string DisplayName { get; set; } /// /// IO 表中定义的物理编号,物理追溯使用 比如: M122 /// [DataMember] public string DeviceSchematicId { get; set; } [DataMember] public string Unit { get; set; } [DataMember] public string Description { get; set; } /// /// 量程 /// [DataMember] public double Scale { get; set; } /// /// 设定值 /// [DataMember] public double SetPoint { get; set; } [DataMember] public double FeedBack { get; set; } /// /// 默认值 /// [DataMember] public double DefaultValue { get; set; } /// /// 是否有报警 /// [DataMember] public bool IsWarning { get; set; } /// /// alarm或是erro时显示的信息 /// [DataMember] public string ErroMessage { get; set; } /// /// MFC,PC /// [DataMember] public string Type { get; set; } [DataMember] public double Factor { get; set; } [DataMember] public bool IsOutOfTolerance { get; set; } public AITWaterFlowMeterData() { DisplayName = "Undefined"; Factor = 1.0; Unit = "sccm"; Type = "FS"; } public void Update(IDeviceData data) { throw new NotImplementedException(); } } /// /// 在Spin项目中设定流量计报警值使用 /// [DataContract] [Serializable] public class FlowMeterAlarmItem: INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void InvokePropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public void InvokePropertyChanged() { PropertyInfo[] ps = this.GetType().GetProperties(); foreach (PropertyInfo p in ps) { InvokePropertyChanged(p.Name); if (p.PropertyType == typeof (ICommand)) { DelegateCommand cmd = p.GetValue(this, null) as DelegateCommand; if (cmd != null) cmd.RaiseCanExecuteChanged(); } } FieldInfo[] fi = this.GetType().GetFields(); foreach (FieldInfo p in fi) { InvokePropertyChanged(p.Name); if (p.FieldType == typeof (ICommand)) { DelegateCommand cmd = p.GetValue(this) as DelegateCommand; if (cmd != null) cmd.RaiseCanExecuteChanged(); } } } [DataMember] public string Name { get; set; } [DataMember] public string DeviceType { get; set; } [DataMember] public double LowLimit { get; set; } [DataMember] public double UpperLimit { get; set; } [DataMember] public string Unit { get; set; } } }