using OpenTK.Graphics.ES20;
using SWRIS.Dtos;
using SWRIS.Enums;
using SWRIS.Extensions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace SWRIS.Models.ViewModel
{
public class EquipmentSettingViewModel : INotifyPropertyChanged
{
private int ropeNumber;
private string ropeName;
private string ipAddress;
private string serialNo;
private string supplier;
private int ropeCoreType;
private int wireMaterialType;
private int wireSurfaceType;
private int layType;
private bool disableAlarm;
private int[] inUseSensor = new int[] { 1, 2, 3, 4 };
private double liftHightRatio = 1;
private RiskLevel soundRiskLevel = RiskLevel.Moderate;
private ParameterData parameter;
private bool isConnected;
private RunningStatus runningStatus;
///
/// 绳号
///
public int RopeNumber
{
get { return ropeNumber; }
set
{
ropeNumber = value;
OnPropertyChanged(nameof(RopeNumber));
}
}
///
/// 钢丝绳名称
///
public string RopeName
{
get { return ropeName; }
set
{
ropeName = value;
OnPropertyChanged(nameof(RopeName));
}
}
///
/// Ip地址
///
public string IpAddress
{
get { return ipAddress; }
set
{
ipAddress = value;
OnPropertyChanged(nameof(IpAddress));
}
}
///
/// 序列号
///
public string SerialNo
{
get { return serialNo; }
set
{
serialNo = value;
OnPropertyChanged(nameof(SerialNo));
}
}
///
/// 供应商
///
public string Supplier
{
get { return supplier; }
set
{
supplier = value;
OnPropertyChanged(nameof(Supplier));
}
}
///
/// 绳芯类型 1 钢芯 2 纤维芯
///
public int RopeCoreType
{
get { return ropeCoreType; }
set
{
ropeCoreType = value;
OnPropertyChanged(nameof(RopeCoreType));
}
}
///
/// 钢丝材质 1 碳钢 2 不锈钢
///
public int WireMaterialType
{
get { return wireMaterialType; }
set
{
wireMaterialType = value;
OnPropertyChanged(nameof(WireMaterialType));
}
}
///
/// 表面状态 1 光面 2 A级镀锌 3 B级镀锌
///
public int WireSurfaceType
{
get { return wireSurfaceType; }
set
{
wireSurfaceType = value;
OnPropertyChanged(nameof(WireSurfaceType));
}
}
///
/// 捻向 1 右交互捻 2 左交互捻 3 右同向捻 4 左同向捻
///
public int LayType
{
get { return layType; }
set
{
layType = value;
OnPropertyChanged(nameof(LayType));
}
}
///
/// 绳长/高度倍率
///
public double LiftHightRatio
{
get { return liftHightRatio; }
set
{
liftHightRatio = value;
OnPropertyChanged(nameof(LiftHightRatio));
}
}
public RiskLevel SoundRiskLevel
{
get { return soundRiskLevel; }
set
{
soundRiskLevel = value;
OnPropertyChanged(nameof(SoundRiskLevel));
}
}
public ParameterData Parameter
{
get { return parameter; }
set
{
parameter = value;
OnPropertyChanged(nameof(Parameter));
}
}
public bool IsConnected
{
get { return isConnected; }
set
{
isConnected = value;
OnPropertyChanged(nameof(IsConnected));
}
}
public bool DisableAlarm
{
get { return disableAlarm; }
set
{
disableAlarm = value;
OnPropertyChanged(nameof(DisableAlarm));
}
}
public int[] InUseSensor
{
get { return inUseSensor; }
set
{
inUseSensor = value;
OnPropertyChanged(nameof(InUseSensor));
}
}
public RunningStatus RunningStatus
{
get { return runningStatus; }
set
{
runningStatus = value;
OnPropertyChanged(nameof(RunningStatus));
}
}
public List RopeCoreTypes => TypeExtension.ToKeyAndDescriptionList(typeof(RopeCoreType));
public List WireMaterialTypes => TypeExtension.ToKeyAndDescriptionList(typeof(WireMaterialType));
public List LayTypes => TypeExtension.ToKeyAndDescriptionList(typeof(LayType));
public List WireSurfaceTypes => TypeExtension.ToKeyAndDescriptionList(typeof(WireSurfaceType));
public List RiskLevels => TypeExtension.ToKeyAndDescriptionList(typeof(RiskLevel));
public event PropertyChangedEventHandler PropertyChanged;
protected internal virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ParameterData : INotifyPropertyChanged
{
private string mainBoardSoftwareVersion;
private short sensorCount;
private float samplingStep;
private short frequencyDivisionFactor;
private short timeDomainFrequency;
private short damageThreshold;
private short scrapUpperLimit;
private short frontMagnetLength;
private short backMagnetLength;
private float valueCoefficient;
private float effectiveStrokeLength;
private short zeroPositionCorrectionDuration;
private short zeroPositionCorrectionOffset;
private float warningValue;
private float alarmValue;
private short soundLightAlarmAutoResetMode;
private short wireRopeType;
private short wireRopeCount;
private float wireRopeLength;
private float wireRopeDiameter;
private short wireRopeStrandCount;
private short wireRopeStrandWireCount;
private EncoderDirection encoderDirection;
private DateTime? systemTime;
private float twistFactor;
///
/// 主板软件版本号
///
public string MainBoardSoftwareVersion
{
get => mainBoardSoftwareVersion;
set
{
mainBoardSoftwareVersion = value;
OnPropertyChanged(nameof(MainBoardSoftwareVersion));
}
}
///
/// 传感器数量
///
public short SensorCount
{
get => sensorCount;
set
{
sensorCount = value;
OnPropertyChanged(nameof(SensorCount));
}
}
///
/// 采样步长 单位:mm/点 4字节浮点数
///
public float SamplingStep
{
get => samplingStep;
set
{
samplingStep = value;
OnPropertyChanged(nameof(SamplingStep));
}
}
///
/// 分频系数
///
public short FrequencyDivisionFactor
{
get => frequencyDivisionFactor;
set
{
frequencyDivisionFactor = value;
OnPropertyChanged(nameof(FrequencyDivisionFactor));
}
}
///
/// 时域频率 2字节整型
///
public short TimeDomainFrequency
{
get => timeDomainFrequency;
set
{
timeDomainFrequency = value;
OnPropertyChanged(nameof(TimeDomainFrequency));
}
}
///
/// 损伤门限 2字节整型
///
public short DamageThreshold
{
get => damageThreshold;
set
{
damageThreshold = value;
OnPropertyChanged(nameof(DamageThreshold));
}
}
///
/// 报废上限
///
public short ScrapUpperLimit
{
get => scrapUpperLimit;
set
{
scrapUpperLimit = value;
OnPropertyChanged(nameof(ScrapUpperLimit));
}
}
///
/// 前磁极长度 单位:mm 2字节整型
///
public short FrontMagnetLength
{
get => frontMagnetLength;
set
{
frontMagnetLength = value;
OnPropertyChanged(nameof(FrontMagnetLength));
}
}
///
/// 后磁极长度 单位:mm 2字节整型
///
public short BackMagnetLength
{
get => backMagnetLength;
set
{
backMagnetLength = value;
OnPropertyChanged(nameof(BackMagnetLength));
}
}
///
/// 量值系数 4字节浮点数
///
public float ValueCoefficient
{
get => valueCoefficient;
set
{
valueCoefficient = value;
OnPropertyChanged(nameof(ValueCoefficient));
}
}
///
/// 零位有效行程长度,单位:m 4字节浮点数
///
public float EffectiveStrokeLength
{
get => effectiveStrokeLength;
set
{
effectiveStrokeLength = value;
OnPropertyChanged(nameof(EffectiveStrokeLength));
}
}
///
/// 零位矫正静止时长,单位:秒 2字节整型
///
public short ZeroPositionCorrectionDuration
{
get => zeroPositionCorrectionDuration;
set
{
zeroPositionCorrectionDuration = value;
OnPropertyChanged(nameof(ZeroPositionCorrectionDuration));
}
}
///
/// 零位矫正允许偏移量,单位:mm 2字节整型
///
public short ZeroPositionCorrectionOffset
{
get => zeroPositionCorrectionOffset;
set
{
zeroPositionCorrectionOffset = value;
OnPropertyChanged(nameof(ZeroPositionCorrectionOffset));
}
}
///
/// 预警(黄色报警)量值 4字节浮点数
///
public float WarningValue
{
get => warningValue;
set
{
warningValue = value;
OnPropertyChanged(nameof(WarningValue));
}
}
///
/// 报警(红色报警)量值 4字节浮点数
///
public float AlarmValue
{
get => alarmValue;
set
{
alarmValue = value;
OnPropertyChanged(nameof(AlarmValue));
}
}
///
/// 声光报警自动重置方式,0=不自动重置,>0=延时自动重置,-1=开始新一次检测时重置
///
public short SoundLightAlarmAutoResetMode
{
get => soundLightAlarmAutoResetMode;
set
{
soundLightAlarmAutoResetMode = value;
OnPropertyChanged(nameof(SoundLightAlarmAutoResetMode));
}
}
///
/// 钢丝绳类型 0=塔吊单绳,1=电梯排绳
///
public short WireRopeType
{
get => wireRopeType;
set
{
wireRopeType = value;
OnPropertyChanged(nameof(WireRopeType));
}
}
///
///钢丝绳数量 1字节
///
public short WireRopeCount
{
get => wireRopeCount;
set
{
wireRopeCount = value;
OnPropertyChanged(nameof(WireRopeCount));
}
}
///
/// 钢丝绳长度,单位:m 4字节浮点数
///
public float WireRopeLength
{
get => wireRopeLength;
set
{
wireRopeLength = value;
OnPropertyChanged(nameof(WireRopeLength));
}
}
///
/// 钢丝绳直径,单位:mm 4字节浮点数
///
public float WireRopeDiameter
{
get => wireRopeDiameter;
set
{
wireRopeDiameter = value;
OnPropertyChanged(nameof(WireRopeDiameter));
}
}
///
/// 钢丝绳股数 1字节
///
public short WireRopeStrandCount
{
get => wireRopeStrandCount;
set
{
wireRopeStrandCount = value;
OnPropertyChanged(nameof(WireRopeStrandCount));
}
}
///
/// 钢丝绳每股丝数,2字节整型
///
public short WireRopeStrandWireCount
{
get => wireRopeStrandWireCount;
set
{
wireRopeStrandWireCount = value;
OnPropertyChanged(nameof(WireRopeStrandWireCount));
}
}
///
/// 编码器方向,1=正向,2=反向
///
public EncoderDirection EncoderDirection
{
get => encoderDirection;
set
{
encoderDirection = value;
OnPropertyChanged(nameof(EncoderDirection));
}
}
///
/// 系统时间
///
public DateTime? SystemTime
{
get => systemTime;
set
{
systemTime = value;
OnPropertyChanged(nameof(SystemTime));
}
}
///
/// 判伤捻距系数,浮点数,判伤捻距默认为7d,可通过此参数设置系数来调整(与损伤判定相关)。
/// 默认值为1.0,设置2.0表示判伤捻距为2 x 7 = 14d
///
public float TwistFactor
{
get => twistFactor;
set
{
twistFactor = value;
OnPropertyChanged(nameof(TwistFactor));
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected internal virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}