141 lines
6.6 KiB
C#
141 lines
6.6 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
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
|
|
{
|
|
/// <summary>
|
|
/// Digital Inputs allow collected data to behave consistently with a digital data source
|
|
/// the settings are for configuring firmware appropriately and for transforming data for consumption
|
|
/// </summary>
|
|
public class DigitalInputSetting : SensorData
|
|
{
|
|
/// <summary>
|
|
/// constructor and copy constructor
|
|
/// </summary>
|
|
public DigitalInputSetting() : base()
|
|
{
|
|
SetDefaults(this);
|
|
}
|
|
public DigitalInputSetting(IDigitalInDbRecord record) : base()
|
|
{
|
|
SetDefaults(this);
|
|
try
|
|
{
|
|
DatabaseId = record.Id;
|
|
SettingName = record.SerialNumber;
|
|
ISOCode = record.ISOCode;
|
|
ISOChannelName = record.ISOChannelName;
|
|
UserCode = record.UserCode;
|
|
UserChannelName = record.UserChannelName;
|
|
Broken = record.Broken;
|
|
DoNotUse = record.DoNotUse;
|
|
LastModified = record.LastModified;
|
|
LastUpdatedBy = record.LastModifiedBy;
|
|
InputMode = record.Mode;
|
|
DIUnits = record.MeasurementUnit;
|
|
//Since the ISOCode is not stored in the SensorsDigitalIn table like it is in SensorsAnalog, create one
|
|
SetFilterAndFilterClassISO(record.FilterClass, true, true); //Always set Filter to 0
|
|
EID = record.EID;
|
|
UserValue1 = record.UserValue1;
|
|
UserValue2 = record.UserValue2;
|
|
UserValue3 = record.UserValue3;
|
|
TagsBlobBytes = record.UserTags;
|
|
Comment = record.UserValue1;
|
|
ScaleMultiplier.FromDbSerializeString(record.ScaleMultiplier.ToSerializeDbString());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
APILogger.Log("Failed to process: ", ex);
|
|
}
|
|
}
|
|
public DigitalInputSetting(IDataRecord reader) : base()
|
|
{
|
|
SetDefaults(this);
|
|
try
|
|
{
|
|
DatabaseId = Convert.ToInt32(reader["Id"]);
|
|
SettingName = Convert.ToString(reader["SerialNumber"]);
|
|
ISOCode = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.ISOCode.ToString()]);
|
|
ISOChannelName = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.ISOChannelName.ToString()]);
|
|
UserCode = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.UserCode.ToString()]);
|
|
UserChannelName = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.UserChannelName.ToString()]);
|
|
Broken = Convert.ToBoolean(reader[DbOperations.DigitalInputSettings.Fields.Broken.ToString()]);
|
|
DoNotUse = Convert.ToBoolean(reader[DbOperations.DigitalInputSettings.Fields.DoNotUse.ToString()]);
|
|
LastModified = Convert.ToDateTime(reader[DbOperations.DigitalInputSettings.Fields.LastModified.ToString()]);
|
|
LastUpdatedBy = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.LastModifiedBy.ToString()]);
|
|
InputMode = (DigitalInputModes)Convert.ToInt32(reader[DbOperations.DigitalInputSettings.Fields.SettingMode.ToString()]);
|
|
|
|
DIUnits = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.MeasurementUnit.ToString()]);
|
|
//Since the ISOCode is not stored in the SensorsDigitalIn table like it is in SensorsAnalog, create one
|
|
SetFilterAndFilterClassISO(new FilterClass(Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.FilterClass.ToString()])), true, true); //Always set Filter to 0
|
|
EID = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.eId.ToString()]);
|
|
UserValue1 = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.UserValue1.ToString()]);
|
|
UserValue2 = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.UserValue2.ToString()]);
|
|
UserValue3 = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.UserValue3.ToString()]);
|
|
TagsBlobBytes = (byte[])reader[DbOperations.DigitalInputSettings.Fields.UserTags.ToString()];
|
|
Comment = Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.UserValue1.ToString()]);
|
|
ScaleMultiplier.FromDbSerializeString(Convert.ToString(reader[DbOperations.DigitalInputSettings.Fields.ScaleMultiplier.ToString()]));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
APILogger.Log("Failed to process: ", ex);
|
|
}
|
|
}
|
|
public DigitalInputSetting(DigitalInputSetting copy)
|
|
: base(copy)
|
|
{
|
|
SetDefaults(this);
|
|
}
|
|
|
|
public static void SetDefaults(SensorData sd)
|
|
{
|
|
sd.AxisNumber = 0;
|
|
sd.NumberOfAxes = 1;
|
|
sd.Capacity = 2400;
|
|
sd.Bridge = SensorConstants.BridgeType.DigitalInput;
|
|
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 Input Setting";
|
|
sd.Shunt = ShuntMode.None;
|
|
sd.MeasureExcitation = false;
|
|
sd.MeasureNoise = false;
|
|
}
|
|
|
|
public DigitalInputSetting(SensorData sd)
|
|
: base(sd)
|
|
{
|
|
Bridge = SensorConstants.BridgeType.DigitalInput;
|
|
SetDefaults(this);
|
|
UserSerialNumber = sd.UserSerialNumber;
|
|
SerialNumber = sd.SerialNumber;
|
|
UserValue1 = sd.UserValue1;
|
|
UserValue2 = sd.UserValue2;
|
|
UserValue3 = sd.UserValue3;
|
|
}
|
|
|
|
public static void Commit(SensorData setting)
|
|
{
|
|
SetDefaults(setting);
|
|
|
|
var record = new DigitalInDbRecord(setting, setting.TagsBlobBytes, setting.ScaleMultiplier);
|
|
var hr = DbOperations.SensorsDigitalInUpdateInsert(record);
|
|
if (0 == hr)
|
|
{
|
|
setting.Id = record.Id;
|
|
}
|
|
}
|
|
}
|
|
}
|