Ejemplo n.º 1
0
        public override void Initialize()
        {
            var device = DASK.Register_Card(Type, 0);

            if (device < 0)
            {
                switch (device)
                {
                case DASK.ErrorTooManyCardRegistered:
                    throw new DaskException("32 cards have been registered.");

                case DASK.ErrorUnknownCardType:
                    throw new DaskException(string.Format("The CardType argument {0} is not valid.", DASK.PCI_7432));

                case DASK.ErrorOpenDriverFailed:
                    throw new DaskException("Failed to open the device driver.");

                case DASK.ErrorOpenEventFailed:
                    throw new DaskException("Open event failed in device driver.");

                default:
                    throw new DaskException("Unknown error.");
                }
            }
        }
Ejemplo n.º 2
0
        public void Initialize()
        {
            foreach (var cardNo in _cardNos)
            {
                var device = DASK.Register_Card(DASK.PCI_7432, cardNo);
                if (device < 0)
                {
                    switch (device)
                    {
                    case DASK.ErrorTooManyCardRegistered:
                        throw new DaskException("32 cards have been registered.");

                    case DASK.ErrorOpenDriverFailed:
                        throw new DaskException("Failed to open the device driver.");

                    case DASK.ErrorOpenEventFailed:
                        throw new DaskException("Open event failed in device driver.");

                    default:
                        throw new DaskException("Unknown error.");
                    }
                }
                _devices.Add(cardNo, device);
            }
        }
Ejemplo n.º 3
0
        public int IPrimInit()
        {
            if (_isInitialed)
            {
                return(0);
            }
            var iRet          = 0;
            var boardIdInBits = _config.DevIndex;

            int ret = DASK.Register_Card(DASK.PCI_7432, (ushort)boardIdInBits);


            for (var i = 0; i < groupDIVal.Length; i++)
            {
                groupDIVal[i] = -1;
            }

            for (var i = 0; i < groupDOVal.Length; i++)
            {
                groupDOVal[i] = -1;
            }

            PrimRunStat  = PrimRunState.Stop;
            PrimConnStat = PrimConnState.UnConnected;

            ((PrimConfigControl)PrimConfigUI).SetPrimConnState(PrimConnStat);
            ((PrimConfigControl)PrimConfigUI).SetPrimRunState(PrimRunStat);
            _isInitialed = true;
            return(iRet);
        }
Ejemplo n.º 4
0
 private void Form1_Load(object sender, EventArgs e)
 {
     m_dev = DASK.Register_Card(DASK.PCI_7432, 0);/* à»Ô´Ãкº I/O */
     if (m_dev < 0)
     {
         MessageBox.Show("Register_Card error!");
     }
 }
Ejemplo n.º 5
0
        public static void IOCard7432Close()//释放IO卡
        {
            short ret;
            short m_dev = DASK.Register_Card(DASK.PCI_7432, 0);

            if (m_dev >= 0)
            {
                ret = DASK.Release_Card((ushort)m_dev);
            }
        }
Ejemplo n.º 6
0
        public void Register()
        {
            m_dev = DASK.Register_Card(PCI_name, 0);

            if (m_dev < 0)
            {
                MessageBox.Show("Register_Card error!");

                System.Environment.Exit(0);
            }
        }
Ejemplo n.º 7
0
 public void Register()
 {
     m_dev = DASK.Register_Card(PCI_name, 0);
     // DASK.DIO_SetDualInterrupt
     //  DASK.DIO_INT1_EventMessage
     if (m_dev < 0)
     {
         MessageBox.Show("Register_Card error!");
         //  Application.Exit();
         System.Environment.Exit(0);
     }
 }
Ejemplo n.º 8
0
        private void Form1_Load(object sender, EventArgs e)
        {
            short ret = DASK.Register_Card(DASK.PCI_9221, 0);

            if (ret >= 0)
            {
                cardRegNumber = (ushort)ret;
            }
            else
            {
                MessageBox.Show("9222卡初始化失败!");
            }
        }
Ejemplo n.º 9
0
        public static void Init(IO[] inputMotors, IO[] outputMotors)
        {
            try
            {
                DASK.Register_Card(CARD_TYPE, m_Number);
                _IsRegistered = true;
            }
            catch (Exception)
            {
                Logger.Fatal("ADLINK card error.");
                _IsRegistered = false;
            }

            InitInputMotor(inputMotors);
            InitOutputMotor(outputMotors);
            Start();
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Registers the card.
 /// </summary>
 /// <param name="card_num">The card number.</param>
 /// <returns>System.Int16.</returns>
 public short RegisterCard(ushort card_num)
 {
     if (card_handle < 0 || this.card_num != card_num)
     {
         short handle = DASK.Register_Card(DASK.PCI_9524, card_num);
         if (handle < 0)
         {
             return(handle);//return error coed if error happened.
         }
         else
         {
             ReleaseCard();
             this.card_num    = card_num;
             this.card_handle = handle;
         }
     }
     return(DASK.NoError);
 }
Ejemplo n.º 11
0
        public override bool Init(HardWareInfoBase infoHardWare)
        {
            //  Global.logger.Info("初始化凌华IO卡");
            ADLINKInputOutputInfo tempInfo = (ADLINKInputOutputInfo)infoHardWare;

            usCardNo = (ushort)tempInfo.iCardNo;
            bool ret;

            try
            {
                ret = DASK.Register_Card(tempInfo.hardwareModel, usCardNo) == 0 ? true : false;
            }
            catch (Exception)
            {
                //  Global.logger.Info("初始化凌华IO卡失败!");
                return(false);
            }
            ///    Global.logger.Info("初始化凌华IO卡成功!");
            return(ret);
        }
Ejemplo n.º 12
0
 public static void Initial(ushort cardNbr, out short code, out string message)
 {
     try { m_device = DASK.Register_Card(DASK.PCI_7432, 0); /* เปิดระบบ I/O */ }
     catch { m_device = -3; }
     if (m_device < 0)
     {
         code    = -1;
         message = "Register_Card error!";
         logText = "DIO Initialization: " + message;
         log.AppendText(logText);
         System.Diagnostics.Debug.WriteLine(logText);
     }
     else
     {
         code    = 0;
         message = "";
         logText = "DIO Initialization: OK";
         log.AppendText(logText);
         System.Diagnostics.Debug.WriteLine(logText);
     }
 }
        short _devHandle = -1; //SDK打开卡时返回的句柄
        public int OpenDevice()
        {
            if (!IsInitOK)
            {
                return((int)ErrorDef.NotInitialed);
            }
            if (IsDeviceOpen)
            {
                return(0);
            }

            _devHandle = DASK.Register_Card((ushort)_cardType, (ushort)_cardIndex);
            if (_devHandle < 0)
            {
                return((int)ErrorDef.InvokeFailed);
            }

            _dioMD = new JFAdlinkPciDio(_cardType, _devHandle);
            _dioMD.Open();

            IsDeviceOpen = true;
            return((int)ErrorDef.Success);
        }
Ejemplo n.º 14
0
        public static void IOCard7432Initial() //初始化IO扩展卡
        {
            //ushort _cardType = 0;
            //for (ushort i = 0; i < 16; i++)
            //{
            //    //在下拉框中添加 systemID
            //    if (DASK.Register_Card(DASK.PCI_7432, i) >= 0)
            //    {
            //        //cmbCardSystemId.Items.Add(i);
            //        _cardType = DASK.PCI_7432;
            //    }
            //    else
            //    {
            //        MessageBox.Show("7432卡初始化失败!");
            //    }
            //}
            //_cardRegId = DASK.Register_Card(_cardType, Convert.ToUInt16(cmbCardSystemId.SelectedItem)); //实列化卡片
            //short  _cardRegId = DASK.Register_Card(16, 0); //实列化卡片
            //if (_cardRegId < 0)
            //{
            //    MessageBox.Show("7432卡初始化失败!");
            //}
            ushort _cardType = 0;

            //short cardRegId; //全局引用
            for (ushort i = 0; i < 16; i++)
            {
                //在下拉框中添加 systemID
                if (DASK.Register_Card(DASK.PCI_7432, i) >= 0)
                {
                    //cmbCardSystemId.Items.Add(i);
                    _cardType = DASK.PCI_7432;
                }
            }
            CAMiClsVariable.cardRegId = DASK.Register_Card(_cardType, 0); //实列化卡片
        }
Ejemplo n.º 15
0
        static void Main(string[] args)
        {
            short  err;
            ushort card_num = 0;
            short  card;
            uint   ReadCount    = 60;
            ushort Group        = 0; // Load Cell Channel Group
            ushort XMode        = DASK.P9524_AI_XFER_DMA;
            ushort ADC_Range    = 0;
            ushort ADC_SampRate = DASK.P9524_ADC_60_SPS;
            ushort ConfigCtrl   = DASK.P9524_VEX_Range_10V | DASK.P9524_AI_BufAutoReset;
            ushort TrigCtrl     = 0;
            uint   dwTrigValue  = 0;
            ushort GCtr0        = DASK.P9524_CTR_QD0;
            ushort Mode         = DASK.P9524_x4_AB_Phase_Decoder;
            ushort Channel      = DASK.P9524_AI_LC_CH0;
            byte   Stopped      = 0;
            byte   HalfReady    = 0;
            uint   AccessCnt;
            int    viewidx     = 0;
            ushort overrunFlag = 0;
            double ActualRate;
            IntPtr BufPtr1;
            ushort BufID1;
            IntPtr BufPtr2;
            ushort BufID2;

            double[]     voltageArray    = new double[ReadCount];
            ushort       DFStage         = 2;
            uint         SPKRejThreshold = 16;
            StreamWriter sw = new StreamWriter("acq.csv");

            BufPtr1 = Marshal.AllocHGlobal((int)(sizeof(uint) * (ReadCount)));
            BufPtr2 = Marshal.AllocHGlobal((int)(sizeof(uint) * (ReadCount)));

            card = DASK.Register_Card(DASK.PCI_9524, card_num);
            if (card < 0)
            {
                throw new InvalidOperationException("DSA_Register_Card Fail, error:  " + card);
            }

            //Enable Decoder0
            err = DASK.GPTC_Clear((ushort)card, GCtr0);
            if (err < 0)
            {
                throw new InvalidOperationException("GPTC_Clear Fail, error:  " + err);
            }

            err = DASK.GPTC_Setup((ushort)card, GCtr0, Mode, 0, 0, 0, 0);
            if (err < 0)
            {
                throw new InvalidOperationException("GPTC_Setup Fail, error:  " + err);
            }

            //apply parameter 4 to "2" to combine data to AI
            err = DASK.GPTC_Control((ushort)card, GCtr0, DASK.P9524_CTR_Enable, 2);
            if (err < 0)
            {
                throw new InvalidOperationException("GPTC_Control Fail, error:  " + err);
            }

            err = DASK.AI_AsyncDblBufferMode((ushort)card, true);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_AsyncDblBufferMode Fail, error:  " + err);
            }

            /*In Double Buffer Mode, you should setup two buffers*/
            err = DASK.AI_ContBufferSetup((ushort)card, BufPtr1, ReadCount, out BufID1);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_ContBufferSetup Fail, error:  " + err);
            }

            err = DASK.AI_ContBufferSetup((ushort)card, BufPtr2, ReadCount, out BufID2);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_ContBufferSetup Fail, error:  " + err);
            }

            /*Load Cell Group*/
            /*Set DSP - it is necessary fot Load Cell Group*/
            err = DASK.AI_9524_SetDSP((ushort)card, Channel, DASK.P9524_SPIKE_REJ_ENABLE, DFStage, (ushort)SPKRejThreshold);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_9524_SetDSP Fail, error:  " + err);
            }

            err = DASK.AI_9524_Config((ushort)card, Group, XMode, ConfigCtrl, TrigCtrl, (ushort)dwTrigValue);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_9524_Config Fail, error:  " + err);
            }


            Console.WriteLine("\nPress any key to start AI Infinite Acquisition\n");
            Console.ReadKey(true);
            Console.WriteLine("\nYou can press any key to stop...\n\n");

            err = DASK.AI_ContReadChannel((ushort)card, Channel, ADC_Range, new ushort[] { BufID1 }, ReadCount, ADC_SampRate, DASK.ASYNCH_OP);
            if (err < 0)
            {
                throw new InvalidOperationException("AI_ContReadChannel Fail, error:  " + err);
            }


            do
            {
                err = DASK.AI_AsyncDblBufferHalfReady((ushort)card, out HalfReady, out Stopped);
                if (err < 0)
                {
                    throw new InvalidOperationException("AI_AsyncDblBufferHalfReady Fail, error:  " + err);
                }
                System.Threading.Thread.Sleep(1);
                if (HalfReady == 1)
                {
                    if (viewidx == 0)
                    {
                        Console.WriteLine("Buffer 1 HalfReady, Process the data of Buffer 1\n");
                        /*Process buffer 1 data*/
                        DASK.AI_ContVScale((ushort)card, ADC_Range, BufPtr1, voltageArray, (int)ReadCount);
                        for (int j = 0; j < ReadCount; j = j + 2)
                        {
                            //fprintf(fin, "AI0:,%13.9f,2's Complement Decoder Valuse:, %d\n", voltageArray[i], (int)(Buffer1[i + 1] * 256) / 256);
                            sw.WriteLine(voltageArray[j] + "," + (int)(((uint *)(void *)BufPtr1)[j + 1] * 256) / 256);
                        }

                        viewidx = 1;
                        /*Tell the driver you complete the buffer 1 process*/
                        err = DASK.AI_AsyncDblBufferHandled((ushort)card);
                        if (err < 0)
                        {
                            throw new InvalidOperationException("AI_AsyncDblBufferHandled Fail, error:  " + err);
                        }
                    }

                    else
                    {
                        Console.WriteLine("Buffer 2 HalfReady, Process the data of Buffer 2\n");
                        /*Process buffer 2 data*/
                        DASK.AI_ContVScale((ushort)card, ADC_Range, BufPtr2, voltageArray, (int)ReadCount);
                        for (int j = 0; j < ReadCount; j = j + 2)
                        {
                            //fprintf(fin, "AI0:,%13.9f,2's Complement Decoder Valuse:, %d\n", voltageArray[i], (int)(Buffer1[i + 1] * 256) / 256);
                            sw.WriteLine(voltageArray[j] + "," + (int)(((uint *)(void *)BufPtr2)[j + 1] * 256) / 256);
                        }

                        viewidx = 0;
                        /*Tell the driver you complete the buffer 2 process*/
                        err = DASK.AI_AsyncDblBufferHandled((ushort)card);
                        if (err < 0)
                        {
                            throw new InvalidOperationException("AI_AsyncDblBufferHandled Fail, error:  " + err);
                        }
                    }

                    // This function can check if the overrun occurs. If the
                    // function is called, AI_AsyncDblBufferHandled() should
                    // be called to let driver to know user buffer is processed
                    // completely
                    err = DASK.AI_AsyncDblBufferOverrun((ushort)card, 0, out overrunFlag);
                    if (err < 0)
                    {
                        throw new InvalidOperationException("AI_AsyncDblBufferOverrun Fail, error:  " + err);
                    }
                    if (overrunFlag != 0)
                    {
                        Console.WriteLine("OVERRUN:\n" + overrunFlag);
                        DASK.AI_AsyncDblBufferOverrun((ushort)card, 1, out overrunFlag);
                    }
                }
            } while ((Stopped == 0) && (Console.KeyAvailable == false));

            DASK.GetActualRate_9524((ushort)card, Group, ADC_SampRate, out ActualRate);
            Console.WriteLine("\n\nGeneral Purpose Channel 0 Acquisition Done in " + ActualRate + "Hz");
            Console.WriteLine("The acquired data stored in acq.dat\n");

            /*Clear AI setting while existing*/
            err = DASK.AI_AsyncClear((ushort)card, out AccessCnt);
            if (err < 0)
            {
                Console.WriteLine("AI_AsyncClear Error:" + err + "\n");
                DASK.AI_ContBufferReset((ushort)card);
                DASK.Release_Card((ushort)card);
            }


            if ((ConfigCtrl & DASK.P9524_AI_BufAutoReset) == 0)
            {
                err = DASK.AI_ContBufferReset((ushort)card);
                if (err < 0)
                {
                    throw new InvalidOperationException("AI_ContBufferReset Fail, error:  " + err);
                }
            }

            DASK.GPTC_Clear((ushort)card, GCtr0);

            DASK.Release_Card((ushort)card);

            Console.Write("Press any key to save data . . .");
            sw.Close();
            Console.ReadKey(true);
        }
Ejemplo n.º 16
0
        private void PCI9222_Load(object sender, EventArgs e)
        {
            short ret = DASK.Register_Card(DASK.PCI_9222, 0);

            if (ret >= 0)
            {
                cardRegNumber = (ushort)ret;//Register_Card的时候,把卡号给cardRegNumber
            }
            else
            {
                MessageBox.Show("9222卡初始化失败!");
            }


            //ushort ConfigCtrl = DASK.P922x_AI_SingEnded | DASK.P922x_AI_CONVSRC_INT;//?差分在哪区分
            //ushort TrigCtrl = DASK.P922x_AI_TRGMOD_POST | DASK.P922x_AI_TRGSRC_SOFT;//?
            ushort ConfigCtrl     = DASK.P922x_AI_Differential | DASK.P922x_AI_CONVSRC_INT;; //?差分在哪区分
            ushort TrigCtrl       = DASK.P922x_AI_TRGMOD_POST | DASK.P922x_AI_TRGSRC_SOFT;;  //?
            uint   ReTriggerCount = 0;                                                       /*Ignore in Non-Retrigger*/


            bufindex = 0;//是用来两个交替读吗?
            //Channel = 4; /*AI Channel Number to be read*/
            //uint SampIntrv = 8000; /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/  //这个设置,如果要快一点,怎么设置,变小?
            //P922X_TIMEBASE  时钟,80000000,  intrv=80000000/5000=16000;5000为每秒5000个数据,每个通道1000个数据/s
            uint SampIntrv = 16000; /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/   //采样率=80 000000/500=160000,每个通道100个数据,有5个通道
            //AI_ReadCount设置为500,
            //建议每秒钟采集10次-50次,这样不会丢数据。如果采集20次,怎么设置了?
            //目标:1S1000个数据,1ms一个  intrv=80000000/5000=16000;5000为每秒5000个数据,每个通道1000个数据/s  SampIntrv = 16000,
            //AI_ReadCount=5000,则1S采集一次,如果设置成500,则0.1S采集一次,一次100个数据每通道、如果设置成250,则0.05采集一次,1次50个数据
            uint ScanIntrv = (uint)(SampIntrv * (Channel + 1)); /*Scan Rate: P922X_TIMEBASE/320 = 250K Hz*/

            ushort AdRange = DASK.AD_B_10_V;                    /*AI range*/

            ai_buf_ready_cbdel = new CallbackDelegate(ai_buf_ready_cbfunc);
            _ptr[0]            = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount)));//5000
            _ptr[1]            = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount)));
            VBuffer[0]         = Marshal.AllocHGlobal((sizeof(double) * ((Int32)AI_ReadCount)));
            /*Configure AI*/


            err = DASK.AI_9222_Config(cardRegNumber, ConfigCtrl, TrigCtrl, ReTriggerCount, true);
            if (err < 0)
            {
                MessageBox.Show("config");
            }

            /*Set Scan and Sampling Rate*/
            err = DASK.AI_9222_CounterInterval(cardRegNumber, ScanIntrv, SampIntrv);
            if (err < 0)
            {
                MessageBox.Show("AI_9222_CounterInterval");
            }

            /*Enable Double Buffer Mode*/
            err = DASK.AI_AsyncDblBufferMode(cardRegNumber, true);
            if (err < 0)
            {
                MessageBox.Show("AI_AsyncDblBufferMode");
            }

            /*Setup Buffer for AI DMA Transfer*/
            err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[0], AI_ReadCount, out _bufferId[0]);
            if (err < 0)
            {
                MessageBox.Show("AI_ContBufferSetup");
            }
            err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[1], AI_ReadCount, out _bufferId[1]);
            if (err < 0)
            {
                MessageBox.Show("AI_ContBufferSetup");
            }

            err = DASK.AI_EventCallBack(cardRegNumber, 1 /*add*/, DASK.DBEvent /*EventType*/, ai_buf_ready_cbdel);//????????????????????
            if (err < 0)
            {
                MessageBox.Show("AI_EventCallBack");
            }

            err = DASK.AI_ContScanChannels(cardRegNumber, Channel, AdRange, _bufferId, AI_ReadCount, 0 /*Ignore*/, DASK.ASYNCH_OP);////??????????
            if (err < 0)
            {
                MessageBox.Show("AI_ContScanChannels");
            }
            this.timer1.Enabled = true;
        }
Ejemplo n.º 17
0
        public void PCI922Init()
        {
            short ret = DASK.Register_Card(DASK.PCI_9222, 0);

            if (ret >= 0)
            {
                cardRegNumber = (ushort)ret;//Register_Card的时候,把卡号给cardRegNumber
                Globals.addList("9222卡初始化成功!", Mycolor.None);
                #region PCI9222设置
                //ushort ConfigCtrl = DASK.P922x_AI_SingEnded | DASK.P922x_AI_CONVSRC_INT;//?差分在哪区分
                //ushort TrigCtrl = DASK.P922x_AI_TRGMOD_POST | DASK.P922x_AI_TRGSRC_SOFT;//?
                ushort ConfigCtrl     = DASK.P922x_AI_Differential; //?差分在哪区分
                ushort TrigCtrl       = DASK.P922x_AI_TRGMOD_POST;  //?
                uint   ReTriggerCount = 0;                          /*Ignore in Non-Retrigger*/


                bufindex = 0;//是用来两个交替读吗?
                //Channel = 4; /*AI Channel Number to be read*/
                //uint SampIntrv = 8000; /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/  //这个设置,如果要快一点,怎么设置,变小?
                //AI_ReadCount设置为500,
                //建议每秒钟采集10次-50次,这样不会丢数据。如果采集20次,怎么设置了?
                //目标:1S1000个数据,1ms一个  intrv=80000000/5000=16000;5000为每秒5000个数据,每个通道1000个数据/s  SampIntrv = 16000,
                //AI_ReadCount=5000,则1S采集一次,如果设置成500,则0.1S采集一次,一次100个数据每通道、如果设置成250,则0.05采集一次,1次50个数据
                uint SampIntrv = 16000;                             /*Sampling Rate: P922X_TIMEBASE/320 = 250K Hz*/
                uint ScanIntrv = (uint)(SampIntrv * (Channel + 1)); /*Scan Rate: P922X_TIMEBASE/320 = 250K Hz*/

                ushort AdRange = DASK.AD_B_10_V;                    /*AI range*/

                ai_buf_ready_cbdel = new CallbackDelegate(ai_buf_ready_cbfunc);
                _ptr[0]            = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount)));//5000
                _ptr[1]            = Marshal.AllocHGlobal((sizeof(ushort) * ((Int32)AI_ReadCount)));
                VBuffer[0]         = Marshal.AllocHGlobal((sizeof(double) * ((Int32)AI_ReadCount)));
                /*Configure AI*/


                err = DASK.AI_9222_Config(cardRegNumber, ConfigCtrl, TrigCtrl, ReTriggerCount, true);
                if (err < 0)
                {
                    Globals.addList("9222卡config失败!", Mycolor.ErrorRed);
                }

                /*Set Scan and Sampling Rate*/
                err = DASK.AI_9222_CounterInterval(cardRegNumber, ScanIntrv, SampIntrv);
                if (err < 0)
                {
                    Globals.addList("9222卡AI_9222_CounterInterval设置失败!", Mycolor.ErrorRed);
                }

                /*Enable Double Buffer Mode*/
                err = DASK.AI_AsyncDblBufferMode(cardRegNumber, true);
                if (err < 0)
                {
                    Globals.addList("9222卡AI_AsyncDblBufferMode设置失败!", Mycolor.ErrorRed);
                }

                /*Setup Buffer for AI DMA Transfer*/
                err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[0], AI_ReadCount, out _bufferId[0]);
                if (err < 0)
                {
                    Globals.addList("9222卡AI_ContBufferSetup设置失败!", Mycolor.ErrorRed);
                }
                err = DASK.AI_ContBufferSetup(cardRegNumber, _ptr[1], AI_ReadCount, out _bufferId[1]);
                if (err < 0)
                {
                    Globals.addList("9222卡AI_ContBufferSetup设置失败!", Mycolor.ErrorRed);
                }

                err = DASK.AI_EventCallBack(cardRegNumber, 1 /*add*/, DASK.DBEvent /*EventType*/, ai_buf_ready_cbdel);//????????????????????
                if (err < 0)
                {
                    Globals.addList("9222卡AI_EventCallBack设置失败!", Mycolor.ErrorRed);
                }

                err = DASK.AI_ContScanChannels(cardRegNumber, Channel, AdRange, _bufferId, AI_ReadCount, 0 /*Ignore*/, DASK.ASYNCH_OP);////??????????
                if (err < 0)
                {
                    Globals.addList("9222卡AI_ContScanChannels设置失败!", Mycolor.ErrorRed);
                }
                #endregion
            }
            else
            {
                Globals.PostAlarmMachine(XAlarmLevel.STOP, (int)AlarmCode.凌华PCI9222板卡异常, AlarmCategory.SYSTEM.ToString(), "凌华PCI9222板卡异常");
                if (ShowList != null)
                {
                    ShowList("9222卡初始化失败!");
                }
            }
        }