@@ -16,7 +16,7 @@ Function DQM_FIFOMonitor(s)
16
16
STRUCT BackgroundStruct & s
17
17
18
18
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
20
20
variable bufferSize
21
21
string device, fifoChannelName, fifoName, errMsg
22
22
WAVE ActiveDeviceList = GetDQMActiveDeviceList ()
@@ -44,7 +44,9 @@ Function DQM_FIFOMonitor(s)
44
44
fifoName = GetNIFIFOName ( deviceID)
45
45
FIFOStatus / Q $ fifoName
46
46
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
48
50
continue // no new data -> next device
49
51
endif
50
52
@@ -55,11 +57,11 @@ Function DQM_FIFOMonitor(s)
55
57
fifoChannelName = StringByKey ( "NAME" + num2str ( j) , S_Info)
56
58
channel = str2num ( fifoChannelName)
57
59
WAVE NIChannel = NIDataWave[ channel]
60
+ FIFO2WAVE / R= [ fifoPosGlobal, fifoPosGlobal + newSamplesCount - 1 ] $ fifoName, $ fifoChannelName, wNIReadOut; AbortOnRTE
61
+
58
62
bufferSize = DimSize ( NIChannel, ROWS)
59
63
fifoLatest = min ( V_FIFOChunks, bufferSize)
60
64
isFinished = ( fifoLatest == bufferSize) ? 1 : isFinished
61
-
62
- FIFO2WAVE / R= [ fifoPosGlobal, fifoLatest - 1 ] $ fifoName, $ fifoChannelName, wNIReadOut; AbortOnRTE
63
65
multithread NIChannel[ fifoPosGlobal, fifoLatest - 1 ] = wNIReadOut[ p - fifoPosGlobal]
64
66
SetScale / P x, 0, DimDelta ( wNIReadOut, ROWS) * ONE_TO_MILLI, "ms" , NIChannel
65
67
0 commit comments