Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Sep 16th, 2012  |  syntax: None  |  size: 6.37 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8.  
  9. using NationalInstruments.DAQmx;
  10. using NationalInstruments;
  11.  
  12.  
  13. namespace Testapp
  14. {
  15.     public partial class mainForm : System.Windows.Forms.Form
  16.     {
  17.         //kokotince z examplu
  18.         private Task myTask;
  19.         private Task runningTask;
  20.         private int numberOfSamples;
  21.         private DigitalLevelPauseTriggerCondition gateLevel = DigitalLevelPauseTriggerCondition.High;
  22.         private AnalogMultiChannelReader analogInReader;
  23.        
  24.         private AsyncCallback myAsyncCallback;
  25.        
  26.  
  27.         private AnalogWaveform<double>[] data;
  28.  
  29.        
  30.        
  31.  
  32.         public mainForm()
  33.         {
  34.             InitializeComponent();
  35.             myAsyncCallback = new AsyncCallback(AnalogInCallback);
  36.  
  37.  
  38.         }
  39.  
  40.     /*    protected override void Dispose(bool disposing)
  41.         {
  42.             if (disposing)
  43.             {
  44.                 if (components != null)
  45.                 {
  46.                     components.Dispose();
  47.                 }
  48.                 if (myTask != null)
  49.                 {
  50.                     myTask.Dispose();
  51.                 }
  52.                 if (runningTask != null)
  53.                 {
  54.                     runningTask.Dispose();
  55.                 }
  56.             }
  57.             base.Dispose(disposing);
  58.         }
  59.         */
  60.        
  61.         private void AnalogInCallback(IAsyncResult ar)
  62.         {
  63.             try
  64.             {
  65.                 if (runningTask == ar.AsyncState)
  66.                 {
  67.  
  68.                     // Read the available data from the channels            
  69.                     data = analogInReader.EndReadWaveform(ar);
  70.  
  71.                     // Plot your data here
  72.                     //Lvoltage.Text = data[0].Samples[0].Value.ToString("0.000");
  73.  
  74.                     string s = "";
  75.                     for (int i = 0; i < data[0].Samples.Count; i++)
  76.                     {
  77.                         s += data[0].Samples[i].Value.ToString("0.000") + System.Environment.NewLine;
  78.                     }
  79.  
  80.                     MessageBox.Show(s);
  81.                    
  82.                     //dataToDataTable(data, ref dataTable);
  83.  
  84.                    analogInReader.BeginMemoryOptimizedReadWaveform(numberOfSamples, myAsyncCallback, myTask, data);
  85.  
  86.                    runningTask = null;
  87.                    myTask.Dispose();
  88.                    
  89.  
  90.  
  91.  
  92.  
  93.                 }
  94.             }
  95.             catch (DaqException exception)
  96.             {
  97.                 MessageBox.Show(exception.Message);
  98.              
  99.             }
  100.         }
  101.  
  102.  
  103.         private void BTstart_Click(object sender, EventArgs e)
  104.         {
  105.             gateLevel = DigitalLevelPauseTriggerCondition.High;
  106.             numberOfSamples = 10;
  107.            
  108.  
  109.             if (runningTask == null)
  110.             {
  111.                 try
  112.                 {
  113.                     // Create a new Task
  114.                     myTask = new Task();
  115.  
  116.                     // Create a new virtual channel
  117.                     myTask.AIChannels.CreateVoltageChannel("Dev1/ai0", "",
  118.                         (AITerminalConfiguration)(-1), -10,
  119.                         10, AIVoltageUnits.Volts);
  120.  
  121.                     // Configure Timing Specs    
  122.                     myTask.Timing.ConfigureSampleClock("", 1000,
  123.                         SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 10);
  124.  
  125.                     // Configure Pause Trigger
  126.                     // myTask.Triggers.PauseTrigger.ConfigureDigitalLevelTrigger(triggerSourceTextBox.Text,gateLevel);
  127.  
  128.                     // Verify the Task
  129.                     myTask.Control(TaskAction.Verify);
  130.  
  131.                    
  132.  
  133.                     runningTask = myTask;
  134.  
  135.                     // Create the analogReader object
  136.                     analogInReader = new AnalogMultiChannelReader(myTask.Stream);
  137.  
  138.  
  139.                     // For .NET Framework 2.0 or later, use SynchronizeCallbacks to specify that the object
  140.                     // marshals callbacks across threads appropriately.
  141.                     analogInReader.SynchronizeCallbacks = true;
  142.  
  143.                     analogInReader.BeginReadWaveform(numberOfSamples, myAsyncCallback, myTask);
  144.                    
  145.  
  146.  
  147.                     BTstart.Enabled = false;
  148.                     BTstop.Enabled = true;
  149.                 }
  150.                 catch (DaqException exception)
  151.                 {
  152.                     MessageBox.Show(exception.Message);
  153.                     myTask.Dispose();
  154.                 }
  155.             }
  156.            
  157.         }
  158.  
  159.         private void BTstop_Click(object sender, EventArgs e)
  160.         {
  161.  
  162.             zmer();
  163.            
  164.  
  165.         }
  166.  
  167.  
  168.         private void zmer()
  169.         {
  170.  
  171.             gateLevel = DigitalLevelPauseTriggerCondition.High;
  172.             numberOfSamples = 100;
  173.  
  174.  
  175.             if (runningTask == null)
  176.             {
  177.                 try
  178.                 {
  179.                     // Create a new Task
  180.                     myTask = new Task();
  181.  
  182.                     // Create a new virtual channel
  183.                     myTask.AIChannels.CreateVoltageChannel("Dev1/ai0", "",
  184.                         (AITerminalConfiguration)(-1), -10,
  185.                         10, AIVoltageUnits.Volts);
  186.  
  187.                     // Configure Timing Specs    
  188.                     myTask.Timing.ConfigureSampleClock("", 1000,
  189.                         SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1000);
  190.  
  191.                     // Verify the Task
  192.                     myTask.Control(TaskAction.Verify);
  193.  
  194.                     runningTask = myTask;
  195.  
  196.                     // Create the analogReader object
  197.                     analogInReader = new AnalogMultiChannelReader(myTask.Stream);
  198.  
  199.  
  200.                     // marshals callbacks across threads appropriately.
  201.                     analogInReader.SynchronizeCallbacks = true;
  202.  
  203.                     analogInReader.BeginReadWaveform(numberOfSamples, myAsyncCallback, myTask);
  204.  
  205.  
  206.  
  207.                     BTstart.Enabled = false;
  208.                     BTstop.Enabled = true;
  209.                 }
  210.                 catch (DaqException exception)
  211.                 {
  212.                     MessageBox.Show(exception.Message);
  213.                     myTask.Dispose();
  214.                 }
  215.             }
  216.  
  217.         }
  218.  
  219.     }
  220. }