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; } } } }