以下示例演示了在USB-2020上使用 BurstIO、Ext Trigger 和 Ext Clock 模式。在 BurstIO 模式下,采集必須適合 64 MSample 板載緩沖區(qū)。一旦采集完成,就可以讀取數(shù)據(jù)。完整的 Visual Studio 項目附在底部。
使用系統(tǒng);
使用麥達(dá)克;
使用 System.IO;
命名空間模擬輸入
{
課程計劃
{
公共常量 int CHANCOUNT = 1;
公共常量 int FIRSTCHANNEL = 0;
public const int LASTCHANNEL = 0;
公共常量整數(shù)頻率 = 10000;//不關(guān)心由于使用了外部時鐘
公共常量 int BUFFERSIZE = 100000;
public const int HALFBUFFSIZE = BUFFERSIZE / 2;
public const string DEVICE = " USB-2020 ";
static void Main(string[] args)
{
McDaq.ErrorInfo RetVal;
int BoardNum = 0;
整數(shù)速率 = 頻率;
BoardNum = GetBoardNum(DEVICE);
if (BoardNum == -1)
Console.WriteLine("未檢測到{0}!", DEVICE);
別的
{
MccBoard daq = 新 MccDaq.MccBoard(BoardNum);
IntPtr 緩沖區(qū) = MccService.ScaledWinBufAllocEx(BUFFERSIZE);
if (buffer == IntPtr.Zero)
{
Console.WriteLine("壞句柄");
返回;
}
Console.WriteLine("正在收集數(shù)據(jù)....");
ScanOptions ops = ScanOptions.BurstIo |
ScanOptions.ScaleData |
ScanOptions.ExtClock |
ScanOptions.ExtTrigger;
//設(shè)置采集
IsError(daq.AInScan(FIRSTCHANNEL,
上一個頻道,
緩沖區(qū)大小,
參考率,
Range.Bip10Volts,
緩沖,
操作員
));
double[] theArray = new double[BUFFERSIZE];
RetVal = MccService.ScaledWinBufToArray(buffer, theArray, 0, BUFFERSIZE);
顯示數(shù)據(jù)(數(shù)組,1000);
//釋放內(nèi)存
MccService.WinBufFreeEx(buffer);
Console.WriteLine("完成...");
等待鍵();
}
}
public static int IsError(ErrorInfo e)
{
如果 (e.Value != 0)
{
Console.WriteLine(e.Message);
等待鍵();
返回 1;
}
返回0;
}
public static int GetBoardNum(string dev)
{
for (int BoardNum = 0; BoardNum < 99; BoardNum++)
{
MccDaq.MccBoard daq = 新 MccDaq.MccBoard(BoardNum);
if (daq.BoardName.Contains(dev))
{
Console.WriteLine("{0} 板號 = {1}", dev, BoardNum.ToString());
daq.FlashLED();
返回 BoardNum;
}
}
返回-1;
}
public static void WaitForKey()
{
Console.WriteLine("\n按 <SpaceBar> 繼續(xù)...");
System.ConsoleKeyInfo cki;
做
{
cki = Console.ReadKey();
} while (cki.Key != ConsoleKey.Spacebar);
}
public static void DisplayData(double[] datArray, int rows)
{
//將數(shù)據(jù)寫入屏幕和文件
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));
我++;
}
Console.Write("\r\n");
}
}
}
}