121 lines
3.4 KiB
C#
121 lines
3.4 KiB
C#
using System;
|
|
using System.Windows.Media;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore;
|
|
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers;
|
|
|
|
namespace ProductionUiCordonelLegacy.Data
|
|
{
|
|
public class PickingItemCheckReturn
|
|
{
|
|
public Boolean? Result;
|
|
public String Msg;
|
|
}
|
|
|
|
public abstract class PickingResultBaseData : IPickingResultData
|
|
{
|
|
public String Ident { get; set; }
|
|
|
|
public Int32 Index { get; set; }
|
|
|
|
public String CheckText { get; set; }
|
|
|
|
public String CurrentValueText { get; set; }
|
|
|
|
public Boolean? Result { get; set; }
|
|
|
|
public Boolean HasError { get; set; }
|
|
|
|
public Brush ResultColor => getColorFromResult();
|
|
public abstract Func<PickingItemCheckReturn> Action { get; }
|
|
|
|
private Brush getColorFromResult()
|
|
{
|
|
var converter = new BrushConverter();
|
|
var brush = (Brush)converter.ConvertFromString("#000000");
|
|
|
|
if (Result.HasValue) // && a.Result.Value ))
|
|
{
|
|
if (!Result.Value)
|
|
{
|
|
brush = (Brush)converter.ConvertFromString("#FF8000");
|
|
}
|
|
else
|
|
{
|
|
brush = (Brush)converter.ConvertFromString("#419C14");
|
|
}
|
|
|
|
}
|
|
return brush;
|
|
}
|
|
|
|
}
|
|
public interface IPickingResultData
|
|
{
|
|
String Ident { get; set; }
|
|
|
|
Int32 Index { get; set; }
|
|
String CheckText { get; set; }
|
|
|
|
String CurrentValueText { get; set; }
|
|
|
|
Boolean? Result { get; set; }
|
|
|
|
Boolean HasError { get; set; }
|
|
|
|
Brush ResultColor { get; }
|
|
|
|
Func<PickingItemCheckReturn> Action { get; }
|
|
}
|
|
public class PickingResultRegisterData : PickingResultBaseData
|
|
{
|
|
public String RegisterIdent { get; set; }
|
|
|
|
public GenesisMeter ReadMeter { get; set; }
|
|
|
|
public Object CompareObject { get; set; }
|
|
|
|
public override Func<PickingItemCheckReturn> Action => staticReadAndCompareAction();
|
|
|
|
public Func<PickingItemCheckReturn> staticReadAndCompareAction()
|
|
{
|
|
return delegate
|
|
{
|
|
var retComp = new PickingItemCheckReturn();
|
|
retComp.Result = null;
|
|
retComp.Msg = "-";
|
|
if (ReadMeter != null && ReadMeter.IsLoggedOn)
|
|
{
|
|
var r = ReadMeter.ReadRegister(RegisterIdent);
|
|
|
|
if (CompareObject is UInt32 intNumber)
|
|
{
|
|
retComp.Result = intNumber.Equals(RegisterConverter.ByteArrayToValue<UInt32>(r));
|
|
retComp.Msg = intNumber.ToString();
|
|
}
|
|
else if (CompareObject is Boolean boolCompare)
|
|
{
|
|
retComp.Result = boolCompare.Equals(RegisterConverter.ByteArrayToValue<Boolean>(r));
|
|
retComp.Msg = boolCompare.ToString();
|
|
}
|
|
|
|
}
|
|
|
|
return retComp;
|
|
};
|
|
}
|
|
}
|
|
|
|
public class PickingResultCustomCheckData : PickingResultBaseData
|
|
{
|
|
|
|
public PickingResultCustomCheckData(Func<PickingItemCheckReturn> action)
|
|
{
|
|
_action = action;
|
|
}
|
|
|
|
public readonly Func<PickingItemCheckReturn> _action;
|
|
public override Func<PickingItemCheckReturn> Action => _action;
|
|
}
|
|
|
|
}
|