以下示例演示了如何使用計數器輸入和MCCDAQ點網API讀取頻率。
要訪問API,請添加對MccDaq對象的引用。通常,通過右鍵單擊“項目”(在“項目資源管理器”下)并選擇“添加參考”來完成添加參考。完整的項目附在文章后,并使用CSharp與Visual Studio 2008一起創建。由于Windows開銷和相關代碼最少,因此編譯和執行速度很快。
為了使代碼更具可讀性,添加了一些便利功能,例如IsError,GetBoardNum和WaitForKey。IsError函數檢查ErrorInfo對象中的錯誤號,如果不為零,則顯示錯誤消息。GetBoardNum函數開始從每個數字位置讀取設備字符串,并在找到包含標識字符串的字符串后立即退出。WaitForKey就是這樣做的-等待某人按下某個鍵。要查看完整的程序項目,請下載以下附件。
免責聲明:
隨附的代碼或示例按原樣提供。它尚未經過測試或驗證,不能作為產品,不能在已部署的應用程序或系統中使用或在危險環境中使用。您承擔使用本《準則》或《示例》的所有風險。
-------------------------------------------------- -------------------------------------------------- --------------
使用系統;
使用MccDaq; //同樣,將對MccDaq的引用添加到項目中
命名空間PeriodMode
{
班級計劃
{
public const int CHANCOUNT = 1;
公共常量字符串DEVICE =“ USB-CTR”; //對于USB-CTR04或USB-CTR08
public const int CounterNum = 0; //用于測量信號發生器
public const int OutTimerNum = 0; //用作信號發生器
public const CounterMode Mode = CounterMode.Period;
public const CounterDebounceTime DebounceTime = CounterDebounceTime.Debounce500ns;
公共常量CounterDebounceMode DebounceMode = CounterDebounceMode.TriggerAfterStable;
public const CounterEdgeDetection EdgeDetection = CounterEdgeDetection.RisingEdge;
公共常量CounterTickSize TickSize = CounterTickSize.Tick20pt83ns; // 0等于20.833 nS ticksize
公共const double tickTime = 0.000000020833f;
public const int MapCounter = 0;
/ * ////////////////////////////////////////////////// /////////////////////////////////// * /
靜態void Main(string [] args)
{
int BoardNum = 0;
雙倍頻率= 1000.0f;
雙占空比= 0.50f;
double intDelay = 0;
Console.WriteLine(“定位設備...請稍候\ n”);
BoardNum = GetBoardNum(DEVICE);
如果(BoardNum == -1)
{
Console.WriteLine(“未檢測到{0}!”,設備);
WaitForKey();
返回;
}
別的
{
MccBoard daq =新的MccDaq.MccBoard(BoardNum);
IsError(daq.CConfigScan(CounterNum,
模式,
去抖時間,
DebounceMode,
邊緣檢測
TickSize,
MapCounter));
//出于測試目的,將電線從計時器0跳到計數器0。
//使用定時器作為測試信號
IsError(daq.PulseOutStart(OutTimerNum,
參考頻率
參考值,0,
ref intDelay,
IdleState.Low,
PulseOutOptions.Default));
System.ConsoleKeyInfo cki =新的System.ConsoleKeyInfo();
Console.WriteLine(“正在檢索數據\ n”);
Console.WriteLine(“按任意鍵退出... \ n”);
int tickCounts;
雙溫度= 0;
做
{
IsError(daq.CIn32(CounterNum,out tickCounts));
temp = 1 /(tickCounts * tickTime);
Console.Write(“ {0} Hz \ r \ n”,temp.ToString(“ 0000.00”));
System.Threading.Thread.Sleep(100);
} while(!Console.KeyAvailable);
cki = Console.ReadKey();
IsError(daq.PulseOutStop(OutTimerNum));
WaitForKey();
}
}
/ * ////////////////////////////////////////////////// /////////////////////////////////// * /
公共靜態整數GetBoardNum(string dev)
{
for(int BoardNum = 0; BoardNum <99; BoardNum ++)
{
MccDaq.MccBoard daq =新的MccDaq.MccBoard(BoardNum);
如果(daq.BoardName.Contains(dev))
{
Console.WriteLine(“ {0}板號= {1} \ n”,daq.BoardName,BoardNum.ToString());
返回BoardNum;
}
}
返回-1;
}
/ * ////////////////////////////////////////////////// /////////////////////////////////// * /
公共靜態無效的WaitForKey()
{
Console.WriteLine(“ \ n按任意鍵繼續...”);
做
{//空閑循環
System.Threading.Thread.Sleep(10);
} while(!Console.KeyAvailable);
}
/ * ////////////////////////////////////////////////// /////////////////////////////////// * /
公共靜態int IsError(ErrorInfo e)
{
如果(e.Value!= 0)
{
Console.WriteLine(e.Message);
WaitForKey();
返回1;
}
返回0;
}
/ * ////////////////////////////////////////////////// /////////////////////////////////// * /
}
}