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

公司新聞

最全面及時的公司資訊、企業動態

USB-1808 通過輪詢讀取多個子系統

來源君億道

以下示例使用 DaqInScan 功能同時讀取 USB-1808 子系統。它被配置為讀取四個模擬輸入、四位數字端口和一個編碼器通道。它配置了一個大小為數據包乘以通道計數乘以乘數的 緩沖區 。要使緩沖區變大/變小,請更改multiplier 。采樣率為每秒 3600 個樣本。循環設置為在新的半緩沖區可用時進行讀取。打印例程只打印 前 32 個樣本以防止它消耗可用時間 

 

要訪問 API,請添加對 McDaq 對象的引用。添加引用通常是通過右鍵單擊項目 [在項目資源管理器下并選擇添加引用來完成的。完整的項目附在文章中,是使用 CSharp 使用 Visual Studio 2008 創建的。編譯和執行速度很快,因為 Windows 開銷和相關代碼最少。

 

為了使代碼更具可讀性,添加了一些方便的函數,例如 IsErrorGetBoardNum WaitForKeyIsError 函數檢查 ErrorInfo 對象中的錯誤編號,如果不是零則顯示錯誤消息。GetBoardNum 函數開始從每個數字位置讀取設備字符串,一旦找到包含標識字符串的設備字符串,它就會退出。WaitForKey 就是這樣做的 - 等待某人按下某個鍵。要查看完整的程序項目,請下載下面的附件。

 

免責聲明:

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

 

使用系統;

使用麥達克;// 同時,向項目添加對 McDaq 的引用


//此程序使用DaqInScan功能同時讀取4x AI1x DigIn1x Encoder。它配置了一個

//緩沖區大小為數據包乘以通道計數時間乘數。使緩沖區變大/變小

//改變乘數。采樣率為每秒 3600 個樣本。循環設置為讀取時

//一個新的半緩沖區可用。程序在可用時檢索緩沖區的一半。印刷品

//例程只打印前32個樣本以防止它消耗可用時間

 

命名空間 CSharp_USB_1808_DaqInScanEncoder

{

    靜態類常量

    {

        public const int ChanCount = 6; //通道數(4x AI1x DigIn2x Encoder

        公共常量 int PACKET = 128;

        公共常量 int BUFFMULTIPLER = 100;

        public const int BUFFSIZE = PACKET * ChanCount * BUFFMULTIPLER;

        公共靜態 int bufferSize = BUFFSIZE;

        公共靜態 int halfbuf = bufferSize / 2;

        公共常量 int 計數器 = 2; //第一個編碼器通道

        public static int rows = halfbuf / ChanCount;

        公共靜態 MccBoard daq

        公共靜態整數率 = 3600

        公共靜態 int preTrigCount = 0;

 

    }

    課程計劃

    {

 

        static void Main(string[] args)

        {

            int BoardNum = 0;

            daqStatus = 0;

            整數計數 = 0;

            整數索引 = 0;

 

            short[] ChanArray = new short[Constants.ChanCount]; // 保存通道隊列信息的數組

            ChannelType[] ChanTypeArray = new ChannelType[Constants.ChanCount]; // 保存通道類型信息的數組

            Range[] GainArray = new Range[Constants.ChanCount]; // 保存增益隊列信息的數組

 

 

 

 

 

            Console.WriteLine("正在定位設備...請稍候\n");

 

            BoardNum = GetBoardNum("1808");

 

            if (BoardNum == -1)

            {

                Console.WriteLine("未檢測到設備!");

                等待鍵();

                返回;

            }

            別的

            {

                Constants.daq = new MccDaq.MccBoard(BoardNum);

         

                Constants.daq.AInputMode(AInputMode.SingleEnded);

 

                CounterMode CMODE = CounterMode.Encoder | CounterMode.EncoderModeX1;

 

                IsError(Constants.daq.CConfigScan(2,

                                                    模式,

                                                    CounterDebounceTime.DebounceNone,

                                                    CounterDebounceMode.TriggerAfterStable,

                                                    CounterEdgeDetection.RisingEdge

                                                    CounterTickSize.Tick20ns,

                                                    0));

 

 

                int i = 0;

                ChanArray[i] = 0;

                ChanTypeArray[i] = ChannelType.Analog;

                GainArray[i] = Range.Bip10Volts;

                ++;

 

                ChanArray[i] = 1;

                ChanTypeArray[i] = ChannelType.Analog;

                GainArray[i] = Range.Bip10Volts;

                ++;

 

                ChanArray[i] = 2;

                ChanTypeArray[i] = ChannelType.Analog;

                GainArray[i] = Range.Bip10Volts;

                ++;

 

                ChanArray[i] = 3;

                ChanTypeArray[i] = ChannelType.Analog;

                GainArray[i] = Range.Bip10Volts;

                ++;

 

 

                ChanArray[i] = (int)DigitalPortType.AuxPort;

                ChanTypeArray[i] = ChannelType.Digital;

                GainArray[i] = Range.NotUsed;

                ++;

 

                ChanArray[i] = 2; //編碼器通道為 2 & 3

                ChanTypeArray[i] = ChannelType.Ctr;

                GainArray[i] = Range.NotUsed;

                ++;

 

 

                ScanOptions 選項 = ScanOptions.Default

                                        | ScanOptions.Continuous

                                        | ScanOptions.Background;

 

                //分配緩沖區

                int bufferSize = Constants.bufferSize;

 

                IntPtr 緩沖區 = MccService.WinBufAlloc32Ex(Constants.bufferSize);

 

               

                IsError(Constants.daq.DaqInScan(ChanArray,

                                                ChanTypeArray,

                                                增益陣列,

                                                Constants.ChanCount

                                                參考 Constants.rate

                                                參考 Constants.preTrigCount

                                                參考 Constants.bufferSize

                                                緩沖,

                                                選項));

 

                System.ConsoleKeyInfo cki = new System.ConsoleKeyInfo();

 

                Console.WriteLine("正在檢索數據\n");

 

                int[] UserBuffer = new int[Constants.halfbuf];

                bool ReadLower = true;

               

                {

 

                    IsError(Constants.daq.GetStatus(out daqStatus, out Count, out Index, FunctionType.DaqiFunction));

                    if ((Index >= Constants.halfbuf) & ReadLower) //檢查多出50%的數據

                    {

                        //獲取緩沖區的下半部分

                        IsError(MccService.WinBufToArray32(buffer, UserBuffer, 0, Constants.halfbuf));

 

                        DisplayData(UserBuffer, Constants.rows);

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

                    }

                    else if ((Index < Constants.halfbuf) & !ReadLower)

                    {

 

                        //獲取上半部分

                        IsError(MccService.WinBufToArray32(buffer, UserBuffer, Constants.halfbuf, Constants.halfbuf));

 

                        DisplayData(UserBuffer, Constants.rows);

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

                    }

 

                } while (!Console.KeyAvailable);

                cki = Console.ReadKey();

 

                //停止后臺操作

                IsError(Constants.daq.StopBackground(FunctionType.DaqiFunction));

 

                //釋放內存

                IsError(MccService.WinBufFreeEx(buffer));

 

                等待鍵();

            }

            //程序結束

        }

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

 

        public static int GetBoardNum(string dev)

        {

 

            McDaq.DaqDeviceManager.IgnoreInstaCal();

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

            int DevicesFound =inventory.Length;

            如果(設備發現 > 0

            {

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

                {

 

                    嘗試

                    {

 

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

                        {

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

                            Console.WriteLine("產品名稱:{0}",inventory[boardNum].ProductName);

                            Console.WriteLine("設備類型# : {0}",inventory[boardNum].ProductID);

                            Console.WriteLine("Serial # : {0}",inventory[boardNum].UniqueID);

                            返回板號;

                        }

                    }

                    捕獲(ULException ule

                    {

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

                    }

                }

            }

            返回-1

        }

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

 

        public static void WaitForKey()

        {

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

           

            { //空閑循環

                System.Threading.Thread.Sleep(10);

            } while (!Console.KeyAvailable);

        }

 

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

 

        public static int IsError(ErrorInfo e)

        {

            如果 (e.Value != 0)

            {

                Console.WriteLine(e.Message);

                等待鍵();

                返回 1

            }

            返回0

        }

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

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

        {

            //將數據寫入屏幕和文件

            int i = 0;

            雙溫;

            如果(行 > 32)行 = 32

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

            {

                for (int c = 0; c < Constants.ChanCount; c++)

                {

                    如果 (c < 4)

                    {

                        IsError(Constants.daq.ToEngUnits32(Range.Bip10Volts, datArray[i], out temp));

                        Console.Write("{0}\t", temp.ToString("0.000"));

                    }

                    別的

                        Console.Write("{0}\t", datArray[i].ToString("000000"));

 

                    ++;

                }

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

            }

            Console.WriteLine("\n讀取的數據掃描數{0}\n", Constants.rows);

 

        }

       

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

 

    }

}

主營:電流探頭,電壓探頭,羅氏線圈,電流傳感器,高壓探頭,電流互感器,功率電子測量產品
粵ICP備14003389號深圳君億道科技有限公司 © http://www.fengshengzhitongche.com
主站蜘蛛池模板: 永靖县| 兴国县| 蛟河市| 正安县| 库车县| 正定县| 汝南县| 伊宁市| 融水| 香港| 平潭县| 德庆县| 来宾市| 呼玛县| 顺昌县| 松江区| 延寿县| 白沙| 菏泽市| 青河县| 朔州市| 吴川市| 图片| 余庆县| 三台县| 富阳市| 昌吉市| 常州市| 涪陵区| 宣恩县| 东安县| 扶绥县| 阳春市| 大庆市| 门头沟区| 资阳市| 新安县| 仁怀市| 通山县| 白银市| 湖南省| 西宁市| 临泉县| 澄江县| 军事| 集安市| 济阳县| 繁昌县| 乐至县| 罗甸县| 枣阳市| 衡阳市| 瓦房店市| 德惠市| 佛学| 荆州市| 额济纳旗| 晋中市| 双峰县| 左贡县| 溧水县| 铜陵市| 莱阳市| 公安县| 贵阳市| 赫章县| 夏河县| 成武县| 通辽市| 和政县| 海丰县| 鹰潭市| 宁蒗| 南郑县| 洞头县| 溆浦县| 二手房| 青岛市| 广南县| 自贡市| 高邮市| 玉树县|