139 lines
5.3 KiB
C#
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; }
|
|
}
|
|
|
|
}
|
|
}
|