public void ConfigureCavityScan(int numberOfSteps, bool autostart) { outputCavityTask = new Task("CavityPiezoVoltage"); cavityChannel = (AnalogOutputChannel)Environs.Hardware.AnalogOutputChannels[cavityChannelName]; cavityChannel.AddToTask(outputCavityTask, 0, 10); outputCavityTask.Control(TaskAction.Verify); cavityWriter = new AnalogSingleChannelWriter(outputCavityTask.Stream); }
//This takes in a voltage. A bit cheezy, but I needed the laser // voltage to be set as soon value as soon as it gets configured. public void ConfigureSetLaserVoltage(double voltage) { outputLaserTask = new Task("FeedbackToLaser" + laserChannelName); laserChannel = (AnalogOutputChannel)Environs.Hardware.AnalogOutputChannels[laserChannelName]; laserChannel.AddToTask(outputLaserTask, laserChannel.RangeLow, laserChannel.RangeHigh); outputLaserTask.Control(TaskAction.Verify); laserWriter = new AnalogSingleChannelWriter(outputLaserTask.Stream); laserWriter.WriteSingleSample(true, voltage); //outputLaserTask.Start(); }
public void ConfigureCavityScan(int numberOfSteps, bool autostart) { outputCavityTask = new Task("CavityPiezoVoltage"); cavityChannel = (AnalogOutputChannel)Environs.Hardware.AnalogOutputChannels[cavityChannelName]; cavityChannel.AddToTask(outputCavityTask, 0, 10); outputCavityTask.AOChannels[0].DataTransferMechanism = AODataTransferMechanism.Dma; if (!autostart) { outputCavityTask.Timing.ConfigureSampleClock("", 500, SampleClockActiveEdge.Rising, SampleQuantityMode.FiniteSamples, 2 * numberOfSteps); outputCavityTask.Triggers.StartTrigger.ConfigureDigitalEdgeTrigger( (string)Environs.Hardware.GetInfo(cavityTriggerInputName), DigitalEdgeStartTriggerEdge.Rising); } outputCavityTask.Control(TaskAction.Verify); cavityWriter = new AnalogSingleChannelWriter(outputCavityTask.Stream); }
public void setupMasterVoltageOut() { masterOutputTask = new Task("rampfeedback"); masterChannel=(AnalogOutputChannel)Environs.Hardware.AnalogOutputChannels["rampfb"]; masterChannel.AddToTask(masterOutputTask, masterChannel.RangeLow, masterChannel.RangeHigh); masterOutputTask.Control(TaskAction.Verify); masterWriter = new AnalogSingleChannelWriter(masterOutputTask.Stream); }
public void Start() { proportionalGain = 0; integralGain = 0; // derivativeGain = 0; ui = new MainForm(); ui.controller = this; // get access to ScanMaster and the DecelerationHardwareController RemotingHelper.ConnectScanMaster(); RemotingHelper.ConnectDecelerationHardwareControl(); scanMaster = new ScanMaster.Controller(); hardwareControl = new DecelerationHardwareControl.Controller(); fitter = new DAQ.Analyze.GaussianFitter(); if (!Environs.Debug) { outputTask = new Task("LaserControllerOutput"); laserChannel = (AnalogOutputChannel)Environs.Hardware.AnalogOutputChannels["laser"]; laserChannel.AddToTask(outputTask, -10, 10); outputTask.Control(TaskAction.Verify); laserWriter = new AnalogSingleChannelWriter(outputTask.Stream); inputTask = new Task("LaserControllerInput"); cavityChannel = (AnalogInputChannel)Environs.Hardware.AnalogInputChannels["lockcavity"]; cavityChannel.AddToTask(inputTask, -10, 10); cavityReader = new AnalogSingleChannelReader(inputTask.Stream); inputrefTask = new Task("ReferenceLaserControllerInput"); cavityrefChannel = (AnalogInputChannel)Environs.Hardware.AnalogInputChannels["refcavity"]; cavityrefChannel.AddToTask(inputrefTask, -10, 10); cavityrefReader = new AnalogSingleChannelReader(inputrefTask.Stream); } timerDelegate = new TimerCallback(TalkToHardwareControl); hardwareControlTimer = new System.Threading.Timer(timerDelegate, null, 5000, HARDWARE_CONTROL_TALK_PERIOD); Application.Run(ui); }
public void AddAnalogOutput(Task task, AnalogOutputChannel channel, string channelName, double lowLimit, double highLimit) { channel.AddToTask(task, lowLimit, highLimit); task.Control(TaskAction.Verify); analogTasks.Add(channelName, task); }