- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- using NationalInstruments.DAQmx;
- using NationalInstruments;
- namespace Testapp
- {
- public partial class mainForm : System.Windows.Forms.Form
- {
- //kokotince z examplu
- private Task myTask;
- private Task runningTask;
- private int numberOfSamples;
- private DigitalLevelPauseTriggerCondition gateLevel = DigitalLevelPauseTriggerCondition.High;
- private AnalogMultiChannelReader analogInReader;
- private AsyncCallback myAsyncCallback;
- private AnalogWaveform<double>[] data;
- public mainForm()
- {
- InitializeComponent();
- myAsyncCallback = new AsyncCallback(AnalogInCallback);
- }
- /* protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (components != null)
- {
- components.Dispose();
- }
- if (myTask != null)
- {
- myTask.Dispose();
- }
- if (runningTask != null)
- {
- runningTask.Dispose();
- }
- }
- base.Dispose(disposing);
- }
- */
- private void AnalogInCallback(IAsyncResult ar)
- {
- try
- {
- if (runningTask == ar.AsyncState)
- {
- // Read the available data from the channels
- data = analogInReader.EndReadWaveform(ar);
- // Plot your data here
- //Lvoltage.Text = data[0].Samples[0].Value.ToString("0.000");
- string s = "";
- for (int i = 0; i < data[0].Samples.Count; i++)
- {
- s += data[0].Samples[i].Value.ToString("0.000") + System.Environment.NewLine;
- }
- MessageBox.Show(s);
- //dataToDataTable(data, ref dataTable);
- analogInReader.BeginMemoryOptimizedReadWaveform(numberOfSamples, myAsyncCallback, myTask, data);
- runningTask = null;
- myTask.Dispose();
- }
- }
- catch (DaqException exception)
- {
- MessageBox.Show(exception.Message);
- }
- }
- private void BTstart_Click(object sender, EventArgs e)
- {
- gateLevel = DigitalLevelPauseTriggerCondition.High;
- numberOfSamples = 10;
- if (runningTask == null)
- {
- try
- {
- // Create a new Task
- myTask = new Task();
- // Create a new virtual channel
- myTask.AIChannels.CreateVoltageChannel("Dev1/ai0", "",
- (AITerminalConfiguration)(-1), -10,
- 10, AIVoltageUnits.Volts);
- // Configure Timing Specs
- myTask.Timing.ConfigureSampleClock("", 1000,
- SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 10);
- // Configure Pause Trigger
- // myTask.Triggers.PauseTrigger.ConfigureDigitalLevelTrigger(triggerSourceTextBox.Text,gateLevel);
- // Verify the Task
- myTask.Control(TaskAction.Verify);
- runningTask = myTask;
- // Create the analogReader object
- analogInReader = new AnalogMultiChannelReader(myTask.Stream);
- // For .NET Framework 2.0 or later, use SynchronizeCallbacks to specify that the object
- // marshals callbacks across threads appropriately.
- analogInReader.SynchronizeCallbacks = true;
- analogInReader.BeginReadWaveform(numberOfSamples, myAsyncCallback, myTask);
- BTstart.Enabled = false;
- BTstop.Enabled = true;
- }
- catch (DaqException exception)
- {
- MessageBox.Show(exception.Message);
- myTask.Dispose();
- }
- }
- }
- private void BTstop_Click(object sender, EventArgs e)
- {
- zmer();
- }
- private void zmer()
- {
- gateLevel = DigitalLevelPauseTriggerCondition.High;
- numberOfSamples = 100;
- if (runningTask == null)
- {
- try
- {
- // Create a new Task
- myTask = new Task();
- // Create a new virtual channel
- myTask.AIChannels.CreateVoltageChannel("Dev1/ai0", "",
- (AITerminalConfiguration)(-1), -10,
- 10, AIVoltageUnits.Volts);
- // Configure Timing Specs
- myTask.Timing.ConfigureSampleClock("", 1000,
- SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1000);
- // Verify the Task
- myTask.Control(TaskAction.Verify);
- runningTask = myTask;
- // Create the analogReader object
- analogInReader = new AnalogMultiChannelReader(myTask.Stream);
- // marshals callbacks across threads appropriately.
- analogInReader.SynchronizeCallbacks = true;
- analogInReader.BeginReadWaveform(numberOfSamples, myAsyncCallback, myTask);
- BTstart.Enabled = false;
- BTstop.Enabled = true;
- }
- catch (DaqException exception)
- {
- MessageBox.Show(exception.Message);
- myTask.Dispose();
- }
- }
- }
- }
- }