国产性一乱一性一伧的解决方法,国产一区影视,日韩欧美国产亚洲,日韩av在线播放不卡,国产69精品久久久久孕妇大杂乱 ,亚洲国产一,97国产精品视频,波多野结无码高清中文
君億道科技聯(lián)系電話:0755-26830682

公司新聞

最全面及時的公司資訊、企業(yè)動態(tài)

USB-QUAD08 C# 示例

來源君億道

此示例演示如何對USB-QUAD08 進行編程。它將一個通道配置為從正交編碼器讀取位置,將另一個通道配置為使用模數(shù)運算符對事件進行計數(shù)。為此,它使用 CConfigScan 配置計數(shù)器輸入,并使用 CLoad32 函數(shù)加載事件計數(shù)器的模數(shù)值。程序連續(xù)讀取輸入。這是使用 CInScan 功能和背景連續(xù)掃描選項設置的。數(shù)據(jù)保存為與 DASYLab 讀取模塊兼容的 ASCII 文件。

 

該程序還使用發(fā)現(xiàn)接口來定位和創(chuàng)建設備對象。使用發(fā)現(xiàn)界面,必須安裝 InstaCal 程序,但最終用戶不需要運行它。

 

該程序是一個 32 C# 控制臺應用程序。如果您開始一個新項目,您必須首先添加對 McDaq 對象的 Dot Net 引用。InstaCal 安裝我們的 Dot Net UL 對象。添加引用通常是通過右鍵單擊項目 [在項目瀏覽器下] 并選擇添加引用來完成的。

 

完整的項目作為 zip 文件附在本文末尾。

 

免責聲明:

隨附的代碼或示例按原樣提供。它尚未作為產(chǎn)品進行測試或驗證,未在部署的應用程序或系統(tǒng)中使用,或在危險環(huán)境中使用。您承擔使用代碼或示例的所有風險。

 

 

 

使用系統(tǒng);

使用麥達克;

使用 System.IO;

命名空間 Quad08

