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