static void Main(string[] args) { System.ConsoleKeyInfo cki = new System.ConsoleKeyInfo(); MccDaq.ErrorInfo RetVal; int BoardNum = 0; int DeviceChannels = 0; int Rate = FREQ; bool ReadLower = true; BoardNum = GetBoardNum(DEVICE); if (BoardNum == -1) { Console.WriteLine("No USB-{0} detected!", DEVICE); cki = Console.ReadKey(); } else { MccBoard daq = new MccDaq.MccBoard(BoardNum); daq.BoardConfig.GetNumAdChans(out DeviceChannels); if (DeviceChannels > 8) { Console.WriteLine("Single-Ended Channels"); } else { Console.WriteLine("Differentially-Ended Channels"); } IntPtr buffer = MccService.ScaledWinBufAllocEx(BUFFERSIZE); if (buffer == IntPtr.Zero) { Console.WriteLine("Bad Handle"); return; } short[] chArray = new short[CHANCOUNT]; //configuration array for channel numbers Range[] chRange = new Range[CHANCOUNT]; //configuration array for input ranges chArray[0] = 0; chArray[1] = 1; chArray[2] = 2; chArray[3] = 3; chRange[0] = Range.Bip10Volts; chRange[1] = Range.Bip10Volts; chRange[2] = Range.Bip10Volts; chRange[3] = Range.Bip10Volts; RetVal = daq.ALoadQueue(chArray, chRange, CHANCOUNT); IsError(RetVal); //setup the acquisiton RetVal = daq.AInScan(FIRSTCHANNEL, LASTCHANNEL, BUFFERSIZE, ref Rate, Range.Bip10Volts, buffer, ScanOptions.Background | ScanOptions.ScaleData | ScanOptions.Continuous ); IsError(RetVal); fStream = new StreamWriter(@"C:\Users\Public\Documents\DataFile1608G.asc"); CreateFileHeaders(chArray); //writes basic info to the beginning of the file int Count = 0; int Index = 0; short daqStatus; double[] theArray = new double[BUFFERSIZE]; //Loop until key press do { RetVal = daq.GetStatus(out daqStatus, out Count, out Index, FunctionType.AiFunction); if ((Index >= HALFBUFFSIZE) & ReadLower) //check for 50% more data { //get lower half of buffer - ScaledWinBufToArray returns engineering units RetVal = MccService.ScaledWinBufToArray(buffer, theArray, 0, HALFBUFFSIZE); IsError(RetVal); DisplayData(theArray, HALFBUFFSIZE / CHANCOUNT); ReadLower = false; //flag that controls the next read } else if ((Index < HALFBUFFSIZE) & !ReadLower) { //get the upper half - ScaledWinBufToArray returns engineering units RetVal = MccService.ScaledWinBufToArray(buffer, theArray, HALFBUFFSIZE, HALFBUFFSIZE); IsError(RetVal); DisplayData(theArray, HALFBUFFSIZE / CHANCOUNT); ReadLower = true;//flag that controls the next read } } while (!Console.KeyAvailable); cki = Console.ReadKey(); //flush any buffered data out to disk fStream.Close(); //stop the acquisition RetVal = daq.StopBackground(FunctionType.AiFunction); //free up memory MccService.WinBufFreeEx(buffer); WaitForKey(); } }