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

公司新聞

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

USB-1808 通過事件通知讀取多個子系統

來源君億道

以下示例使用 DaqInScan 功能同時讀取 USB-1808 子系統。它被配置為讀取四個模擬輸入、四位數字端口和一個編碼器通道。它配置一個緩沖區,其大小為數據包乘以通道計數時間乘數。要使緩沖區變大/變小,請更改乘數。采樣率為每秒 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;

 

            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);

 

                Constants.daq.EnableEvent(EventType.OnDataAvailable, Constants.halfbuf, GetData, buffer);

 

                IsError(Constants.daq.DaqInScan(ChanArray,

                                                ChanTypeArray,

                                                增益陣列,

                                                Constants.ChanCount

                                                參考 Constants.rate

                                                參考 Constants.preTrigCount

                                                參考 Constants.bufferSize

                                                緩沖,

                                                選項));

 

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

 

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

 

                // 空閑循環

               

                {

                    System.Threading.Thread.Sleep(100);

 

                } 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;

            雙溫度 = 0;

            Console.Clear();

 

            如果(行 > 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);

 

        }

 

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

 

        public static void GetData(int bd, MccDaq.EventType et, uint Count, IntPtr pUserData)

        {

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

 

            //計算緩沖區中最新樣本的索引。

            int Index = ((int)Count) % Constants.bufferSize;

 

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

            {

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

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

 

                DisplayData(UserBuffer, Constants.rows);

                Console.WriteLine("\n讀取緩沖區的下半部分。總樣本數{0}", Count.ToString("000,000,000"));

 

            }

            else if (Index < Constants.halfbuf-1)

            {

 

                //獲取上半部分

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

 

                DisplayData(UserBuffer, Constants.rows);

                Console.WriteLine("\n讀取緩沖區的上半部分。總樣本數{0}", Count.ToString("000,000,000"));

 

            }

 

        }

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

 

    }

}

主營:電流探頭,電壓探頭,羅氏線圈,電流傳感器,高壓探頭,電流互感器,功率電子測量產品
粵ICP備14003389號深圳君億道科技有限公司 © http://www.fengshengzhitongche.com
主站蜘蛛池模板: 板桥市| 冷水江市| 遂昌县| 古蔺县| 义乌市| 武鸣县| 安康市| 泰兴市| 浠水县| 房产| 通州区| 伽师县| 宜丰县| 招远市| 灌云县| 和硕县| 鄂伦春自治旗| 和龙市| 新沂市| 灵丘县| 保亭| 仁化县| 汉源县| 晴隆县| 昌江| 安岳县| 博客| 桑植县| 晋宁县| 攀枝花市| 都昌县| 仙游县| 台南县| 新乡市| 广南县| 洱源县| 阆中市| 茌平县| 沭阳县| 玉树县| 琼海市| 永福县| 德安县| 北票市| 黄冈市| 兴宁市| 巴林右旗| 洛浦县| 武川县| 古丈县| 永春县| 郓城县| 新田县| 尼勒克县| 左云县| 黄浦区| 枞阳县| 建昌县| 若尔盖县| 观塘区| 梁山县| 赫章县| 浮山县| 固始县| 民乐县| 康马县| 太白县| 卢龙县| 云梦县| 广宁县| 来安县| 广东省| 海阳市| 山西省| 若尔盖县| 合肥市| 泽普县| 莒南县| 喜德县| 精河县| 岫岩| 若羌县|