private void mainLoop() { initialiseAIHardware(scanParameters); ScanData scanData = new ScanData(aiChannelsLookup, diChannelsLookup); scanTimes = new List <double>(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); int loopCount = 0; while (TCLState != ControllerState.STOPPED) { // Read data TCLReadData rawData = acquireData(scanParameters); scanData.AddNewScan(rawData, ui.scanAvCheckBox.Checked, numScanAverages); // Fitting double[] rampData = scanData.GetRampData(); foreach (Laser laser in AllLasers) { double[] laserScanData = scanData.GetLaserData(getUniqueKey(laser.ParentCavity.Name, laser.FeedbackChannel)); bool lockBlocked = scanData.LaserLockBlocked(getUniqueKey(laser.ParentCavity.Name, laser.FeedbackChannel)); laser.UpdateScan(rampData, laserScanData, lockBlocked); } // Locking foreach (Laser laser in AllLasers) { laser.UpdateLock(); } // GUI updates and logging if (!ui.dissableGUIupdateCheckBox.Checked) { updateRampPlot(rampData); } foreach (Laser laser in AllLasers) { if (!ui.dissableGUIupdateCheckBox.Checked) { updateGUIForLaser(laser, rampData); } if (ui.logCheckBox.Checked && laser.IsLocked) { logLaserParams(laser); } } updateLockRate(stopWatch); stopWatch.Reset(); stopWatch.Start(); loopCount++; } endLoop(); }
public void AddNewScan(TCLReadData data, bool shouldAverageRampData, int numAverages) { AIData = data.AnalogData; if (shouldAverageRampData) { averageRampData(numAverages); } else { oldRampData = null; // Reset averages } DIData = data.DigitalData; }