Measurement Computing   Easy to Use | Easy to Integrate | Easy to Support catalog banner

USB-2020 CSharp Example using BurstIO Ext Trig & Ext Clock

Expand / Collapse
 

USB-2020 CSharp Example using BurstIO Ext Trig & Ext Clock


The following example demonstrates the use of BurstIO, Ext Trigger and Ext Clock mode on the USB-2020. In BurstIO mode the acquisition must fit into the 64 MSample on board buffer. Once the acquisition has completed data can be read. The complete Visual Studio project is attached at the bottom.

using System;
using MccDaq;
using System.IO;
namespace AnalogIn
{
    class Program
    {
        public const int CHANCOUNT = 1;
        public const int FIRSTCHANNEL = 0;
        public const int LASTCHANNEL = 0;
        public const int FREQ = 10000; //don't care due to use of Ext Clock
        public const int BUFFERSIZE = 100000;
        public const int HALFBUFFSIZE = BUFFERSIZE / 2;
        public const string DEVICE = "USB-2020";

        static void Main(string[] args)
        {

            MccDaq.ErrorInfo RetVal;

            int BoardNum = 0;
            int Rate = FREQ;

            BoardNum = GetBoardNum(DEVICE);

            if (BoardNum == -1)
                Console.WriteLine("No {0} detected!", DEVICE);
            else
            {
                MccBoard daq = new MccDaq.MccBoard(BoardNum);

                IntPtr buffer = MccService.ScaledWinBufAllocEx(BUFFERSIZE);

                if (buffer == IntPtr.Zero)
                {
                    Console.WriteLine("Bad Handle");
                    return;
                }
                Console.WriteLine("Collecting Data....");
                ScanOptions ops =   ScanOptions.BurstIo | 
                                    ScanOptions.ScaleData | 
                                    ScanOptions.ExtClock |
                                    ScanOptions.ExtTrigger;

                //setup the acquisiton
                IsError(daq.AInScan(    FIRSTCHANNEL,
                                        LASTCHANNEL,
                                        BUFFERSIZE,
                                        ref Rate,
                                        Range.Bip10Volts,
                                        buffer,
                                        ops
                                    ));

                double[] theArray = new double[BUFFERSIZE];
                
                RetVal = MccService.ScaledWinBufToArray(buffer, theArray, 0, BUFFERSIZE);
                DisplayData(theArray, 1000);
                //free up memory
                MccService.WinBufFreeEx(buffer);
                Console.WriteLine("Done...");
                WaitForKey();
            }
        }
        public static int IsError(ErrorInfo e)
        {
            if (e.Value != 0)
            {
                Console.WriteLine(e.Message);
                WaitForKey();
                return 1;
            }
            return 0;
        }
        public static int GetBoardNum(string dev)
        {
            for (int BoardNum = 0; BoardNum < 99; BoardNum++)
            {
                MccDaq.MccBoard daq = new MccDaq.MccBoard(BoardNum);
                if (daq.BoardName.Contains(dev))
                {
                    Console.WriteLine("{0} board number = {1}", dev, BoardNum.ToString());
                    daq.FlashLED();
                    return BoardNum;
                }
            }
            return -1;
        }
        public static void WaitForKey()
        {
            Console.WriteLine("\nPress <SpaceBar> to continue...");

            System.ConsoleKeyInfo cki;
            do
            {
                cki = Console.ReadKey();
            } while (cki.Key != ConsoleKey.Spacebar);
        }
        public static void DisplayData(double[] datArray, int rows)
        {
            //Writes data to screen and to file
            int i = 0;

            for (int row = 0; row < rows; row++)
            {
                for (int c = 0; c < CHANCOUNT; c++)
                {
                    Console.Write("{0}\t", datArray[i].ToString("0.0000").PadLeft(10));
                    i++;
                }
                Console.Write("\r\n");
            }
        }


    }
}



Rate this Article:

Attachments


USB-2020 AnalogIn.zip USB-2020 AnalogIn.zip (3.80 KB, 613 views)

Add Your Comments


For comments email TechSupport@mccdaq.com.

Details
Article ID: 50586

Last Modified:7/23/2015 11:48:36 AM

Article has been viewed 7,168 times.

Options