139 lines
4.4 KiB
C#
139 lines
4.4 KiB
C#
using Aurora;
|
|
using Aurora.Api;
|
|
using Aurora.View;
|
|
using Hermes;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.Http.Headers;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
|
|
namespace AuroraHeightSensor.Keyence.Views
|
|
{
|
|
public class UCHeightSensorControlViewModel : NotifyPropertyChangedBase
|
|
{
|
|
|
|
private readonly HeightSensor _Device;
|
|
|
|
private string _Id;
|
|
public string Id { get => _Id; set => SetProperty(ref _Id, value); }
|
|
|
|
|
|
private double _CH0Value;
|
|
public double CH0Value { get => _CH0Value; set => SetProperty(ref _CH0Value, value); }
|
|
|
|
private double _CH1Value;
|
|
public double CH1Value { get => _CH1Value; set => SetProperty(ref _CH1Value, value); }
|
|
|
|
private double _CH2Value;
|
|
public double CH2Value { get => _CH2Value; set => SetProperty(ref _CH2Value, value); }
|
|
|
|
private double _CH3Value;
|
|
public double CH3Value { get => _CH3Value; set => SetProperty(ref _CH3Value, value); }
|
|
|
|
private string _Receive;
|
|
public string Receive { get => _Receive; set => SetProperty(ref _Receive, value); }
|
|
|
|
private bool _IsCh00 = false;
|
|
public bool IsCh00 { get => _IsCh00; set => SetProperty(ref _IsCh00, value); }
|
|
|
|
private bool _IsCh01 = true;
|
|
public bool IsCh01 { get => _IsCh01; set => SetProperty(ref _IsCh01, value); }
|
|
|
|
private bool _IsCh02 = false;
|
|
public bool IsCh02 { get => _IsCh02; set => SetProperty(ref _IsCh02, value); }
|
|
|
|
private bool _IsCh03 = false;
|
|
public bool IsCh03 { get => _IsCh03; set => SetProperty(ref _IsCh03, value); }
|
|
|
|
|
|
|
|
public ICommand CMD_ViewLoaded { get; }
|
|
public ICommand CMD_ViewUnloaded { get; }
|
|
public ICommand CMD_Read { get; }
|
|
public ICommand CMD_ZeroShift { get; }
|
|
public ICommand CMD_ZeroShiftReset { get; }
|
|
public ICommand CMD_AutoTransmit { get; }
|
|
public ICommand OnMeasured { get; private set; }
|
|
public ICommand CMD_Reset { get; }
|
|
|
|
public UCHeightSensorControlViewModel(IAuroraEnvironment env, string deviceId)
|
|
{
|
|
Id = deviceId;
|
|
_Device = env.DeviceManager.GetDevice(deviceId) as HeightSensor;
|
|
CMD_Read = new DelegateCommand(Read);
|
|
CMD_ZeroShift = new DelegateCommand(SetZeroShift);
|
|
CMD_ZeroShiftReset = new DelegateCommand(SetZeroShiftReset);
|
|
CMD_AutoTransmit = new DelegateCommand(StartStopAutoTransmit);
|
|
CMD_Reset = new DelegateCommand(ResetValue);
|
|
|
|
OnMeasured = new DelegateCommand(HandleMeasuredData);
|
|
}
|
|
|
|
private void ResetValue(object obj)
|
|
{
|
|
CH1Value = 0;
|
|
CH1Value = 0;
|
|
CH2Value = 0;
|
|
CH3Value = 0;
|
|
_Device.Reset();
|
|
}
|
|
|
|
private void HandleMeasuredData(object obj)
|
|
{
|
|
if (obj is double measValue) {
|
|
CH1Value = measValue;
|
|
}
|
|
}
|
|
|
|
private int _MeasureCountMax = 0;
|
|
private int _MeasureCount = 0;
|
|
|
|
private void StartStopAutoTransmit(object obj)
|
|
{
|
|
_MeasureCountMax = (obj is int count) ? count : 1;
|
|
if (_MeasureCountMax <= 0) return;
|
|
|
|
_MeasureCount = 0;
|
|
_Device.StartStopAutoTransmit((obj is string strParam && strParam.ToUpper() == "TRUE"), OnMeasured);
|
|
}
|
|
|
|
private void Read(object obj)
|
|
{
|
|
if(_Device.MeasureAll(out List<double> val) == E1.OK) {
|
|
if(val.Count() > 1) {
|
|
CH0Value = val[0];
|
|
CH1Value = val[1];
|
|
CH2Value = val[2];
|
|
CH3Value = val[3];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void SetZeroShift(object obj)
|
|
{
|
|
eChannel ch = eChannel.CH0;
|
|
if (IsCh00) ch = eChannel.CH0;
|
|
else if(IsCh01) ch = eChannel.CH1;
|
|
else if (IsCh02) ch = eChannel.CH2;
|
|
else if (IsCh03) ch = eChannel.CH3;
|
|
|
|
_Device.SetZeroShift(ch);
|
|
}
|
|
|
|
private void SetZeroShiftReset(object obj)
|
|
{
|
|
eChannel ch = eChannel.CH0;
|
|
if (IsCh00) ch = eChannel.CH0;
|
|
else if (IsCh01) ch = eChannel.CH1;
|
|
else if (IsCh02) ch = eChannel.CH2;
|
|
else if (IsCh03) ch = eChannel.CH3;
|
|
|
|
_Device.SetZeroShiftReset(ch);
|
|
}
|
|
}
|
|
}
|