diff --git a/Packages/MIES/MIES_DataAcquisition_Multi.ipf b/Packages/MIES/MIES_DataAcquisition_Multi.ipf index 181cbb6667..d2b9f3370d 100644 --- a/Packages/MIES/MIES_DataAcquisition_Multi.ipf +++ b/Packages/MIES/MIES_DataAcquisition_Multi.ipf @@ -16,7 +16,7 @@ Function DQM_FIFOMonitor(s) STRUCT BackgroundStruct &s variable deviceID, isFinished, hardwareType - variable i, j, err, fifoLatest, result, channel, lastTP, gotTPChannels + variable i, j, err, fifoLatest, result, channel, lastTP, gotTPChannels, newSamplesCount variable bufferSize string device, fifoChannelName, fifoName, errMsg WAVE ActiveDeviceList = GetDQMActiveDeviceList() @@ -44,7 +44,9 @@ Function DQM_FIFOMonitor(s) fifoName = GetNIFIFOName(deviceID) FIFOStatus/Q $fifoName ASSERT(V_Flag != 0,"FIFO does not exist!") - if(fifoPosGlobal == V_FIFOChunks) + newSamplesCount = V_FIFOChunks - fifoPosGlobal + if(newSamplesCount < 2) + // workaround for Igor Pro bug 5092 continue // no new data -> next device endif @@ -55,11 +57,11 @@ Function DQM_FIFOMonitor(s) fifoChannelName = StringByKey("NAME" + num2str(j), S_Info) channel = str2num(fifoChannelName) WAVE NIChannel = NIDataWave[channel] + FIFO2WAVE/R=[fifoPosGlobal, fifoPosGlobal + newSamplesCount - 1] $fifoName, $fifoChannelName, wNIReadOut; AbortOnRTE + bufferSize = DimSize(NIChannel, ROWS) fifoLatest = min(V_FIFOChunks, bufferSize) isFinished = (fifoLatest == bufferSize) ? 1 : isFinished - - FIFO2WAVE/R=[fifoPosGlobal, fifoLatest - 1] $fifoName, $fifoChannelName, wNIReadOut; AbortOnRTE multithread NIChannel[fifoPosGlobal, fifoLatest - 1] = wNIReadOut[p - fifoPosGlobal] SetScale/P x, 0, DimDelta(wNIReadOut, ROWS) * ONE_TO_MILLI, "ms", NIChannel diff --git a/Packages/tests/HardwareBasic/UTF_BasicHardwareTests.ipf b/Packages/tests/HardwareBasic/UTF_BasicHardwareTests.ipf index 8e467572f4..914bfefebc 100644 --- a/Packages/tests/HardwareBasic/UTF_BasicHardwareTests.ipf +++ b/Packages/tests/HardwareBasic/UTF_BasicHardwareTests.ipf @@ -2362,3 +2362,22 @@ End static Function CheckIfNoTTLonTP_REENTRY([string str]) PASS() End + +#ifdef TESTS_WITH_NI_HARDWARE +// UTF_TD_GENERATOR DeviceNameGeneratorMD1 +static Function TestNIAcquisitionReliability([str]) + string str + + STRUCT DAQSettings s + InitDAQSettingsFromString(s, "MD1_RA1_I0_L0_BKG1_FFR:10:_RES1000" + \ + "__HS0_DA0_AD0_CM:VC:_ST:EpochTest6_DA_0:") + + AcquireData_NG(s, str) +End + +static Function TestNIAcquisitionReliability_REENTRY([str]) + string str + + CHECK_EQUAL_VAR(GetSetVariable(str, "SetVar_Sweep"), 1000) +End +#endif