Skip to content

Commit a0f016e

Browse files
authored
Merge pull request #2034 from AllenInstitute/bugfix/2034-workaround_for_fifo2wave_igor_bug
bugfix: FIFO2WAVE does not work with single point ranges
2 parents 5bb3ee1 + 380c9b8 commit a0f016e

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

Packages/MIES/MIES_DataAcquisition_Multi.ipf

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Function DQM_FIFOMonitor(s)
1616
STRUCT BackgroundStruct &s
1717

1818
variable deviceID, isFinished, hardwareType
19-
variable i, j, err, fifoLatest, result, channel, lastTP, gotTPChannels
19+
variable i, j, err, fifoLatest, result, channel, lastTP, gotTPChannels, newSamplesCount
2020
variable bufferSize
2121
string device, fifoChannelName, fifoName, errMsg
2222
WAVE ActiveDeviceList = GetDQMActiveDeviceList()
@@ -44,7 +44,9 @@ Function DQM_FIFOMonitor(s)
4444
fifoName = GetNIFIFOName(deviceID)
4545
FIFOStatus/Q $fifoName
4646
ASSERT(V_Flag != 0,"FIFO does not exist!")
47-
if(fifoPosGlobal == V_FIFOChunks)
47+
newSamplesCount = V_FIFOChunks - fifoPosGlobal
48+
if(newSamplesCount < 2)
49+
// workaround for Igor Pro bug 5092
4850
continue // no new data -> next device
4951
endif
5052

@@ -55,11 +57,11 @@ Function DQM_FIFOMonitor(s)
5557
fifoChannelName = StringByKey("NAME" + num2str(j), S_Info)
5658
channel = str2num(fifoChannelName)
5759
WAVE NIChannel = NIDataWave[channel]
60+
FIFO2WAVE/R=[fifoPosGlobal, fifoPosGlobal + newSamplesCount - 1] $fifoName, $fifoChannelName, wNIReadOut; AbortOnRTE
61+
5862
bufferSize = DimSize(NIChannel, ROWS)
5963
fifoLatest = min(V_FIFOChunks, bufferSize)
6064
isFinished = (fifoLatest == bufferSize) ? 1 : isFinished
61-
62-
FIFO2WAVE/R=[fifoPosGlobal, fifoLatest - 1] $fifoName, $fifoChannelName, wNIReadOut; AbortOnRTE
6365
multithread NIChannel[fifoPosGlobal, fifoLatest - 1] = wNIReadOut[p - fifoPosGlobal]
6466
SetScale/P x, 0, DimDelta(wNIReadOut, ROWS) * ONE_TO_MILLI, "ms", NIChannel
6567

Packages/tests/HardwareBasic/UTF_BasicHardwareTests.ipf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2362,3 +2362,22 @@ End
23622362
static Function CheckIfNoTTLonTP_REENTRY([string str])
23632363
PASS()
23642364
End
2365+
2366+
#ifdef TESTS_WITH_NI_HARDWARE
2367+
// UTF_TD_GENERATOR DeviceNameGeneratorMD1
2368+
static Function TestNIAcquisitionReliability([str])
2369+
string str
2370+
2371+
STRUCT DAQSettings s
2372+
InitDAQSettingsFromString(s, "MD1_RA1_I0_L0_BKG1_FFR:10:_RES1000" + \
2373+
"__HS0_DA0_AD0_CM:VC:_ST:EpochTest6_DA_0:")
2374+
2375+
AcquireData_NG(s, str)
2376+
End
2377+
2378+
static Function TestNIAcquisitionReliability_REENTRY([str])
2379+
string str
2380+
2381+
CHECK_EQUAL_VAR(GetSetVariable(str, "SetVar_Sweep"), 1000)
2382+
End
2383+
#endif

0 commit comments

Comments
 (0)