{

    課程計劃

    {

 

        公共常量 int CHANCOUNT = 2;

        公共常量 int FIRSTCHANNEL = 0;

        public const int LASTCHANNEL = CHANCOUNT-1;

        公共常量 int FREQ = 100;

        公共常量 int NUMOFPACKETS = 100;

        公共常量 int PACKETSIZE = 100;

        public const int BUFFERSIZE = PACKETSIZE * CHANCOUNT;

        public const int HALFBUFFSIZE = BUFFERSIZE / 2;

        public const string DEVICE = " USB-QUAD08 ";

 

 

        公共靜態(tài) StreamWriter fStream;

 

        公共靜態(tài) MccBoard daq

 

        公共靜態(tài)MccDaq.CounterMode 模式;

 

        公共靜態(tài) McDaq.ScanOptions 選項;

 

        static void Main(string[] args)

        {

 

            McDaq.ErrorInfo RetVal;

           

            整數(shù)速率 = 頻率;

            bool ReadLower = true;

 

 

            daq = 發(fā)現(xiàn)(設備);

 

            如果(daq == null

            {

                Console.WriteLine("未檢測到{0}!", DEVICE);

                等待鍵();

                返回;

            }

           

            IntPtr 緩沖區(qū) = MccService.WinBufAlloc32Ex(BUFFERSIZE);

 

            if (buffer == IntPtr.Zero)

            {

                Console.WriteLine("壞句柄");

                返回;

            }

 

            //將計數(shù)器0設置為編碼器模式

            mode = CounterMode.Encoder|CounterMode.EncoderModeBit32|CounterMode.EncoderModeX1;

            IsError( daq.CConfigScan( 0,

                                        模式,

                                        CounterDebounceTime.Debounce500ns,

                                        CounterDebounceMode.TriggerAfterStable,

                                        CounterEdgeDetection.RisingEdge,

                                        CounterTickSize.Tick208pt3ns,

                                        0));

 

            //將計數(shù)器 1 設置為帶模數(shù)運算的累加模式

            mode = CounterMode.Totalize|CounterMode.Bit32|CounterMode.ModuloNOn;

            IsError( daq.CConfigScan( 1,

                                        模式,

                                        CounterDebounceTime.Debounce500ns,

                                        CounterDebounceMode.TriggerAfterStable,

                                        CounterEdgeDetection.RisingEdge,

                                        CounterTickSize.Tick20pt83ns,

                                        1));

 

            //用模數(shù)加載寄存器1

            IsError(daq.CLoad32(CounterRegister.MaxLimitReg1, 2000));

 

            //開始讀取計數(shù)器通道

            opts = ScanOptions.Continuous|ScanOptions.Ctr32Bit|ScanOptions.Background;

            IsError(daq.CInScan(FIRSTCHANNEL, LASTCHANNEL, BUFFERSIZE, ref Rate, buffer, opts));

           

            //定時器0輸出(DIO6)用作計數(shù)器1的測試信號

            tmrRate = 100;

            tmrDuty = 0.5;

            tmrDelay = 0.0;

            daq.PulseOutStart( 0,

                                參考 tmrRate

                                參考 tmrDuty,

                                0,

                                參考 tmrDelay,

                                0,

                                PulseOutOptions.Default);

 

            fStream = new StreamWriter(@"C:\Users\Public\Documents\DataFile.asc");

            創(chuàng)建文件頭();//將基本信息寫入文件的開頭

 

            整數(shù)計數(shù) = 0;

            整數(shù)索引 = 0;

            短數(shù)據(jù)狀態(tài);

 

            int[] intArray = new int[BUFFERSIZE];

 

            //循環(huán)直到按鍵

           

            {

                RetVal = daq.GetStatus(out daqStatus, out Count, out Index, FunctionType.CtrFunction);

                if ((Index >= HALFBUFFSIZE) & ReadLower) //檢查 50% 以上的數(shù)據(jù)

                {

                    //獲取緩沖區(qū)的下半部分

                    IsError(MccService.WinBufToArray32(buffer, intArray, 0, HALFBUFFSIZE));

 

                    DisplayData(intArray, HALFBUFFSIZE / CHANCOUNT);

                    ReadLower = 假;//控制下一次讀取的標志

                }

                否則 if ((Index < HALFBUFFSIZE) & !ReadLower)

                {

                    //獲取上半部分

                    IsError(MccService.WinBufToArray32(buffer, intArray, HALFBUFFSIZE, HALFBUFFSIZE));

 

                    DisplayData(intArray, HALFBUFFSIZE / CHANCOUNT);

                    ReadLower = true;//控制下一次讀取的標志

                }

 

                if (Console.KeyAvailable == true) 中斷;

 

            } while ((Count < (PACKETSIZE * NUMOFPACKETS)) || Console.KeyAvailable);

 

 

            //將所有緩沖數(shù)據(jù)刷新到磁盤

            fStream.Close();

 

            //停止獲取

            RetVal = daq.StopBackground(FunctionType.AiFunction);

 

            //釋放內(nèi)存

            MccService.WinBufFreeEx(buffer);

 

            daq.PulseOutStop(0);

 

            等待鍵();

 

        }

        public static int IsError(ErrorInfo e)

        {

            如果 (e.Value != 0)

            {

                Console.WriteLine(e.Message);

                等待鍵();

                返回 1;

            }

            返回0;

        }

 

        /*//////////////////////////////////////////////// ///////////////////////////////////////

        public static MccDaq.MccBoard Discover(string dev)

        {

 

            //這會忽略 InstaCal 實用程序中列出的設備

            McDaq.DaqDeviceManager.IgnoreInstaCal();

 

            //獲取MCC USB設備清單

            MccDaq.DaqDeviceDescriptor[]inventory = MccDaq.DaqDeviceManager.GetDaqDeviceInventory(MccDaq.DaqDeviceInterface.Usb);

 

            int numDevDiscovered =inventory.Length;

 

            if (numDevDiscovered > 0)

            { // 遍歷庫存以尋找 USB-1808

                for (int boardNum = 0; boardNum < numDevDiscovered; boardNum++)

                {

 

                    嘗試

                    {

 

                        if (inventory[boardNum].DevString.Contains(dev))

                        {

                            MccDaq.MccBoard daqBoard = MccDaq.DaqDeviceManager.CreateDaqDevice(boardNum,inventory[boardNum]);

                            返回daqBoard;

                        }

 

                    }

                    捕獲(ULException ule

                    {

                        Console.WriteLine("發(fā)生錯誤:" + ule.Message);

                    }

                }

            }

            返回空;

 

        }

 

 

        /*//////////////////////////////////////////////// ///////////////////////////////////////

 

        public static void WaitForKey()

        {

            Console.WriteLine("\n按任意鍵繼續(xù)...");

           

            {

                System.Threading.Thread.Sleep(20);

 

            } while (!Console.KeyAvailable);

            ConsoleKeyInfo cki = Console.ReadKey();

 

        }

 

        public static void DisplayData(int[] datArray, int rows)

        {

 

            int i = 0;

 

            for (int row = 0; row < rows; row++)

            {

 

                for (int c = 0; c < CHANCOUNT; c++)

                {

 

                    Console.Write("{0}\t", Convert.ToInt32(datArray[i]).ToString("D").PadLeft(10));

                    fStream.Write("{0}\t", Convert.ToInt32(datArray[i]).ToString("D"));

                    ++;

                }

 

                Console.Write("\r\n");

                fStream.Write("\r\n");

            }

            fStream.Flush();

        }

        /*//////////////////////////////////////////////// ///////////////////////////////////////

 

        public static void CreateFileHeaders()

        {

            Console.WriteLine("讀取通道 {0} {1}\n", FIRSTCHANNEL, LASTCHANNEL);

 

            //'''''''''''''''''''''創(chuàng)建文本文件頭字符串''''''''''''''''

            字符串[] hdr = 新字符串[7];

            hdr[0] = "錄制日期:{0}";

            hdr[1] = "塊長度:{0}";

            hdr[2] = "數(shù)據(jù)包數(shù)量:{0}";

            hdr[3] = "增量:{0} 秒。";

            hdr[4] = "運行時間:{0} 秒。";

            hdr[5] = "通道數(shù):{0}";

 

 

            //'''''''''''''''''''''' 構(gòu)建列標題字符串'''''''''''''''''''

 

            for (int j = FIRSTCHANNEL; j < CHANCOUNT; j++)

            {

                hdr[6] = hdr[6] + String.Format("In{0} [V]", j);

                hdr[6] = hdr[6] + "\t";

 

            }

            hdr[4].Trim('\t');

 

            //'''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''

            DateTime MyDate = DateTime.Now;

 

            fStream.WriteLine(hdr[0], MyDate);

            fStream.WriteLine(hdr[1], PACKETSIZE);

            fStream.WriteLine(hdr[2], NUMOFACKETS);

            fStream.WriteLine(hdr[3], (1.0f / FREQ).ToString("0.000"));

            fStream.WriteLine(hdr[4], (NUMOFPACKETS * PACKETSIZE) / FREQ);

            fStream.WriteLine(hdr[5], CHANCOUNT);

            fStream.WriteLine(hdr[6]);

 

            Console.WriteLine(hdr[0], MyDate);

            Console.WriteLine(hdr[1], PACKETSIZE);

            Console.WriteLine(hdr[2], NUMOFPACKETS);

            Console.WriteLine(hdr[3], (1.0f / FREQ).ToString("0.000"));

            Console.WriteLine(hdr[4], (NUMOFPACKETS * PACKETSIZE) / FREQ);

            Console.WriteLine(hdr[5], CHANCOUNT);

            Console.WriteLine(hdr[6]);

 

        }

 

    }

}


主營:電流探頭,電壓探頭,羅氏線圈,電流傳感器,高壓探頭,電流互感器,功率電子測量產(chǎn)品
粵ICP備14003389號深圳君億道科技有限公司 © http://www.fengshengzhitongche.com
主站蜘蛛池模板: 衡阳县| 石棉县| 罗平县| 思南县| 衡阳市| 新干县| 友谊县| 玉龙| 嫩江县| 余庆县| 枣强县| 宿州市| 平远县| 西乡县| 河北省| 阳原县| 滕州市| 杭锦旗| 庆阳市| 得荣县| 荆州市| 轮台县| 聊城市| 永年县| 远安县| 鲜城| 呼和浩特市| 邢台县| 乐平市| 东源县| 长阳| 开鲁县| 五家渠市| 济宁市| 杭锦后旗| 阳高县| 拜城县| 墨竹工卡县| 马龙县| 河源市| 大丰市| 镶黄旗| 马公市| 来安县| 湖北省| 察隅县| 漳浦县| 莆田市| 平武县| 彰化县| 永仁县| 奈曼旗| 嘉义县| 阿克| 长葛市| 拉萨市| 平舆县| 常熟市| 家居| 岳阳县| 黑山县| 老河口市| 木兰县| 横峰县| 拉萨市| 额济纳旗| 西平县| 达日县| 南京市| 遂平县| 高陵县| 板桥市| 布尔津县| 金平| 沧州市| 通渭县| 哈巴河县| 大足县| 新化县| 商都县| 日喀则市| 平江县|