init
This commit is contained in:
@@ -0,0 +1,342 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using DataPROWin7.DataModel.Classes.Hardware;
|
||||
using DTS.Common.Converters;
|
||||
using DTS.Common.Enums.Hardware;
|
||||
using DTS.Common.Enums.Sensors;
|
||||
using DTS.Common.Interface.DataRecorders;
|
||||
using DTS.Common.SharedResource.Strings;
|
||||
using DTS.Common.Constant.DASSpecific;
|
||||
|
||||
namespace DataPROWin7
|
||||
{
|
||||
public class ChannelRepresentation
|
||||
{
|
||||
public enum ChannelTypeEnum
|
||||
{
|
||||
SQUIB,
|
||||
TOMDigital,
|
||||
DigitalInput,
|
||||
Other
|
||||
}
|
||||
|
||||
private readonly ChannelTypeEnum _channelType = ChannelTypeEnum.Other;
|
||||
|
||||
public ChannelRepresentation(DataModel.DASHardware h, DTS.DASLib.Service.DASChannel c,
|
||||
int startingChannelNumber)
|
||||
{
|
||||
//adjust the starting channel number (which appears to be a DAS channel number) to a module channel number
|
||||
if (h.CareAboutModules)
|
||||
{
|
||||
startingChannelNumber = 1 + c.ModuleChannelNumber;
|
||||
}
|
||||
if (c is DTS.DASLib.Service.OutputSquibChannel)
|
||||
{
|
||||
startingChannelNumber = DoSquibConversion(startingChannelNumber);
|
||||
_channelType = ChannelTypeEnum.SQUIB;
|
||||
}
|
||||
else if (c is DTS.DASLib.Service.OutputTOMDigitalChannel)
|
||||
{
|
||||
_channelType = ChannelTypeEnum.TOMDigital;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((c as DTS.DASLib.Service.AnalogInputDASChannel).SupportedBridges.Length == 1) &&
|
||||
((c as DTS.DASLib.Service.AnalogInputDASChannel).SupportedBridges[0] ==
|
||||
SensorConstants.BridgeType.DigitalInput))
|
||||
{
|
||||
_channelType = ChannelTypeEnum.DigitalInput;
|
||||
}
|
||||
}
|
||||
|
||||
ConvertChannelNumbers(h.DASTypeEnum, startingChannelNumber, h.SerialNumber, c.OwningModule.SerialNumber(),
|
||||
_channelType);
|
||||
}
|
||||
|
||||
|
||||
private int GetModuleChannelNumber(DataModel.HardwareChannel c)
|
||||
{
|
||||
if (null == c.Hardware)
|
||||
{
|
||||
return 1 + c.ChannelNumber;
|
||||
}
|
||||
var moduleChannelNumber = 0;
|
||||
var moduleArrayIndex = -1;
|
||||
|
||||
foreach (var ch in c.Hardware.Channels)
|
||||
{
|
||||
if (ch.ModuleArrayIndex != moduleArrayIndex)
|
||||
{
|
||||
moduleChannelNumber = 0;
|
||||
moduleArrayIndex = ch.ModuleArrayIndex;
|
||||
}
|
||||
moduleChannelNumber++;
|
||||
if (ch.ChannelNumber == c.ChannelNumber)
|
||||
{
|
||||
return moduleChannelNumber;
|
||||
}
|
||||
}
|
||||
return 1 + c.ChannelNumber;
|
||||
}
|
||||
|
||||
public ChannelRepresentation(DataModel.HardwareChannel c, int startingChannelNumber, IDASHardware[] hardwares = null)
|
||||
{
|
||||
if (null != c.Hardware && c.Hardware.CareAboutModules)
|
||||
{
|
||||
startingChannelNumber = GetModuleChannelNumber(c);
|
||||
}
|
||||
if (c.IsSupportedBridgeType(SensorConstants.BridgeType.SQUIB))
|
||||
{
|
||||
startingChannelNumber = DoSquibConversion(startingChannelNumber);
|
||||
_channelType = ChannelTypeEnum.SQUIB;
|
||||
}
|
||||
else if (c.IsSupportedBridgeType(SensorConstants.BridgeType.TOMDigital))
|
||||
{
|
||||
_channelType = ChannelTypeEnum.TOMDigital;
|
||||
}
|
||||
else if (c.IsSupportedBridgeType(SensorConstants.BridgeType.DigitalInput))
|
||||
{
|
||||
_channelType = ChannelTypeEnum.DigitalInput;
|
||||
}
|
||||
|
||||
var moduleSerialNumber = c.ModuleSerialNumber;
|
||||
var dasSerialNumber = c.Hardware.SerialNumber;
|
||||
|
||||
var h = c.Hardware.GetHardware();
|
||||
if (h.StandIn)
|
||||
{
|
||||
dasSerialNumber = EnumDescriptionTypeConverter.GetEnumDescription(h.DASTypeEnum);
|
||||
switch (c.Hardware.DASTypeEnum)
|
||||
{
|
||||
case HardwareTypes.TDAS_LabRack:
|
||||
case HardwareTypes.TDAS_Pro_Rack:
|
||||
break;
|
||||
default:
|
||||
moduleSerialNumber = dasSerialNumber;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (c.Hardware.IsPseudoRackModule() && c.Hardware.IsModule())
|
||||
{
|
||||
moduleSerialNumber = c.Hardware.SerialNumber;
|
||||
dasSerialNumber = c.Hardware.ParentDAS;
|
||||
}
|
||||
else if (c.Hardware.IsTSRAIRModule() && c.Hardware.IsModule())
|
||||
{
|
||||
moduleSerialNumber = c.Hardware.SerialNumber;
|
||||
dasSerialNumber = string.IsNullOrWhiteSpace(c.Hardware.ParentDAS) ?
|
||||
c.Hardware.Connection.Split(new[] { "xEMB" }, StringSplitOptions.RemoveEmptyEntries)[0] :
|
||||
c.Hardware.ParentDAS;
|
||||
}
|
||||
|
||||
ConvertChannelNumbers(c.Hardware.DASTypeEnum, startingChannelNumber, dasSerialNumber, moduleSerialNumber,
|
||||
_channelType, hardwares);
|
||||
if (!c.Hardware.IsTSRAIR())
|
||||
{
|
||||
DASSerialNumber = dasSerialNumber;
|
||||
}
|
||||
}
|
||||
|
||||
public string DASSerialNumber { get; set; } = string.Empty;
|
||||
|
||||
public string SerialNumber //Module
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = string.Empty;
|
||||
|
||||
public string ChannelNumberString { get; set; } = string.Empty;
|
||||
|
||||
public int ChannelNumber { get; set; } = 0;
|
||||
|
||||
private int DoSquibConversion(int squibChannelNumber)
|
||||
{
|
||||
Math.DivRem(squibChannelNumber, 8, out var remainder);
|
||||
switch (remainder)
|
||||
{
|
||||
case 1:
|
||||
return 1;
|
||||
case 3:
|
||||
return 2;
|
||||
case 5:
|
||||
return 3;
|
||||
case 7:
|
||||
return 4;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private void ConvertChannelNumbers(HardwareTypes dasType, int startingChannelNumber, string dasSerialNumber,
|
||||
string moduleSerialNumber,
|
||||
ChannelTypeEnum channelType, IDASHardware[] hardwares = null)
|
||||
{
|
||||
var displayChannelNumber = 0;
|
||||
switch (dasType)
|
||||
{
|
||||
case HardwareTypes.TDAS_Pro_Rack:
|
||||
case HardwareTypes.TDAS_LabRack:
|
||||
|
||||
if (string.IsNullOrWhiteSpace(moduleSerialNumber))
|
||||
{
|
||||
SerialNumber = StringResources.UnknownModule;
|
||||
Math.DivRem(startingChannelNumber - 1, 8, out displayChannelNumber);
|
||||
}
|
||||
else
|
||||
{
|
||||
SerialNumber = moduleSerialNumber;
|
||||
if (moduleSerialNumber.StartsWith("DIM"))
|
||||
{
|
||||
Math.DivRem(startingChannelNumber - 1, 16, out displayChannelNumber);
|
||||
}
|
||||
else
|
||||
{
|
||||
Math.DivRem(startingChannelNumber - 1, 8, out displayChannelNumber);
|
||||
}
|
||||
}
|
||||
displayChannelNumber++;
|
||||
DASSerialNumber = dasSerialNumber;
|
||||
break;
|
||||
case HardwareTypes.SLICE2_TOM:
|
||||
case HardwareTypes.SLICE2_SLT:
|
||||
// Start counting the Digital Output channels from 1
|
||||
Math.DivRem(startingChannelNumber - 1, 8, out displayChannelNumber);
|
||||
displayChannelNumber++;
|
||||
SerialNumber = dasSerialNumber;
|
||||
DASSerialNumber = StringResources.ChannelDASNA;
|
||||
break;
|
||||
case HardwareTypes.G5VDS: // Start counting the Digital Input channels from 1
|
||||
case HardwareTypes.G5INDUMMY:
|
||||
Math.DivRem(startingChannelNumber - 1, 32, out displayChannelNumber);
|
||||
displayChannelNumber++;
|
||||
SerialNumber = dasSerialNumber;
|
||||
DASSerialNumber = StringResources.ChannelDASNA;
|
||||
break;
|
||||
case HardwareTypes.SLICE1_G5Stack:
|
||||
displayChannelNumber = startingChannelNumber;
|
||||
SerialNumber = dasSerialNumber;
|
||||
DASSerialNumber = StringResources.ChannelDASNA;
|
||||
break;
|
||||
case HardwareTypes.SLICE_Base: //Is this the micro base?
|
||||
case HardwareTypes.SLICE_Micro_Base: //Is this the micro base?
|
||||
case HardwareTypes.SLICE1_5_Nano_Base: //This is for nano
|
||||
case HardwareTypes.SLICE1_5_Micro_Base: //This is for micro
|
||||
case HardwareTypes.SLICE_NANO_Base: //This is for nano
|
||||
Math.DivRem(startingChannelNumber - 1, 3, out displayChannelNumber);
|
||||
displayChannelNumber++;
|
||||
if (string.IsNullOrWhiteSpace(moduleSerialNumber))
|
||||
{
|
||||
SerialNumber = StringResources.UnknownModule;
|
||||
}
|
||||
else
|
||||
{
|
||||
SerialNumber = moduleSerialNumber;
|
||||
}
|
||||
DASSerialNumber = dasSerialNumber;
|
||||
break;
|
||||
case HardwareTypes.SLICE2_SLS:
|
||||
case HardwareTypes.SLICE2_SIM:
|
||||
case HardwareTypes.SLICE2_Base:
|
||||
case HardwareTypes.SLICE2_DIM:
|
||||
case HardwareTypes.SLICE2_SLD:
|
||||
case HardwareTypes.SLICE6_Base:
|
||||
case HardwareTypes.SLICE6_AIR:
|
||||
case HardwareTypes.SLICE6_AIR_BR:
|
||||
case HardwareTypes.SLICE_PRO_CAN_FD:
|
||||
|
||||
bool isPseudoDAS = false;
|
||||
IDASHardware[] list = null;
|
||||
if (null != hardwares)
|
||||
{
|
||||
list = hardwares;
|
||||
}
|
||||
else { list = DASHardwareList.GetAllHardware(); }
|
||||
if (list.Any())
|
||||
{
|
||||
//13096 Unhandled exception clicking save in hardware disco (test setup)
|
||||
var matches = from das in list where das.SerialNumber == dasSerialNumber select das;
|
||||
if (matches.Any())
|
||||
{
|
||||
isPseudoDAS = matches.First().IsPseudoRack();
|
||||
}
|
||||
}
|
||||
displayChannelNumber = startingChannelNumber;
|
||||
SerialNumber = isPseudoDAS ? moduleSerialNumber : dasSerialNumber;
|
||||
DASSerialNumber = dasSerialNumber;
|
||||
break;
|
||||
case HardwareTypes.EMB_ANG_ARS:
|
||||
case HardwareTypes.EMB_ATM:
|
||||
case HardwareTypes.EMB_LIN_ACC_HI:
|
||||
case HardwareTypes.EMB_LIN_ACC_LO:
|
||||
displayChannelNumber = startingChannelNumber;
|
||||
SerialNumber = moduleSerialNumber; //dasSerialNumber;
|
||||
DASSerialNumber = dasSerialNumber; //.Substring(0, dasSerialNumber.IndexOf('-'));
|
||||
break;
|
||||
case HardwareTypes.TSR_AIR:
|
||||
case HardwareTypes.TSR_AIR_RevB:
|
||||
case HardwareTypes.DIR:
|
||||
case HardwareTypes.DKR:
|
||||
Math.DivRem(startingChannelNumber - 1, 3, out displayChannelNumber);
|
||||
displayChannelNumber++;
|
||||
displayChannelNumber = startingChannelNumber;
|
||||
if (string.IsNullOrWhiteSpace(moduleSerialNumber))
|
||||
{
|
||||
SerialNumber = StringResources.UnknownModule;
|
||||
}
|
||||
else
|
||||
{
|
||||
SerialNumber = moduleSerialNumber;
|
||||
}
|
||||
DASSerialNumber = dasSerialNumber;
|
||||
break;
|
||||
case HardwareTypes.SLICE6_AIR_TC:
|
||||
if (string.IsNullOrWhiteSpace(moduleSerialNumber))
|
||||
{
|
||||
var displayModuleNumber = Math.DivRem(startingChannelNumber - 1, SLICE6AIRTC.ThermocouplersPerModule, out displayChannelNumber);
|
||||
SerialNumber = string.Format(StringResources.ModuleNumber, displayModuleNumber.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
SerialNumber = moduleSerialNumber;
|
||||
if (moduleSerialNumber.StartsWith(StringResources.StreamOut))
|
||||
{
|
||||
//Stream out
|
||||
displayChannelNumber = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Thermocoupler
|
||||
SerialNumber = dasSerialNumber;
|
||||
displayChannelNumber = startingChannelNumber;
|
||||
}
|
||||
}
|
||||
DASSerialNumber = dasSerialNumber;
|
||||
break;
|
||||
default:
|
||||
displayChannelNumber = startingChannelNumber;
|
||||
SerialNumber = dasSerialNumber;
|
||||
DASSerialNumber = dasSerialNumber;
|
||||
break;
|
||||
}
|
||||
if (channelType == ChannelTypeEnum.SQUIB)
|
||||
{
|
||||
ChannelNumberString = StringResources.ChannelPrefix_Squib + displayChannelNumber.ToString("00");
|
||||
}
|
||||
else if (channelType == ChannelTypeEnum.TOMDigital)
|
||||
{
|
||||
ChannelNumberString = StringResources.ChannelPrefix_DigitalOut +
|
||||
displayChannelNumber.ToString("00");
|
||||
}
|
||||
else if (channelType == ChannelTypeEnum.DigitalInput)
|
||||
{
|
||||
ChannelNumberString = StringResources.ChannelPrefix_DigitalIn +
|
||||
displayChannelNumber.ToString("00");
|
||||
}
|
||||
else
|
||||
{
|
||||
ChannelNumberString = StringResources.ChannelPrefix_Other + displayChannelNumber.ToString("00");
|
||||
}
|
||||
ChannelNumber = displayChannelNumber;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user