如果出现这个错误,插拔一下usb口
1mV=100 mm/s2 ,NiDAQ的震动测试仪有一个毫伏和震动加速度的对应值 约等于10, 但每个仪器都会校准
Public Function GetVibrationData(ByRef Wave, ByRef msg As String, Optional ByVal Slot As Integer = 0) As Integer '测试振动数据 On Error GoTo ErrorHandler Dim taskHandle As Long Dim sampsPerChanRead As Long Dim numchannels As Long Dim fillMode As DAQmxFillMode Dim numSampsPerChannel As Long Dim numSampsFreq As Long Dim arraySizeInSamps As Long Dim StrChance As String Dim AdjustValue As Single Dim taskIsRunning As Boolean Dim nGain As Double Dim Data() As Double 'If scanOrderOption.value = True Then fillMode = DAQmx_Val_GroupByScanNumber 'Else ' fillMode = DAQmx_Val_GroupByChannel 'End If numSampsFreq = 51200 numSampsPerChannel = 51200 / 3 ' numSampsFreq = 51200 '8192 ' 8192 ' 8000 '8192 '8192 '4096 '50000 '2048 '10240 '4096 ' numSampsPerChannel = 12800 ' 8192 ' 51200 '34200 ' 32768 '16384 ' 32768 ' 8192 ' 8000 ' 20000 ' 8000 ' 2048 '' 10240 '4096 '10240 '8000 'CLng(samplesPerChannelTextBox.Text) ' 'StrChance = "cDAQ1Mod1/ai0:3" StrChance = "cDAQ1Mod1/ai" & CStr(Slot) taskHandle = OpenMyCard(StrChance) taskIsRunning = True DAQmxErrChk DAQmxCfgSampClkTiming(taskHandle, "OnboardClock", CLng(numSampsFreq), DAQmx_Val_Rising, _ DAQmx_Val_AcquisitionType_FiniteSamps, CLng(numSampsPerChannel)) DAQmxErrChk DAQmxGetTaskNumChans(taskHandle, numchannels) arraySizeInSamps = numSampsPerChannel * numchannels ReDim Data(arraySizeInSamps - 1) DoEvents Dim nSamptimes As Double nSamptimes = timeGetTime DAQmxErrChk DAQmxReadAnalogF64(taskHandle, numSampsPerChannel, 10#, _ fillMode, Data(0), arraySizeInSamps, sampsPerChanRead, ByVal 0&) Do While sampsPerChanRead < numSampsPerChannel - 1 DoEvents If timeGetTime - nSamptimes > 3000 Then Exit Do End If Loop Dim fMax, fMin As Variant Dim nMaxIndex As Variant, nMinIndex As Variant Dim nMaxValueFre As Single, sngAccelerationValue As Single DAQmxErrChk DAQmxStopTask(taskHandle) DAQmxErrChk DAQmxClearTask(taskHandle) taskIsRunning = False Wave = Data Exit Function ErrorHandler: Dim nData(0) As Integer Wave = nData msg = "Error: " & Err.Number & " " & Err.Description End Function Public Sub DAQmxErrChk(errorCode As Long) ' ' Utility function to handle errors by recording the DAQmx error code ' and message. ' Dim errorString As String Dim bufferSize As Long Dim Status As Long If (errorCode < 0) Then ' Find out the error message length. bufferSize = DAQmxGetErrorString(errorCode, 0, 0) ' Allocate enough space in the string. errorString = String$(bufferSize, 0) ' Get the actual error message. Status = DAQmxGetErrorString(errorCode, errorString, bufferSize) ' Trim it to the actual length, and display the message errorString = Left(errorString, InStr(errorString, Chr$(0))) Err.Raise errorCode, , errorString End If End Sub