DAQMX kártya példaprogram

A Fizipedia wikiből
CSharp DAQMX.png

A Form tartalma:

  • Button startButton;
  • Button readButton;
  • TextBox inputBox;

Megjegyzés: a kártya azonosítója ("DevXX") a MAX listájában ellenőrizhető. Az alábbi kódban a "Dev1" stringet át kell írni a megfelelő értékre, amennyiben szükséges.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//a kovetkezo ket using direktivat hozza kell adni a fejlechez
//az NI referenciat hozza kell adni a projecthez           
using NationalInstruments.DAQmx;
using System.IO;
 
namespace DAQMX
{
    public partial class Form1 : Form
    {
        //Global valtozok
        private Task OutTask;    //kimeneti Task: Dev1/ao0
        private AnalogSingleChannelWriter writer;  
        private Task InTask;    //bemeneti Task: Dev1/ai0
        private AnalogSingleChannelReader reader;
 
        double Minimumvoltage = 0;
        double Maximumvoltage = 5;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //a masodik gomb le van tiltva, amig nem nyomjuk meg a felsot
            readButton.Enabled=false;
        }
 
	//Inicializalas a meres megkezdese elott
	//peldaul gombnyomasra 
        private void startButton_Click(object sender, System.EventArgs e)
        {
			//Kimenet
			OutTask = new Task();  //Task konstruktora
			//Kimeneti csatorna letrehozasa: 
			OutTask.AOChannels.CreateVoltageChannel("Dev1/ao0", "",
                    Minimumvoltage, Maximumvoltage,
                    AOVoltageUnits.Volts);		
			writer = new AnalogSingleChannelWriter(OutTask.Stream);
			//Bemenet
			InTask = new Task();  //Task konstruktora
			//Bemeneti csatorna letrehozasa: 
			InTask.AIChannels.CreateVoltageChannel("Dev1/ai0", "",
                    AITerminalConfiguration.Differential, Minimumvoltage, Maximumvoltage,
                    AIVoltageUnits.Volts);		
			reader = new AnalogSingleChannelReader(InTask.Stream);
                        //miutan inicializaltuk a merest, megnyomhatjuk a masodik gombot is
                        readButton.Enabled=true;
	}
        private void readButton_Click(object sender, System.EventArgs e)
        {
                        Double input = 0;
                        //a feszultseg kiadasat es visszaolvasasat az alabbi fuggveny vegzi
                        input=write_And_Read();
                        //az eredmeny kiirasa
                        inputBox.Text=input.ToString("0.000");
        }
        //data nagysagu feszultseg kiadasa
        //es a bemenet beolvasasa
	private Double write_And_Read()
	{
			Double data=0.2;   //mindig 0 es 5V kozott!
			writer.WriteSingleSample(true,data);
                        //a fuggveny a beolvasott ertekkel ter vissza
			return reader.ReadSingleSample();
	}
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            //eroforrasok felszabaditasa            
	    OutTask.Dispose();
	    InTask.Dispose();
        }
 
     }
}