laatzen/Common/Logic/ProductionOrderCore/ProgrammingParameters.cs
Thomas Wiedebusch f25fe69c9d RegisterRestorer
2024-02-15 09:47:29 +01:00

152 lines
4.7 KiB
C#

using System;
using Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes;
namespace Xylem.Common.Logic.ProductionOrderCore
{
/// <summary>
/// Source for final properties of Cordonel
/// </summary>
public enum ProgrammingSource
{
Vako,
Csd,
ProcessOrFix,
Order
}
public enum ReadCompare
{
NoCompare,
Equal,
True,
Near,
}
public enum isForProcessStep
{
NotSet,
UnlockMeter,
Programming,
LockMeter,
SetShippingState
}
/// <summary>
/// Values for single registers
/// </summary>
public class ProgrammingParameters
{
/// <summary>
/// Single register setup value assignment
/// </summary>
/// <param name="registerName"></param>
/// <param name="registerValue"></param>
/// <param name="programmingSource"></param>
/// <param name="realValue"></param>
/// <param name="typeName"></param>
/// <param name="compare"></param>
public ProgrammingParameters(String registerName, Byte[] registerValue, ProgrammingSource programmingSource = ProgrammingSource.Vako,
Object realValue = null, String typeName = "", ReadCompare compare = ReadCompare.NoCompare)
{
RegisterName = registerName;
RegisterValue = registerValue;
Source = programmingSource;
TypeName = typeName;
if (!string.IsNullOrEmpty(TypeName))
{
switch (TypeName)
{
case "System.TimeT":
RealValue = Convert.ToInt32(realValue);
DataType = typeof(TimeT);
break;
case "System.Boolean":
RealValue = Convert.ToBoolean(realValue);
DataType = typeof(Boolean);
break;
case "System.Byte":
RealValue = Convert.ToByte(realValue);
DataType = typeof(Byte);
break;
case "System.SByte":
RealValue = Convert.ToSByte(realValue);
DataType = typeof(SByte);
break;
case "System.UInt16":
RealValue = Convert.ToUInt16(realValue);
DataType = typeof(UInt16);
break;
case "System.Int16":
RealValue = Convert.ToInt16(realValue);
DataType = typeof(Int16);
break;
case "System.UInt32":
RealValue = Convert.ToUInt32(realValue);
DataType = typeof(UInt32);
break;
case "System.Int32":
RealValue = Convert.ToInt32(realValue);
DataType = typeof(Int32);
break;
case "System.UInt64":
RealValue = Convert.ToUInt64(realValue);
DataType = typeof(UInt64);
break;
case "System.Int64":
RealValue = Convert.ToInt64(realValue);
DataType = typeof(Int64);
break;
case "System.String":
DataType = typeof(String);
break;
case "System.UInt96":
DataType = typeof(UInt96);
break;
case "System.UInt128":
DataType = typeof(UInt128);
break;
default:
throw new NotImplementedException($"DataType {TypeName} is not supported. For Register {RegisterName}");
}
}
Compare = compare;
}
/// <summary>
/// The register name
/// </summary>
public String RegisterName { get; set; }
/// <summary>
/// The register value converted to raw bytes by register converter
/// </summary>
public Byte[] RegisterValue { get; set; }
public ProgrammingSource Source { get; set; }
public Object RealValue { get; set; }
public String TypeName { get; set; }
public Type DataType { get; set; }
public ReadCompare Compare { get; set; }
public void CreateRealValueTypesafe()
{
if (TypeName != "")
{
}
}
}
}