T7 stream parceling in LabView vs U6 | LabJack
 

T7 stream parceling in LabView vs U6

3 posts / 0 new
Last post
Gyuji
Gyuji's picture
T7 stream parceling in LabView vs U6

I'm writing a software oscilloscope in LabView using  T7.  I have done this previously for a U6 with good results so I'm trying to modify my old program to use the T7 LJM library.  With the U6 i was able to use a high sample rate and programmatically change the "Scans to Read" value on 'easy stream read.vi' in order to change the size of each parcel of data points that came out and therefore the effective time base of the scope.  I'm trying to duplicate this with the T7 by setting the same high sample rate and adjusting the "ScansPerRead" value on LJM_eStreamRead2D.vi rather than having it passed from LJM_eStreamStart.vi.  Doing so causes LabView to crash, sometimes right away, sometimes after a random amount of time, sometimes upon stopping the vi.  Should this method work or is there a better way to parcel out the data coming from LJM_eStreamRead2D.vi?

LabJack Support
labjack support's picture
The method you describe will

The method you describe will not work, because LJM always returns ScansPerRead (the number passed to eStreamStart) scans in each eStreamRead call.

Instead you need to alter, in your software, the number of scans that you processes per call to eStreamRead. You can do either or both of the following:

  • Allow the parcel size to be equal or less than ScansPerRead: This may increase latency at a large-enough ScansPerRead, but is much simpler for you.
  • Allow the parcel size to be equal or greater than ScansPerRead: This requires you to buffer data together from multiple eStreamRead calls.

The eStreamStart page may contain some useful information for you, if you have not already seen it. The sections "How samples are moved from the device to your application", "Low-Latency", and "Stream Speed" may be particularly useful.

Gyuji
Gyuji's picture
Thanks for the reply.  I

Thanks for the reply.  I think I basically did that second option while messing around with it after I posted.  I made scansperread a fixed small number and fed the resulting output of eStramRead into a modified version of LJStreamUDGraphProcessing.vi which takes my waveform graph x scale in as Graph History.  It appears to be working although I may replaced the modified vi with one of my own creating since I'm not entirely sure what is going on in there.