@@ -183,7 +183,8 @@ Version->*d
183183global PVT_Time
184184global UserCmd
185185
186- global CalculatedBase // Calculated temporary variable for Current base address
186+ global CalculatedBaseInt // Calculated temporary variable for Current base address
187+ global CalculatedBaseDouble // Calculated temporary variable for Current base address
187188
188189// *****************************************************************************************
189190// Set the version number
@@ -222,6 +223,12 @@ CurrentBufferAdr = BufferAdr_A // Set CurrentBuffer values to buffer A
222223CurrentBufferFill = BufferFill_A
223224CurrentBuffer = 0
224225
226+ // Convert absolute address to the index of integer data in the user shared memory buffer (USHM)
227+ CalculatedBaseInt = CurrentBufferAdr/ _SIZEOF_INTEGER_;
228+ // Convert absolute address to the index of double data in the user shared memory buffer (USHM)
229+ CalculatedBaseDouble = CurrentBufferAdr/ _SIZEOF_DOUBLE_;
230+
231+
225232PrevBufferFill = BufferLength // Set PrevBufferFill to pass outer while loop condition
226233
227234GoSub101 // Check which axes are required
@@ -262,6 +269,9 @@ While(AbortTrigger == 0 && Error == 0 && CurrentBufferFill > 0 && PrevBufferFill
262269 CurrentBufferFill = BufferFill_A
263270 BufferFill_B = 0
264271 }
272+ CalculatedBaseInt = CurrentBufferAdr/ _SIZEOF_INTEGER_;
273+ CalculatedBaseDouble = CurrentBufferAdr/ _SIZEOF_DOUBLE_;
274+
265275 // Move to final point of buffer if next buffer has points
266276 If(AbortTrigger == 0 && CurrentBufferFill > 0) // Do move with previous buffer N-1 and N and current buffer 1
267277 {
@@ -382,14 +392,12 @@ Return
382392// *************************************************************************************************
383393
384394N103:
385- // Convert absolute address to the index of integer data in the user shared memory buffer (USHM)
386- CalculatedBase = CurrentBufferAdr/ _SIZEOF_INTEGER_;
387395 // Integer type buffers
388- Time_Idx = CalculatedBase + CurrentIndex
396+ Time_Idx = CalculatedBaseInt + CurrentIndex
389397 User_Idx = Time_Idx + BuffLen
390398 // Double type buffers
391399 // Convert index of integer data to double data in USHM
392- A_Idx = (User_Idx + BuffLen) * _SIZEOF_INTEGER_ / _SIZEOF_DOUBLE_
400+ A_Idx = CalculatedBaseDouble + BuffLen + CurrentIndex
393401 B_Idx = A_Idx + BuffLen
394402 C_Idx = B_Idx + BuffLen
395403 U_Idx = C_Idx + BuffLen
0 commit comments