This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,233 @@
G\PN:{NAME OF PROGRAM};
G\TA:{TEST ID}_{DAS SERIAL NUMBER};
G\106:17;
G\DSI\N:1;
G\DSI-1:{TEST ID};
G\DST-1:STO;
R-1\ID:{TEST ID};
R-1\RID:S6A_1;
R-1\R1:generated from XML CH10 mapping;
R-1\TC1:OTHR;
R-1\COM:=========================================================================;
R-1\COM: TMATS for 1minor/major PCM stream with 6 ADC channels and subframeID
R-1\COM: 144bit per frame.
R-1\COM:=========================================================================;
R-1\RML:E;
R-1\ERBS:AUTO;
R-1\NSB:1;
R-1\RI1:SLICE6 AIR;
R-1\RI2:S6A_2;
R-1\RI3:N;
R-1\RI6:N;
R-1\CRE:F;
R-1\RSS:R;
R-1\N:2;
R-1\TK1-1:1;
R-1\TK4-1:1;
R-1\COM: ======================= Time Channel ========================;
R-1\COM: == Format 2 with PTP timestamp ==;
R-1\TK1-1:1;
R-1\TK2-1:OTHER;
R-1\DSI-1:1;
R-1\TK3-1:FWD;
R-1\TK4-1:1;
R-1\CHE-1:T;
R-1\CDT-1:TIMEIN;
R-1\CDLN-1:1;
R-1\TTF-1:{STREAM TIME FORMAT};
R-1\SHTF-1:1;
R-1\COM: ======================= PCM Channel Description =====================;
R-1\DSI-2:PCMIN;
R-1\TK1-2:3;
R-1\TK4-2:3;
R-1\CHE-2:T;
R-1\CDT-2:PCMIN;
R-1\CDLN-2:{DAS SERIAL NUMBER};
R-1\PDTF-2:1;
R-1\PDP-2:TM;
R-1\ICE-2:180;
R-1\IST-2:SE;
R-1\ITH-2:1;
R-1\ITM-2:Low-Z;
R-1\PTF-2:NONE;
P-1\DLN:{DAS SERIAL NUMBER};
P-1\D1:NRZ-L;
P-1\D2:{DAS BIT RATE};
P-1\D3:U;
P-1\D4:N;
P-1\D7:N;
P-1\D8:NA;
P-1\TF:ONE;
P-1\F1:16;
P-1\F2:M;
P-1\F3:NO;
P-1\F4:T;
P-1\ISF\N:0;
P-1\MF\N:1;
P-1\COM: === Number of channels (including time sync) ===;
P-1\MF1:8;
P-1\MF2:144;
P-1\MF3:FPT;
P-1\MF4:32;
P-1\MF5:11111110011010110010100001000000;
D-1\DLN:{DAS SERIAL NUMBER};
D-1\ML\N:1;
D-1\MLN-1:Measurement List;
D-1\COM: === Number of channels in the measurement list ===;
D-1\MN\N-1:6;
D-1\MN-1-1:{CHANNEL 1 NAME};
D-1\MN1-1-1:DE;
D-1\MN2-1-1:D;
D-1\MN3-1-1:M;
D-1\LT-1-1:WDFR;
D-1\MML\N-1-1:1;
D-1\MNF\N-1-1-1:1;
D-1\WP-1-1-1-1:1;
D-1\WI-1-1-1-1:0;
D-1\FP-1-1-1-1:1;
D-1\FI-1-1-1-1:0;
D-1\WFM-1-1-1-1:FW;
D-1\MN-1-2:{CHANNEL 2 NAME};
D-1\MN1-1-2:DE;
D-1\MN2-1-2:D;
D-1\MN3-1-2:M;
D-1\LT-1-2:WDFR;
D-1\MML\N-1-2:1;
D-1\MNF\N-1-2-1:1;
D-1\WP-1-2-1-1:2;
D-1\WI-1-2-1-1:0;
D-1\FP-1-2-1-1:1;
D-1\FI-1-2-1-1:0;
D-1\WFM-1-2-1-1:FW;
D-1\MN-1-3:{CHANNEL 3 NAME};
D-1\MN1-1-3:DE;
D-1\MN2-1-3:D;
D-1\MN3-1-3:M;
D-1\LT-1-3:WDFR;
D-1\MML\N-1-3:1;
D-1\MNF\N-1-3-1:1;
D-1\WP-1-3-1-1:3;
D-1\WI-1-3-1-1:0;
D-1\FP-1-3-1-1:1;
D-1\FI-1-3-1-1:0;
D-1\WFM-1-3-1-1:FW;
D-1\MN-1-4:{CHANNEL 4 NAME};
D-1\MN1-1-4:DE;
D-1\MN2-1-4:D;
D-1\MN3-1-4:M;
D-1\LT-1-4:WDFR;
D-1\MML\N-1-4:1;
D-1\MNF\N-1-4-1:1;
D-1\WP-1-4-1-1:4;
D-1\WI-1-4-1-1:0;
D-1\FP-1-4-1-1:1;
D-1\FI-1-4-1-1:0;
D-1\WFM-1-4-1-1:FW;
D-1\MN-1-5:{CHANNEL 5 NAME};
D-1\MN1-1-5:DE;
D-1\MN2-1-5:D;
D-1\MN3-1-5:M;
D-1\LT-1-5:WDFR;
D-1\MML\N-1-5:1;
D-1\MNF\N-1-5-1:1;
D-1\WP-1-5-1-1:5;
D-1\WI-1-5-1-1:0;
D-1\FP-1-5-1-1:1;
D-1\FI-1-5-1-1:0;
D-1\WFM-1-5-1-1:FW;
D-1\MN-1-6:{CHANNEL 6 NAME};
D-1\MN1-1-6:DE;
D-1\MN2-1-6:D;
D-1\MN3-1-6:M;
D-1\LT-1-6:WDFR;
D-1\MML\N-1-6:1;
D-1\MNF\N-1-6-1:1;
D-1\WP-1-6-1-1:6;
D-1\WI-1-6-1-1:0;
D-1\FP-1-6-1-1:1;
D-1\FI-1-6-1-1:0;
D-1\WFM-1-6-1-1:FW;
C-1\DCN:{CHANNEL 1 NAME};
C-1\MN1:{CHANNEL 1 NAME};
C-1\BFM:UNS;
C-1\DCT:COE;
C-1\CO\N:1;
C-1\CO:{CHANNEL 1 OFFSET EU};
C-1\CO-1:{CHANNEL 1 SCALEFACTOR EU};
C-1\MN3:{CHANNEL 1 EU};
C-1\MOT1:{CHANNEL 1 MAX RANGE EU};
C-1\MOT3:{CHANNEL 1 MAX RANGE EU};
C-1\MOT5:{CHANNEL 1 MAX RANGE EU};
C-1\MOT2:{CHANNEL 1 MIN RANGE EU};
C-1\MOT4:{CHANNEL 1 MIN RANGE EU};
C-1\MOT6:{CHANNEL 1 MIN RANGE EU};
C-2\DCN:{CHANNEL 2 NAME};
C-2\MN1:{CHANNEL 2 NAME};
C-2\BFM:UNS;
C-2\DCT:COE;
C-2\CO\N:1;
C-2\CO:{CHANNEL 2 OFFSET EU};
C-2\CO-1:{CHANNEL 2 SCALEFACTOR EU};
C-2\MN3:{CHANNEL 2 EU};
C-2\MOT1:{CHANNEL 2 MAX RANGE EU};
C-2\MOT3:{CHANNEL 2 MAX RANGE EU};
C-2\MOT5:{CHANNEL 2 MAX RANGE EU};
C-2\MOT2:{CHANNEL 2 MIN RANGE EU};
C-2\MOT4:{CHANNEL 2 MIN RANGE EU};
C-2\MOT6:{CHANNEL 2 MIN RANGE EU};
C-3\DCN:{CHANNEL 3 NAME};
C-3\MN1:{CHANNEL 3 NAME};
C-3\BFM:UNS;
C-3\DCT:COE;
C-3\CO\N:1;
C-3\CO:{CHANNEL 3 OFFSET EU};
C-3\CO-1:{CHANNEL 3 SCALEFACTOR EU};
C-3\MN3:{CHANNEL 3 EU};
C-3\MOT1:{CHANNEL 3 MAX RANGE EU};
C-3\MOT3:{CHANNEL 3 MAX RANGE EU};
C-3\MOT5:{CHANNEL 3 MAX RANGE EU};
C-3\MOT2:{CHANNEL 3 MIN RANGE EU};
C-3\MOT4:{CHANNEL 3 MIN RANGE EU};
C-3\MOT6:{CHANNEL 3 MIN RANGE EU};
C-4\DCN:{CHANNEL 4 NAME};
C-4\MN1:{CHANNEL 4 NAME};
C-4\BFM:UNS;
C-4\DCT:COE;
C-4\CO\N:1;
C-4\CO:{CHANNEL 4 OFFSET EU};
C-4\CO-1:{CHANNEL 4 SCALEFACTOR EU};
C-4\MN3:{CHANNEL 4 EU};
C-4\MOT1:{CHANNEL 4 MAX RANGE EU};
C-4\MOT3:{CHANNEL 4 MAX RANGE EU};
C-4\MOT5:{CHANNEL 4 MAX RANGE EU};
C-4\MOT2:{CHANNEL 4 MIN RANGE EU};
C-4\MOT4:{CHANNEL 4 MIN RANGE EU};
C-4\MOT6:{CHANNEL 4 MIN RANGE EU};
C-5\DCN:{CHANNEL 5 NAME};
C-5\MN1:{CHANNEL 5 NAME};
C-5\BFM:UNS;
C-5\DCT:COE;
C-5\CO\N:1;
C-5\CO:{CHANNEL 5 OFFSET EU};
C-5\CO-1:{CHANNEL 5 SCALEFACTOR EU};
C-5\MN3:{CHANNEL 5 EU};
C-5\MOT1:{CHANNEL 5 MAX RANGE EU};
C-5\MOT3:{CHANNEL 5 MAX RANGE EU};
C-5\MOT5:{CHANNEL 5 MAX RANGE EU};
C-5\MOT2:{CHANNEL 5 MIN RANGE EU};
C-5\MOT4:{CHANNEL 5 MIN RANGE EU};
C-5\MOT6:{CHANNEL 5 MIN RANGE EU};
C-6\DCN:{CHANNEL 6 NAME};
C-6\MN1:{CHANNEL 6 NAME};
C-6\BFM:UNS;
C-6\DCT:COE;
C-6\CO\N:1;
C-6\CO:{CHANNEL 6 OFFSET EU};
C-6\CO-1:{CHANNEL 6 SCALEFACTOR EU};
C-6\MN3:{CHANNEL 6 EU};
C-6\MOT1:{CHANNEL 6 MAX RANGE EU};
C-6\MOT3:{CHANNEL 6 MAX RANGE EU};
C-6\MOT5:{CHANNEL 6 MAX RANGE EU};
C-6\MOT2:{CHANNEL 6 MIN RANGE EU};
C-6\MOT4:{CHANNEL 6 MIN RANGE EU};
C-6\MOT6:{CHANNEL 6 MIN RANGE EU};

