/// <summary> /// Create Experimental Run. /// Refactor Idea: This class should not hold mca/motor/thermometer at all. It should be pass along from DAQThread as arguments. /// </summary> /// <param name="mca"></param> /// <param name="motor"></param> /// <param name="thermometer"></param> /// <param name="runmode"></param> public ExperimentalRun(DT5780 mca, LinearMotor motor, DigitalThermometer thermometer, RunMode runmode = RunMode.Experiment) { this.mca = mca; this.thermometer = thermometer; this.motor = motor; Timeout = 60; MaxSample = 0; Log = new ExperimentLog(); ClearData(); RunMode = runmode; Channel0PeakFinder = new PeakFinder(); Channel1PeakFinder = new PeakFinder(); ExperimentStatus = ExperimentStatusEnum.Prepared; StartActionMap = new Dictionary<RunMode, DAQThread.OnSuccessfulStartDelegate>{ {RunMode.Experiment, OnExperimentStart}, {RunMode.Calibrate, OnCalibrationStart}, {RunMode.Simulated, OnSimulationStart} }; StopActionMap = new Dictionary<RunMode, DAQThread.OnSuccessfulStopDelegate>{ {RunMode.Experiment, OnExperimentEnd}, {RunMode.Calibrate, OnCalibrationEnd}, {RunMode.Simulated, OnSimulationEnd} }; UpdateActionMap = new Dictionary<RunMode, DAQThread.UpdateProgressDelegate>{ {RunMode.Experiment, OnExperimentUpdate}, {RunMode.Calibrate, OnCalibrationUpdate}, {RunMode.Simulated, OnSimulationUpdate} }; InitCommand(); Channel0FittedDataPoints = new DataPoint[0]; Channel1FittedDataPoints = new DataPoint[0]; }
public void Initialize() { Console.WriteLine(DateTime.UtcNow); mca = new DT5780(); bool foundone = mca.ScanConnect(); if (!foundone) Assert.Inconclusive("DT5780 Not Found"); mca.Reset(); mca.UseDefaultBoardSetting(); }
public SettingMaker(DT5780 mca, LinearMotor motor, DigitalThermometer thermometer, ObservableCollection<MCASetting> mcasettings) { this.mca = mca; this.motor = motor; this.thermometer = thermometer; this.MCASettings = mcasettings; this.MCAData = new MCAData(); TargetPosition = -15; MaxSample = 0; Timeout = -1; InitCommand(); }
public void UseSettingOn(DT5780 mca, int channel) { mca.set_PulsePolarity(channel, Polarity); mca.set_DecayTime(channel, DecayTime); mca.set_InputRiseTime(channel, DecayTime); mca.set_TrapezoidRiseTime(channel, TrapezoidRiseTime); mca.set_TrapezoidFlatTop(channel, FlatTop); mca.set_BaselineAveragingWindow(channel, BaselineMean); mca.SetTrapezoidGain(channel, TrapezoidGain); mca.set_PeakingTime(channel, PeakingDelay); mca.set_PeakAveragingWindow(channel, PeakMean); mca.set_BaselineHoldOff(channel, BaselineHoldoff); mca.set_PeakHoldOffExtension(channel, PeakHoldoff); }
public DAQThread(DT5780 MCA) { this.MCA = MCA; }
/// <summary> /// Constructor /// </summary> public MainViewModel() { //if (System.Diagnostics.Debugger.IsAttached) //{ // App.Settings.Reset(); //} MCA = new DT5780(); LinearMotor = LinearMotorWrapper.LinearMotor.GetInstance(); Thermometer = new DigitalThermometer(); //DAQThread = new MCACalibrator.Threads.DAQThread(MCA); MotorStatus = new MotorStatus(LinearMotor); PeripheralConnection = new PeripheralConnection(); LogEntries = new BindingList<LogEntry>(); ExperimentalRuns = new ObservableCollection<ExperimentalRun>(); QCData = new QCData(); MCASettings = App.Settings.MCASettings; StartHVPoller(); StartMotorPoller(); StartPeripheralConnectionPoller(); SetupCommand(); MotorCommand = new MotorCommand(this); SettingMaker = new SettingMaker(MCA, LinearMotor, Thermometer, MCASettings); }
public static ExperimentalRun DummyFilledData(DT5780 mca, LinearMotor motor, DigitalThermometer thermometer, double position = 0) { ExperimentalRun ret = ExperimentalRun.DummyEmptyData(mca, motor, thermometer, position); ret.FillWithDummyData(); return ret; }
public static ExperimentalRun DummyEmptyData(DT5780 mca, LinearMotor motor, DigitalThermometer thermometer, double position = 0) { ExperimentalRun ret = new ExperimentalRun(mca, motor, thermometer); ret.Log.Setting = MCASetting.LargeLYSOSetting(); ret.Log.MotorPosition = position; return ret; }
public void UseSettingOnMCA(DT5780 mca) { mca.Reset(); mca.SetChannelEnableMask(0x3); HV0.UseSettingOnMCA(mca, 0); HV1.UseSettingOnMCA(mca, 1); TriggerSetting0.UseSettingOn(mca, 0); TriggerSetting1.UseSettingOn(mca, 1); ShapingSetting0.UseSettingOn(mca, 0); ShapingSetting1.UseSettingOn(mca, 1); ProbeSetting.UseSettingOn(mca); }
public void UseSettingOn(DT5780 mca) { mca.SetChannelEnableMask(0x3); if (Mode == ProbeMode.Histogram) { mca.SetDPPAcquisitionMode(DT5780.DPPAcqMode.List, DT5780.DPPSaveParam.EnergyAndTime); } else if (Mode == ProbeMode.Oscilloscope) { mca.SetDPPAcquisitionMode(DT5780.DPPAcqMode.Mixed, DT5780.DPPSaveParam.EnergyAndTime); } mca.SetVirtualProbe(VirtualProbeMode, VirtualProbe1Mode, VirtualProbe2Mode, DigitalProbeMode); mca.RecordLength = RecordLength; mca.set_PreTrg(0, PreTrigger); mca.set_PreTrg(1, PreTrigger); mca.SetSWTriggerMode(SWTrigger); mca.SetExtTriggerInputMode(ExtTriggerInput); mca.AcquisitionMode = DT5780.AcquisitionModeType.SoftwareControl; }
public void UseSettingOnMCA(DT5780 mca, int channel) { mca.set_HVVMax(channel, VMax); mca.set_HVVSet(channel, VSet); mca.set_HVISet(channel, ISet); }
public void UseSettingOn(DT5780 mca, int channel) { mca.set_TriggerThreshold(channel, TriggerLevel); mca.set_TriggerFilterSmoothing(channel, SmoothingFactor); mca.set_PreTrg(channel, 0); mca.set_TriggerHoldoff(channel, TriggerHoldoff); mca.SetChannelSelfTriggerMode(channel, SelfTrigger); mca.SetInputRange(channel, InputRange); }