350 lines
19 KiB
C#
350 lines
19 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace DASFactoryDb.Diagnostics
|
|
{
|
|
public static class Diagnostics
|
|
{
|
|
|
|
/// <summary>
|
|
/// clears all diagnostic actions for all channels for a given das
|
|
/// </summary>
|
|
/// <param name="idasRecordId"></param>
|
|
public static void ClearDiagnosticActionsAllChannels(int idasRecordId)
|
|
{
|
|
if (!DbWrapper.Connected) { return; }
|
|
using (var cmd = DbWrapper.GetDASFactoryCommand())
|
|
{
|
|
try
|
|
{
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.CommandText = "sp_DiagnosticActionsClear";
|
|
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
|
|
{ Value = idasRecordId });
|
|
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int)
|
|
{ Value = null });
|
|
|
|
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorNumber);
|
|
|
|
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorMessage);
|
|
cmd.ExecuteNonQuery();
|
|
DbWrapper.ProcessReturn(errorNumber, errorMessage);
|
|
}
|
|
finally
|
|
{
|
|
cmd.Connection.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void InsertDiagnosticAction(int dasRecordId,
|
|
int dasChannelNumber,
|
|
bool measureExcitation,
|
|
bool measureOffset,
|
|
bool checkDigitalState,
|
|
bool measureInternalOffset,
|
|
bool removeOffset,
|
|
bool measureNoise,
|
|
bool performShuntCheck,
|
|
bool squibFireCheck,
|
|
bool performVoltageInsertCheck,
|
|
bool performCalSignalCheck,
|
|
bool measureBridgeResistance
|
|
)
|
|
{
|
|
if (!DbWrapper.Connected) { return; }
|
|
using (var cmd = DbWrapper.GetDASFactoryCommand())
|
|
{
|
|
try
|
|
{
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.CommandText = "sp_DiagnosticsActionsInsert";
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
|
|
{ Value = dasRecordId });
|
|
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
|
|
cmd.Parameters.Add(
|
|
new SqlParameter("@MeasureExcitation", SqlDbType.Bit) { Value = measureExcitation });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasureOffset", SqlDbType.Bit) { Value = measureOffset });
|
|
cmd.Parameters.Add(
|
|
new SqlParameter("@CheckDigitalState", SqlDbType.Bit) { Value = checkDigitalState });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasureInternalOffset", SqlDbType.Bit)
|
|
{ Value = measureInternalOffset });
|
|
cmd.Parameters.Add(new SqlParameter("@RemoveOffset", SqlDbType.Bit) { Value = removeOffset });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasureNoise", SqlDbType.Bit) { Value = measureNoise });
|
|
cmd.Parameters.Add(
|
|
new SqlParameter("@PerformShuntCheck", SqlDbType.Bit) { Value = performShuntCheck });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibFireCheck", SqlDbType.Bit) { Value = squibFireCheck });
|
|
cmd.Parameters.Add(new SqlParameter("@PerformVoltageInsertCheck", SqlDbType.Bit)
|
|
{ Value = performVoltageInsertCheck });
|
|
cmd.Parameters.Add(new SqlParameter("@PerformCalSignalCheck", SqlDbType.Bit)
|
|
{ Value = performCalSignalCheck });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasureBridgeResistance", SqlDbType.Bit)
|
|
{ Value = measureBridgeResistance });
|
|
|
|
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorNumber);
|
|
|
|
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorMessage);
|
|
|
|
var newId = new SqlParameter("@new_id", SqlDbType.Int)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(newId);
|
|
|
|
cmd.ExecuteNonQuery();
|
|
DbWrapper.ProcessReturn(errorNumber, errorMessage);
|
|
}
|
|
finally
|
|
{
|
|
cmd.Connection.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Clears all diagnostics/events results for all channels for a das
|
|
/// </summary>
|
|
/// <param name="idasRecordId"></param>
|
|
public static void ClearExistingDiagnosticsAllChannels(int idasRecordId = -1)
|
|
{
|
|
if (!DbWrapper.Connected)
|
|
{
|
|
return;
|
|
}
|
|
|
|
using (var cmd = DbWrapper.GetDASFactoryCommand())
|
|
{
|
|
try
|
|
{
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.CommandText = "sp_DiagnosticsResultsClear";
|
|
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
|
|
{ Value = idasRecordId });
|
|
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int)
|
|
{ Value = null });
|
|
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = null });
|
|
|
|
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorNumber);
|
|
|
|
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorMessage);
|
|
cmd.ExecuteNonQuery();
|
|
DbWrapper.ProcessReturn(errorNumber, errorMessage);
|
|
}
|
|
finally
|
|
{
|
|
cmd.Connection.Dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void InsertAnalogDiagnosticResult(int iDASRecordId,
|
|
int dasChannelNumber,
|
|
int eventNumber,
|
|
double scalefactorMilliVoltsPerADC,
|
|
double expectedExcitationMilliVolts,
|
|
double? measuredExcitationMilliVolts,
|
|
bool negativeExcitation,
|
|
double? measuredOffsetMilliVolts,
|
|
double? measuredInternalOffsetMilliVolts,
|
|
double? autoZeroPercentDeviation,
|
|
short? finalOffsetADC,
|
|
int? removedOffsetADC,
|
|
int? removedInternalOffsetADC,
|
|
double? noisePercentFullScale,
|
|
bool shuntDeflectionFailed,
|
|
bool calSignalCheckFailed,
|
|
double? measuredShuntDeflectionMv,
|
|
double? measuredCalSignalMv,
|
|
double? targetCalSignalMv,
|
|
double? targetGain,
|
|
double? measuredGain,
|
|
double? queriedGain,
|
|
double? targetShuntDeflectionMv,
|
|
double? bridgeResistance,
|
|
double zeroMVInADC,
|
|
double windowAverageADC)
|
|
{
|
|
if (!DbWrapper.Connected) { return; }
|
|
using (var cmd = DbWrapper.GetDASFactoryCommand())
|
|
{
|
|
try
|
|
{
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.CommandText = "sp_DiagnosticsResultsAnalogInsert";
|
|
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
|
|
{ Value = iDASRecordId });
|
|
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
|
|
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@ScalefactorMilliVoltsPerADC", SqlDbType.Decimal) { Value = scalefactorMilliVoltsPerADC });
|
|
cmd.Parameters.Add(new SqlParameter("@ExpectedExcitationMilliVolts", SqlDbType.Decimal) { Value = expectedExcitationMilliVolts });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredExcitationMilliVolts", SqlDbType.Decimal) { Value = measuredExcitationMilliVolts });
|
|
cmd.Parameters.Add(new SqlParameter("@NegativeExcitation", SqlDbType.Bit) { Value = negativeExcitation });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredOffsetMilliVolts", SqlDbType.Decimal) { Value = measuredOffsetMilliVolts });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredInternalOffsetMilliVolts", SqlDbType.Decimal) { Value = measuredInternalOffsetMilliVolts });
|
|
cmd.Parameters.Add(new SqlParameter("@AutoZeroPercentDeviation ", SqlDbType.Decimal) { Value = autoZeroPercentDeviation });
|
|
cmd.Parameters.Add(new SqlParameter("@FinalOffsetADC", SqlDbType.SmallInt) { Value = finalOffsetADC });
|
|
cmd.Parameters.Add(new SqlParameter("@RemovedOffsetADC", SqlDbType.Int) { Value = removedOffsetADC });
|
|
cmd.Parameters.Add(new SqlParameter("@RemovedInternalOffsetADC", SqlDbType.Int) { Value = removedInternalOffsetADC });
|
|
cmd.Parameters.Add(new SqlParameter("@NoisePercentFullScale", SqlDbType.Decimal) { Value = noisePercentFullScale });
|
|
cmd.Parameters.Add(new SqlParameter("@ShuntDeflectionFailed", SqlDbType.Bit) { Value = shuntDeflectionFailed });
|
|
cmd.Parameters.Add(new SqlParameter("@CalSignalCheckFailed", SqlDbType.Bit) { Value = calSignalCheckFailed });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredShuntDeflectionMv", SqlDbType.Decimal) { Value = measuredShuntDeflectionMv });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredCalSignalMv", SqlDbType.Decimal) { Value = measuredCalSignalMv });
|
|
cmd.Parameters.Add(new SqlParameter("@TargetCalSignalMv", SqlDbType.Decimal) { Value = targetCalSignalMv });
|
|
cmd.Parameters.Add(new SqlParameter("@TargetGain", SqlDbType.Decimal) { Value = targetGain });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredGain", SqlDbType.Decimal) { Value = measuredGain });
|
|
cmd.Parameters.Add(new SqlParameter("@QueriedGain", SqlDbType.Decimal) { Value = queriedGain });
|
|
cmd.Parameters.Add(new SqlParameter("@TargetShuntDeflectionMv", SqlDbType.Decimal) { Value = targetShuntDeflectionMv });
|
|
cmd.Parameters.Add(new SqlParameter("@BridgeResistance", SqlDbType.Decimal) { Value = bridgeResistance });
|
|
cmd.Parameters.Add(new SqlParameter("@ZeroMVInADC", SqlDbType.Decimal) { Value = zeroMVInADC });
|
|
cmd.Parameters.Add(new SqlParameter("@WINDOWAverageADC", SqlDbType.Decimal) { Value = windowAverageADC });
|
|
|
|
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorNumber);
|
|
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorMessage);
|
|
var newId = new SqlParameter("@new_id", SqlDbType.Int)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(newId);
|
|
|
|
cmd.ExecuteNonQuery();
|
|
DbWrapper.ProcessReturn(errorNumber, errorMessage);
|
|
}
|
|
finally
|
|
{
|
|
cmd.Connection.Dispose();
|
|
}
|
|
}
|
|
}
|
|
public static void InsertSquibDiagnosticResult(int iDASRecordId,
|
|
int dasChannelNumber,
|
|
int eventNumber,
|
|
double[] squibFireCurrentData,
|
|
double[] squibFireVoltageData,
|
|
double[] squibFireTimeAxis,
|
|
double? measuredDurationMS,
|
|
double? measuredDelayMS,
|
|
bool? squibFirePassed,
|
|
bool? squibDurationPassed,
|
|
bool? squibDelayPassed,
|
|
double squibThreshold,
|
|
double squibVoltageScaler,
|
|
double squibCurrentScaler)
|
|
{
|
|
if (!DbWrapper.Connected) { return; }
|
|
using (var cmd = DbWrapper.GetDASFactoryCommand())
|
|
{
|
|
try
|
|
{
|
|
//this was firing annoying exceptions when squibFireCurrent was null ...
|
|
if (null == squibFireCurrentData) { return; }
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.CommandText = "sp_DiagnosticsResultsSquibInsert";
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
|
|
{ Value = iDASRecordId });
|
|
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
|
|
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
|
|
|
|
var currentData = new List<byte>(8 * squibFireCurrentData.Length);
|
|
var voltageData = new List<byte>(8 * squibFireVoltageData.Length);
|
|
var timeAxis = new List<byte>(8 * squibFireTimeAxis.Length);
|
|
|
|
foreach (var d in squibFireCurrentData)
|
|
{
|
|
currentData.AddRange(BitConverter.GetBytes(d));
|
|
}
|
|
foreach (var d in squibFireVoltageData)
|
|
{
|
|
voltageData.AddRange(BitConverter.GetBytes(d));
|
|
}
|
|
foreach (var d in squibFireTimeAxis)
|
|
{
|
|
timeAxis.AddRange(BitConverter.GetBytes(d));
|
|
}
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredDurationMS", SqlDbType.Decimal) { Value = measuredDurationMS });
|
|
cmd.Parameters.Add(new SqlParameter("@MeasuredDelayMS", SqlDbType.Decimal) { Value = measuredDelayMS });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibFirePassed", SqlDbType.Bit) { Value = squibFirePassed });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibDurationPassed", SqlDbType.Bit) { Value = squibDurationPassed });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibDelayPassed", SqlDbType.Bit) { Value = squibDelayPassed });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibFireCurrentData", SqlDbType.VarBinary) { Value = currentData.ToArray() });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibFireVoltageData", SqlDbType.VarBinary) { Value = voltageData.ToArray() });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibFireTimeAxis", SqlDbType.VarBinary) { Value = timeAxis.ToArray() });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibThreshold", SqlDbType.Decimal) { Value = squibThreshold });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibVoltageScaler", SqlDbType.Decimal) { Value = squibVoltageScaler });
|
|
cmd.Parameters.Add(new SqlParameter("@SquibCurrentScaler", SqlDbType.Decimal) { Value = squibCurrentScaler });
|
|
|
|
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorNumber);
|
|
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorMessage);
|
|
var newId = new SqlParameter("@new_id", SqlDbType.Int)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(newId);
|
|
cmd.ExecuteNonQuery();
|
|
DbWrapper.ProcessReturn(errorNumber, errorMessage);
|
|
}
|
|
finally
|
|
{
|
|
cmd.Connection.Dispose();
|
|
}
|
|
}
|
|
}
|
|
public static void InsertDigitalDiagnosticResult(int iDASRecordId,
|
|
int dasChannelNumber,
|
|
int eventNumber,
|
|
bool digitalInputActiveState)
|
|
{
|
|
if (!DbWrapper.Connected) { return; }
|
|
using (var cmd = DbWrapper.GetDASFactoryCommand())
|
|
{
|
|
try
|
|
{
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.CommandText = "sp_DiagnosticsResultsDigitalInsert";
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
|
|
{ Value = iDASRecordId });
|
|
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber });
|
|
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
|
|
cmd.Parameters.Add(new SqlParameter("@DigitalInputActiveState", SqlDbType.Bit)
|
|
{ Value = digitalInputActiveState });
|
|
|
|
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorNumber);
|
|
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(errorMessage);
|
|
var newId = new SqlParameter("@new_id", SqlDbType.Int)
|
|
{ Direction = ParameterDirection.Output };
|
|
cmd.Parameters.Add(newId);
|
|
|
|
cmd.ExecuteNonQuery();
|
|
DbWrapper.ProcessReturn(errorNumber, errorMessage);
|
|
}
|
|
finally
|
|
{
|
|
cmd.Connection.Dispose();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|