View File

@@ -0,0 +1,8 @@
using DTS.Common.Base;
namespace DTS.Common.Interface
{
public interface IStatusAndProgressBarView : IBaseView
{
}
}

View File

@@ -0,0 +1,11 @@
// ReSharper disable CheckNamespace
namespace DTS.Common.Base
{
public interface IBaseView
{
/// <summary>
/// Gets or sets the data context.
/// </summary>
object DataContext { get; set; }
}
}

View File

@@ -0,0 +1,68 @@
using System;
using System.ComponentModel;
// ReSharper disable CheckNamespace
namespace DTS.Common.Interface
{
public interface ITestCalculatedChannel : INotifyPropertyChanged
{
string SerialNumber { get; set; }
string ChannelId { get; set; }
string Description { get; set; }
string ChannelGroupName { get; set; }
string ChannelType { get; set; }
int Number { get; set; }
string DigitalMultiplier { get; set; }
string DigitalMode { get; set; }
DateTime Start { get; set; }
string Bridge { get; set; }
int BridgeResistanceOhms { get; set; }
double ZeroPoint { get; set; }
string ChannelDescriptionString { get; set; }
string ChannelName2 { get; set; }
string HardwareChannelName { get; set; }
double DesiredRange { get; set; }
double Sensitivity { get; set; }
string SoftwareFilter { get; set; }
bool ProportionalToExcitation { get; set; }
bool IsInverted { get; set; }
string LinearizationFormula { get; set; }
bool IsSubsampled { get; set; }
int AbsoluteDisplayOrder { get; set; }
DateTime LastCalibrationDate { get; set; }
string SensorId { get; set; }
int OffsetToleranceLowMv { get; set; }
int OffsetToleranceHighMv { get; set; }
int DataFlag { get; set; }
int ExcitationVoltage { get; set; }
string Eu { get; set; }
bool CalSignalEnabled { get; set; }
bool ShuntEnabled { get; set; }
bool VoltageInsertionCheckEnabled { get; set; }
bool RemoveOffset { get; set; }
string ZeroMethod { get; set; }
double ZeroAverageWindowBegin { get; set; }
double ZeroAverageWindowEnd { get; set; }
int InitialEu { get; set; }
string InitialOffset { get; set; }
int UnsubsampledSampleRateHz { get; set; }
double MeasuredShuntDeflectionMv { get; set; }
double TargetShuntDeflectionMv { get; set; }
double MeasuredExcitationVoltage { get; set; }
double FactoryExcitationVoltage { get; set; }
double TimeOfFirstSample { get; set; }
int Multiplier { get; set; }
int UserOffsetEu { get; set; }
int UnitConversion { get; set; }
bool AtCapacity { get; set; }
int CapacityOutputIsBasedOn { get; set; }
string SourceChannelNumber { get; set; }
string SourceModuleNumber { get; set; }
string SourceModuleSerialNumber { get; set; }
string Calculation { get; set; }
int SampleRateHz { get; set; }
string SensitivityUnits { get; set; }
int SensorCapacity { get; set; }
}
}

