Data AcQuisition And Real-Time AnalysisScope - Spectrum - Spectrogram - Signal Generator
Software for Windows
Science with your Sound Card!
Contact us about
Macro Array Rotation (Scrolling)
Buf0="<>" rotates Buf0 right by one element. (The second caret > indicates the direction of rotation.) The value at index 0 is moved to index 1, while the value at index 1 moves to index 2 and so on. Finally, the value at index 1023 is moved to index 0.
Buf0="<<" rotates Buf0 left by one element, with the value at index 1023 moving to 1022, etc, until the value at index 0 is moved to 1023.
Buf0="<>(UX)" rotates Buf0 by UX positions, where positive UX rotates right (up) and negative rotates down.
Buf0="<>B1" and Buf0="<<B1" operate similarly to Buf0="<>" and Buf0="<<", except here Buf0 and Buf1 are treated like a single large buffer of 2048 values. (For example, when rotating right, the last value in Buf1 replaces the first value in Buf0.) You can rotate any subset of buffers this way, up to and including Buf0="<>B7" and Buf0="<<B7" to rotate all 8 buffers (8192 values) as a unit. A macro error will result if you try to run a scroll command with the second buffer number smaller than the first, like Buf1="<>B0".
Alternatively, in this and any buffer command that uses a source (right side) buffer number, you may use an expression to specify the source by enclosing it in parentheses, as in Buf0="<>B(X+Y)".
The main use for these operations is to create scrolling history displays. Typically, you would use one of the Array Display options to tell Daqarta to plot the contents of (say) Buf0 on every trace update. You'd use Macro Multitasking by installing a Task that uses a Timer macro in a WHILE loop to wait for some desired scroll interval, such as once per second. Then it would use Buf0="<>" to rotate the buffer up one position, and insert a new value at Buf0 (overwriting the oldest value from index 1023 that was just rotated there).
If you use Buf0="<>B7" to rotate all eight buffers up, you still update Buf0 at each scroll interval, but you'd typically have used the display zero command to preset the buffers to be displayed at different vertical positions on the screen. A given event would move left to right across the Buf0 display line, then wrap to the Buf1 line and continue through 8192 intervals.
The actual values you display are up to you. You can, for example, use the Freq macro to read the current Frequency Counter value in Hz, RPM, msec, or a count total. (The Frequency Counter must be active to get valid values.) Similarly, Volts returns the current Voltmeter reading and SPL returns the current Sound Level Meter reading. You can use DeltY in Sigma cursor mode to get the RMS voltage between the two cursors on the selected trace, in either waveform or Spectrum mode, or use wSig, sSig, BwSig, or BsSig math functions to get similar values from arbitrary regions of any trace.
Questions? Comments? Contact us!We respond to ALL inquiries, typically within 24 hrs.
Over 35 Years of Innovative Instrumentation
© Copyright 2007 - 2021 by Interstellar Research
All rights reserved