Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 public void AddNewScan(TCLReadData data, bool shouldAverageRampData, int numAverages)
 {
     AIData = data.AnalogData;
     if (shouldAverageRampData)
     {
         averageRampData(numAverages);
     }
     else
     {
         oldRampData = null; // Reset averages
     }
     DIData = data.DigitalData;
 }