Files
DP44/DataPRO/SensorDB/DigitalOutputSetting.cs
2026-04-17 14:55:32 -04:00

139 lines
5.3 KiB
C#

using System;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using DTS.Common.Classes.Sensors;
using DTS.Common.Enums;
using DTS.Common.Enums.Sensors;
using DTS.Common.Interface.Sensors;
using DTS.Common.Storage;
using DTS.Common.Utilities.Logging;
namespace DTS.SensorDB
{
public class DigitalOutputSetting : SensorData
{
public string ChannelDescription
{
get => SerialNumber;
set
{
SerialNumber = value;
OnPropertyChanged("ChannelDescription");
}
}
public DigitalOutputSetting(DigitalOutputSetting copy) : base(copy)
{
SetDefaults(this);
}
public DigitalOutputSetting()
{
SetDefaults(this);
}
//public DigitalOutputSetting(SensorData sd)
// : base(sd)
//{
// SetDefaults(this);
//}
private static void SetDefaults(SensorData sd)
{
sd.SupportedExcitation = new[] { ExcitationVoltageOptions.ExcitationVoltageOption.Volt5 };
sd.Bridge = SensorConstants.BridgeType.TOMDigital;
sd.AxisNumber = 0;
sd.NumberOfAxes = 1;
sd.Capacity = 1;
sd.DisplayUnit = "V";
sd.BridgeResistance = double.NaN;
sd.CheckOffset = false;
sd.Manufacturer = "Generic";
sd.OffsetToleranceHigh = 2500;
sd.OffsetToleranceLow = 2500;
sd.Model = "Digital Output Setting";
sd.Shunt = ShuntMode.None;
sd.MeasureExcitation = false;
sd.MeasureNoise = false;
}
public DigitalOutputSetting(IDigitalOutDbRecord copy)
{
DatabaseId = copy.DatabaseId;
Broken = copy.Broken;
DoNotUse = copy.DoNotUse;
Bridge = SensorConstants.BridgeType.TOMDigital;
Version = copy.Version;
DigitalOutputMode = copy.DOMode;
DigitalOutputLimitDuration = copy.LimitDuration;
LastUpdatedBy = copy.ModifiedBy;
LastModified = copy.LastModified;
DigitalOutputDurationMS = copy.DODuration;
DigitalOutputDelayMS = copy.DODelay;
ChannelDescription = copy.SerialNumber;
SerialNumber = copy.SerialNumber;
if (null == copy.TagsBlobBytes)
{
TagsBlobBytes = null;
}
else if (copy.TagsBlobBytes.Any())
{
var bytes = new byte[copy.TagsBlobBytes.Length];
Array.Copy(copy.TagsBlobBytes, bytes, copy.TagsBlobBytes.Length);
TagsBlobBytes = bytes;
}
else
{
TagsBlobBytes = new byte[0];
}
SetDefaults(this);
}
public DigitalOutputSetting(IDataRecord reader)//, bool pre20 = false)
{
DatabaseId = Convert.ToInt32(reader["Id"]);
Broken = Convert.ToBoolean(reader[DbOperations.DigitalOutputSettings.Fields.Broken.ToString()]);
DoNotUse = Convert.ToBoolean(reader[DbOperations.DigitalOutputSettings.Fields.DoNotUse.ToString()]);
Bridge = SensorConstants.BridgeType.TOMDigital;
try
{
Version = Convert.ToInt32(reader[DbOperations.DigitalOutputSettings.Fields.Version.ToString()]);
DigitalOutputMode =
(DigitalOutputModes)Convert.ToInt16(
reader[DbOperations.DigitalOutputSettings.Fields.OutputMode.ToString()]);
//_localOnly = Convert.ToBoolean(reader[DbOperations.DigitalOutputSettings.Fields.LocalOnly.ToString()]);
DigitalOutputLimitDuration =
Convert.ToBoolean(reader[DbOperations.DigitalOutputSettings.Fields.LimitDuration.ToString()]);
LastUpdatedBy =
Convert.ToString(reader[DbOperations.DigitalOutputSettings.Fields.LastModifiedBy.ToString()]);
LastModified =
Convert.ToDateTime(reader[DbOperations.DigitalOutputSettings.Fields.LastModified.ToString()]);
DigitalOutputDurationMS =
Convert.ToDouble(reader[DbOperations.DigitalOutputSettings.Fields.DurationMSFloat.ToString()]);
DigitalOutputDelayMS =
Convert.ToDouble(reader[DbOperations.DigitalOutputSettings.Fields.DelayMS.ToString()]);
ChannelDescription = Convert.ToString(reader["SerialNumber"]);
TagsBlobBytes = (byte[])reader[DbOperations.DigitalOutputSettings.Fields.UserTags.ToString()];
}
catch (Exception ex)
{
APILogger.Log("Failed to process: ", ex);
}
SetDefaults(this);
}
public static void Commit(SensorData setting)
{
SetDefaults(setting);
var digitalOut = new DigitalOutDbRecord(setting, setting.TagsBlobBytes);
var hr = DbOperations.SensorsDigitalOutUpdateInsert(digitalOut);
if (0 == hr) { setting.DatabaseId = digitalOut.DatabaseId; }
}
}
}