View previous topic :: View next topic |
Author |
Message |
rooney
Joined: 27 Dec 2007 Posts: 3
|
Posted: Thu Dec 27, 2007 1:11 pm Post subject: How to plot Y array with constant X increment |
|
|
I want to use DPLOT Jr to plot the values of an analog-to-digital converter (ADC).
The plot should display three curves as the the converter provides three analog channels.
The Y axis relate to the sample values of the converter. The x axis relates to the samples numbers (1, 2, 3, 4...).
A LabWindows program controls the ADC and reads blocks of 10000 samples. This blocks will be "send" to DPLOT as soon as they been read from the ADC.
For example: samples to read = 50000, block size = 10000, channels = 3
The LabWindows program reads the first block of 10000 samples of channel 1. Sends the data to DPLOT and read the next block of channel 1. The will be repeat 5 times for channel 1. Dlot should append the data always to the same curve as any data belongs to channel 1. X axis will be numberd from 1 to 50000.
Afterwards channel 2 will be read and send to DPLOT (in blocks of 10000 samples). Channel 2 should be the second curve in the same plot.
Afterwards channel 3 will be plotted the same way as channel 1 and 2.
To reduce memory requirements I don't want to create a x array holding values 1,2,3,4...
Is it possible to send Y data to DPLOT and the x axis increments automatically?
How to add data to a specific curve?+
Thanks for your help!!!! |
|
Back to top |
|
|
DPlotAdmin Site Admin
Joined: 24 Jun 2003 Posts: 2310 Location: Vicksburg, Mississippi
|
Posted: Thu Dec 27, 2007 2:59 pm Post subject: |
|
|
From your description I think the easiest thing to do will be to call DPlot_AddData (or DPlot_AddData8), as in:
int DocNum=DPlot_Command(0,"[FileNew()]");
DPlot_AddData8(DocNum, DATA_XYXY, 10000, 1, &x[0], &y[0]);
DPlot_AddData8(DocNum, DATA_XYXY, 10000, 1, &x[10000], &y[10000]);
DPlot_AddData8(DocNum, DATA_XYXY, 10000, 1, &x[20000], &y[20000]);
DPlot_AddData8(DocNum, DATA_XYXY, 10000, 1, &x[30000], &y[30000]);
DPlot_AddData8(DocNum, DATA_XYXY, 10000, 1, &x[40000], &y[40000]);
.
.
DPlot_AddData8(DocNum, DATA_XYXY, 10000, 2, &x[0], &y[0]);
etc.
Quote: | To reduce memory requirements I don't want to create a x array holding values 1,2,3,4... |
Unfortunately there is no way to do this now. This will require a change to DPLOTLIB.DLL and/or to the executables. What would be nice is if the X pointer is NULL, then X values are automatically created. The only messy part about this is figuring out what should be done on subsequent calls - previous calls might have included X, for example. Perhaps the best solution is to just not worry about what has been done previously and if X is missing then assign the index of the point to X. I'll make a serious effort at adding this change to the next release (most likely available Jan 1). _________________ Visualize Your Data
support@dplot.com |
|
Back to top |
|
|
rooney
Joined: 27 Dec 2007 Posts: 3
|
Posted: Thu Dec 27, 2007 5:10 pm Post subject: |
|
|
Thanks a lot!!!!!
If this feature would be included in the next release it would simplify some applications.
At the moment I may keep memory requirements low by reducing the block size. |
|
Back to top |
|
|
DPlotAdmin Site Admin
Joined: 24 Jun 2003 Posts: 2310 Location: Vicksburg, Mississippi
|
Posted: Tue Jan 01, 2008 4:12 pm Post subject: |
|
|
'Tis done. Thanks for your input. _________________ Visualize Your Data
support@dplot.com |
|
Back to top |
|
|
rooney
Joined: 27 Dec 2007 Posts: 3
|
Posted: Wed Jan 02, 2008 2:12 pm Post subject: It does not work |
|
|
I've tested the new dll/lib and the new version of DPlot JR but some strange things are going on.
if I set x=NULL and execute the following function in my application
DPlot_AddData(DocNum, DATA_XYXY, samplesToRead, 1, &x[0], &y[0]);
the plot looks like this:
http://www.poms-engineering.at/share/new_dll_x=NULL.png
if I use x as array and fill the array
for(index = 1; index <= samplesToRead; index++)
{
x[index - 1] = (float)sensData.currentSample - sensData.firstReqSamp + index;
}
and execute DPlot_AddData(DocNum, DATA_XYXY, samplesToRead, 1, &x[0], &y[0]);
the plot looks like this:
http://www.poms-engineering.at/share/new_dll_x=array.png
With the older version the result looks like the plot with the new version when x=NULL
What's wrong? |
|
Back to top |
|
|
DPlotAdmin Site Admin
Joined: 24 Jun 2003 Posts: 2310 Location: Vicksburg, Mississippi
|
Posted: Wed Jan 02, 2008 2:26 pm Post subject: |
|
|
Instead of:
DPlot_AddData(DocNum, DATA_XYXY, samplesToRead, 1, &x[0], &y[0]);
use
DPlot_AddData(DocNum, DATA_XYXY, samplesToRead, 1, NULL, &y[0]); _________________ Visualize Your Data
support@dplot.com |
|
Back to top |
|
|
DPlotAdmin Site Admin
Joined: 24 Jun 2003 Posts: 2310 Location: Vicksburg, Mississippi
|
Posted: Fri Jan 04, 2008 12:16 pm Post subject: |
|
|
I'm sorry, I should have paid more attention here. It was just dumb luck that version 2.1.5 worked for me initially. I've uploaded 2.1.5.1 just now (DPlot and DPlot Jr) and these will work as expected.
If you're a licensed user you can get version 2.1.5.1 with the Check for Updates command on the Help menu or by using the link in the last update message. _________________ Visualize Your Data
support@dplot.com |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|