public void setChannel(int line, double value) { Task task = new Task(); string devFullname = string.Format("{0}/ao{1}", name, line); AOChannel channel = task.AOChannels.CreateVoltageChannel(devFullname, "", 0.0, 10.0, AOVoltageUnits.Volts); task.Start(); AnalogMultiChannelWriter writer = new AnalogMultiChannelWriter(task.Stream); IAsyncResult result = writer.BeginWriteSingleSample(true, new double[] { value }, null, null); task.Stop(); }
internal void ZeroAOChanOnDev(string dev, int[] channelsToZero) { lock (this) { try { // Create an analog out task for a given device for all 4 channels. // Write clearingBufferSize zeros to that port. Wait // until this is finished and destroy the clearning Task. Task analogClearingTask = new Task("AnalogClear"); foreach (int chan in channelsToZero) { analogClearingTask.AOChannels.CreateVoltageChannel( "/" + dev + "/ao" + chan, "", -10.0, 10.0, AOVoltageUnits.Volts); } //analogClearingTask.Timing.ConfigureSampleClock("/" + dev + "/PF", // clearingSampleRate, // SampleClockActiveEdge.Rising, // SampleQuantityMode.FiniteSamples, // clearingBufferSize); analogClearingTask.Timing.ReferenceClockSource = ("/" + dev + "/PFI2"); analogClearingTask.Timing.ReferenceClockRate = 10e6; AnalogMultiChannelWriter analogClearingWriter = new AnalogMultiChannelWriter(analogClearingTask.Stream); double[] zeroData = new double[channelsToZero.Length]; analogClearingWriter.BeginWriteSingleSample(false, zeroData, null, null); analogClearingTask.Control(TaskAction.Verify); analogClearingTask.Start(); //analogClearingWriter.WriteSingleSample(true, zeroData); //analogClearingWriter.WriteMultiSample(true, zeroData); analogClearingTask.WaitUntilDone(30); analogClearingTask.Stop(); analogClearingTask.Dispose(); analogClearingTask = null; } catch (Exception e) { Console.WriteLine("Could not zero analog outputs on device: " + dev); Console.WriteLine(e.Message); } } }
internal void ZeroAOChanOnDev(string dev, int[] channelsToZero) { lock (this) { try { // Create an analog out task for a given device for all 4 channels. // Write clearingBufferSize zeros to that port. Wait // until this is finished and destroy the clearning Task. Task analogClearingTask = new Task("AnalogClear"); foreach (int chan in channelsToZero) analogClearingTask.AOChannels.CreateVoltageChannel( "/" + dev + "/ao" + chan, "", -10.0, 10.0, AOVoltageUnits.Volts); //analogClearingTask.Timing.ConfigureSampleClock("/" + dev + "/PF", // clearingSampleRate, // SampleClockActiveEdge.Rising, // SampleQuantityMode.FiniteSamples, // clearingBufferSize); analogClearingTask.Timing.ReferenceClockSource = ("/" + dev + "/PFI2"); analogClearingTask.Timing.ReferenceClockRate = 10e6; AnalogMultiChannelWriter analogClearingWriter = new AnalogMultiChannelWriter(analogClearingTask.Stream); double[] zeroData = new double[channelsToZero.Length]; analogClearingWriter.BeginWriteSingleSample(false, zeroData, null, null); analogClearingTask.Control(TaskAction.Verify); analogClearingTask.Start(); //analogClearingWriter.WriteSingleSample(true, zeroData); //analogClearingWriter.WriteMultiSample(true, zeroData); analogClearingTask.WaitUntilDone(30); analogClearingTask.Stop(); analogClearingTask.Dispose(); analogClearingTask = null; } catch (Exception e) { Console.WriteLine("Could not zero analog outputs on device: " + dev); Console.WriteLine(e.Message); } } }