View File

@@ -0,0 +1,160 @@
using DTS.Common.Enums;
using DTS.Common.Utilities.Logging;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Interactivity;
namespace DTS.Common.Behaviors
{
public class MultiSelectionBehavior : Behavior<ListBox>
{
protected override void OnAttached()
{
base.OnAttached();
if (SelectedItems != null)
{
AssociatedObject.SelectedItems.Clear();
foreach (var item in SelectedItems)
{
AssociatedObject.SelectedItems.Add(item);
}
}
}
public IList SelectedItems
{
get => (IList)GetValue(SelectedItemsProperty);
set => SetValue(SelectedItemsProperty, value);
}
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.Register("SelectedItems", typeof(IList), typeof(MultiSelectionBehavior), new UIPropertyMetadata(null, SelectedItemsChanged));
private static void SelectedItemsChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
var behavior = o as MultiSelectionBehavior;
if (behavior == null)
return;
if (e.OldValue is INotifyCollectionChanged oldValue)
{
oldValue.CollectionChanged -= behavior.SourceCollectionChanged;
behavior.AssociatedObject.SelectionChanged -= behavior.ListBoxSelectionChanged;
}
if (e.NewValue is INotifyCollectionChanged newValue)
{
behavior.AssociatedObject.SelectedItems.Clear();
foreach (var item in (IEnumerable)newValue)
{
behavior.AssociatedObject.SelectedItems.Add(item);
}
behavior.AssociatedObject.SelectionChanged += behavior.ListBoxSelectionChanged;
newValue.CollectionChanged += behavior.SourceCollectionChanged;
}
}
private bool _isUpdatingTarget;
private bool _isUpdatingSource;
private void SourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (_isUpdatingSource)
return;
try
{
_isUpdatingTarget = true;
if (e.OldItems != null)
{
foreach (var item in e.OldItems)
{
AssociatedObject.SelectedItems.Remove(item);
}
}
if (e.NewItems != null)
{
foreach (var item in e.NewItems)
{
AssociatedObject.SelectedItems.Add(item);
}
}
if (e.Action == NotifyCollectionChangedAction.Reset)
{
AssociatedObject.SelectedItems.Clear();
}
}
finally
{
_isUpdatingTarget = false;
}
}
private void ListBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (_isUpdatingTarget)
return;
var selectedItems = SelectedItems;
if (selectedItems == null)
return;
//this could be a bulk operation, turn off notifications if consumer is paying attention
SelectedItemsStatus.SetUpdating(SelectedItems, true);
try
{
_isUpdatingSource = true;
foreach (var item in e.RemovedItems)
{
selectedItems.Remove(item);
}
var itemsToAdd = new List<object>();
foreach (var item in e.AddedItems)
{
if (!selectedItems.Contains(item))
{
itemsToAdd.Add(item);
}
}
var type = selectedItems.GetType().GenericTypeArguments[0];
foreach (var item in itemsToAdd)
{
if (item == itemsToAdd.Last())
{
//if this is the last item, turn notifications back on
SelectedItemsStatus.SetUpdating(SelectedItems, false);
}
try
{
if (type.IsAssignableFrom(item.GetType()))
{
selectedItems.Add(item);
}
}
catch (Exception ex)
{
APILogger.Log(ex);
}
}
}
finally
{
_isUpdatingSource = false;
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB