コード例 #1
0
ファイル: NET2991A.cs プロジェクト: iamcurrent/MineCode
        public bool InitDevice(string strIP, string strDevPort, string strLocalPort, MsgUpdateDelegate std)
        {
            Int32 nIndex = 0;

            Int32 ipaddr = inet_addr(strIP);

            cfgPara.AAIParam.nDeviceIP              = (UInt32)(System.Net.IPAddress.NetworkToHostOrder(ipaddr));
            cfgPara.AAIParam.nDevicePort            = Convert.ToUInt16(strDevPort);
            cfgPara.AAIParam.nLocalPort             = Convert.ToUInt16(strLocalPort);
            cfgPara.AAIParam.CHParam[16].bChannelEn = 0;
            for (nIndex = 0; nIndex < 16; nIndex++)
            {
                cfgPara.AAIParam.CHParam[nIndex].bChannelEn   = 1;
                cfgPara.AAIParam.CHParam[nIndex].nSampleRange = NET2991A.NET2991A_AI_SAMPRANGE_N5_P5V;
                cfgPara.AAIParam.CHParam[nIndex].nRefGround   = NET2991A.NET2991A_AI_REFGND_RSE;
            }

            cfgPara.AAIParam.fSampleRate   = UserDef.Frequency; //;
            cfgPara.AAIParam.nSampleMode   = NET2991A.NET2991A_AI_SAMPMODE_CONTINUOUS;
            cfgPara.AAIParam.nSampsPerChan = 102400;
            cfgPara.AAIParam.nClockSource  = NET2991A.NET2991A_AI_CLOCKSRC_LOCAL;
            cfgPara.AAIParam.nReserved0    = 0;

            cfgPara.AAIParam.nTriggerSource  = NET2991A.NET2991A_AI_TRIGSRC_NONE;
            cfgPara.AAIParam.nTriggerDir     = NET2991A.NET2991A_AI_TRIGDIR_FALLING;
            cfgPara.AAIParam.fTriggerLevel   = 10;
            cfgPara.AAIParam.nDelaySamps     = 0;
            cfgPara.AAIParam.nReTriggerCount = 1;

            cfgPara.AAIParam.bMasterEn  = 0;
            cfgPara.AAIParam.nReserved1 = 0;
            cfgPara.AAIParam.nReserved2 = 0;

            cfgPara.nReadOffset = 0;
            cfgPara.nReadLength = 16 * UserDef.Frequency;
            cfgPara.hDevice     = (IntPtr)(-1);

            UInt16 nDataTranDir = NET2991A.NET2991A_AI_TRANDIR_CLIENT;

            NET2991A.NET2991_DEV_SetSendSpeed(3);
            if (cfgPara.hDevice != (IntPtr)(-1))
            {
                NET2991A.NET2991_AI_StopTask(cfgPara.hDevice);
                NET2991A.NET2991_DEV_Release(cfgPara.hDevice);
            }
            // 创建设备
            cfgPara.hDevice = NET2991A.NET2991_DEV_Create(cfgPara.AAIParam.nDeviceIP,
                                                          cfgPara.AAIParam.nDevicePort,
                                                          cfgPara.AAIParam.nLocalPort,
                                                          nDataTranDir, 0.2, 0.2, 2);
            bool isSuccess = true;

            mstd = std;
            if (cfgPara.hDevice == (IntPtr)(-1))
            {
                mstd("2991A创建设备失败!");
                isSuccess = false;
            }
            // 判断是否连接
            else if (NET2991A.NET2991_DEV_IsLink(cfgPara.hDevice) == 0)
            {
                mstd("2991A设备没有连接!");
                isSuccess = false;
            }

            // 初始化设备
            else if (NET2991A.NET2991_AI_InitTask(cfgPara.hDevice, ref cfgPara.AAIParam, (IntPtr)(-1)) == 0)
            {
                mstd("2991A初始化设备失败!");
                isSuccess = false;
            } // 不保存文件
            else if (NET2991A.NET2991_AI_IsSaveFile(cfgPara.hDevice, 0) == 0)
            {
                mstd("2911A设置文件保存失败!");
                isSuccess = false;
            }
            // 清除缓存
            else if (NET2991A.NET2991_AI_ClearBuffer(cfgPara.hDevice) == 0)
            {
                mstd("2991A清除缓存失败!");
            }



            if (!isSuccess && cfgPara.hDevice != (IntPtr)(-1))
            {
                NET2991A.NET2991_AI_StopTask(cfgPara.hDevice);
                NET2991A.NET2991_DEV_Release(cfgPara.hDevice);
                cfgPara.hDevice = (IntPtr)(-1);
                return(false);
            }

            return(true);
        }