|
|
Comments and Discussions
|
|
 |

|
If find this demo very nice but I am unable to run the src in VS 2008. The conversion passed successfully but unable to view the design form of all the demo parts.
I would appreciate you can help on how to use it on VS 2008. Thanks.
|
|
|
|

|
This topic is very much useful to me.
But I would like to know whether this library can be used to draw the ECG waveform in real-time? And also some more graphs along with that and display some fugures like heart beat rate etc. on the same screen.
Hoping to see the answer soon, as this is critical to my project.
I am doing one project, as part of this project PC receives 5 different signals on the RS-232 interface usinjg a proprietary protocol and the PC displays the data in the form of graphs on the screen in real-time.
I decided to use Visual C#.Net to do this project. Please let me know whether it is possible to do with the available libraries/classes in Visual C#.Net and is it easy to do this project.
Thanks & Regards,
Raghu D
|
|
|
|
|

|
This plotter works very well. I used the plotter to graph 750 two-digit random numbers as fast as possible, and it took about 7 seconds to do so. Is there anyway to speed up the plot rate so that the plotting frequency is around 1000 hz?
Thanks
GabeA
GabeA
|
|
|
|

|
hey first I would like to say thank you and well done for this project! i love what you did with the plotter, serves me very well! However, it seems that its not really complete as in the "SaveToFile" function. I'm wondering if have you updated it? If not, may I know how to save it and save it into which format? Thanks a lot!
|
|
|
|

|
I'm new to Visual Studio (I installed VS2008) and C# but got plotter working pretty quickly.
This is a very nice Component.
How would I turn off or reposition the centered, horizontal, line on the plotter graph?
Is this possible?
Thanks, BillC73
|
|
|
|

|
What is the license of your DLL ?
I'm no one
|
|
|
|

|
using the plotter to plot values from a file. If i move the window during plotting, then the update of the plotarea & form halts ?
Also during plotting it seems that updating of other gui controls ex a listbox doesnt seem to work very well.
Any inputs ? thanks.
|
|
|
|

|
hi.
i'm about to use plotter component in my project which use vb 2008.
i tried to convert the source code provided in the demo (which is in C#) to vb.net but still not working. does anyone have converted the source code into vb??
and then, i would like to export/save the graph shown in plotter component into image format.
is it possible to to that??
thanks for answering...
Ario...
|
|
|
|

|
Maybe zooming should be enabled in the next version?
|
|
|
|

|
First, nice control. Took me a bit to figure out exactly how your supposed to use it but once I got into the demo apps I figured it out.
I am having a problem with the next/previous channel buttons and the shift up/down buttons in the control.
In my application the lower half of the > < + - characters are cut off, it appears this way in both the designer
and when I run my application.
If I look at your demo application it appears the same way in the designer but when I run your demo app the buttons look correct.
For the life of me I can't figure out what's different. I'm thinking that must have something to do with screen resolution or scaling, any thoughts?
Thanks
Matt S
|
|
|
|

|
Thanks for such a good component but i can not add more than 4 channels.
Is there any way to do that then please let me know..
Regards
Himanshu
9968499516[India]
|
|
|
|

|
When looking at your demo project, I noticed it goes into infinite loop when you set the height of the graph container to 0.
Regards
Rémi
|
|
|
|

|
I was just wondering if setting the maximum value on the Y axis for the plotter was possible. I am using it like a line graph. If there is an easier way please let me know .
Very Cool dll btw!
|
|
|
|

|
try this:
below InitializeComponent() put this:
plotter1.Channels[0].MaximumValue=......;
plotter1.Channels[0].MinimumValue=......;
|
|
|
|

|
Hi,
First of all this library is great,one of the best i found on the internet.Can I access the points that cursor is showing in stop mode,by that I mean to get values that cursor shows on graph?
Best regards and keep up the good work......
|
|
|
|

|
Hi
Thanks for lovely little graph library, it's exactly what I've been looking for. I am capturing data from a model aircraft in real-time, and display the data using my own graphic controls, and this plotter adds a nice way to display the history of the values. Although I do save the data to a file, but it's a pain to import it to Excel everytime.
I noticed that if I disable some of the channels, it still cycles through the channels using the arrow controls. I would like it to skip the disabled channels. It would also be nice to assign a certain number of channels to the plotter, that way if I only have two traces, then I don't need to disable the others.
Something else I would like, is to have a second scale on the right, if I display two different ranges of values at one time. It would also be nice to have some kind of legend, or label for each channel trace.
|
|
|
|

|
I want to make my graphs excel compatible. I am making my excel sheets dynamic in nature and want to import values to my GUI application. Can someone guide me how can I do that using this graphs?
Mandip Shah
Mandip.shah@asu.edu
|
|
|
|

|
This system looks really cool...
What I was actually looking for is some sort of FREE plotting-system that can be kicked off from my own program, but then runs stand alone. That is, I want to avoid building my own GUI in which I integrate the chart controls. Ideally, I would like to just click a button that calls some sort of PlotLib::OpenPlotWindow command and then simply feed the data to the window.
I found a suitable open-source real-time plotter like that for Java (LiveGraph: http://www.live-graph.org), but so far nothing for .NET.
Any ideas?
|
|
|
|

|
The first thing I want to mention is that it is a very nice control!
I use your plotter control to monitor some variables of an embedded system. Due to the fact that Microsoft Windows is not a real-time O.S. and the communication bus between the Windows System and the embedded system is not deterministic, I calculate and update the plotrate every send-receive cycles. When I stop the plotter I noticed that the coordinates displayed when hovering over the graph are not calculated correctly. I checked your code and I think it has to do with the fact that your code (method: DrawXYText in Plotter.cs) assumes a fixed plotrate
The peace of code is a little bit hard to get. When I have more time I will try to fix it. Have you planned any updates?
Thanks!
|
|
|
|

|
Well I already found some time to take a look at the problem and I have a solution:
Update the following code in the function: DrawXYText
...........
...........
int modulo = actualX % plotRate;
actualX -= modulo;
int pointsOffset = actualX / plotRate;
float y = float.NaN;
string coordinate = "";
if (activeCh.Points.ContainsKey (pointsOffset))
{
PointF selectedPoint = (PointF) activeCh.Points[pointsOffset];
y = selectedPoint.Y;
}
int last_diff = -1;
int last_x = 0;
float last_y = 0;
int current_diff = 0;
// Find the closest match for the x value!
foreach (PointF value in activeCh.Points.Values)
{
current_diff = Math.Abs(actualX - (int)value.X);
if ((last_diff == -1) ||
(current_diff == Math.Min(current_diff, last_diff)))
{
last_diff = current_diff;
last_x = (int)value.X;
last_y = value.Y;
}
else
{
actualX = last_x;
y = last_y;
break;
}
}
...........
...........
Maybe it can be more efficient, but it works. The only little thing about this code is that if you point the cursor to a position outside the plotted range, it will show you the last point of the plotted range and not the y = '-' value.
|
|
|
|

|
Thank you for such a nice control.
I have a question about the bar chart. Is it possible to have "stacked bars"? For this I mean a single bar (imagine a vertical bar) that has had different values appended to it, and perhaps each appended value shows as a different color.
I've see this called "stacked bars" on other graph components.
Thanks again.
|
|
|
|

|
A very nice job .
I ran into a problem with the auto scrolling when plotting several simultaniously updatng Channels. - Channel[0] would plot to the right of the graph, triggering the autoScroll operation. The rest of the channels would plot one plotRate interval to the left.
I fixed this by replacing the comparison from the plotter's TotalElapsedTime to the Channel's TotalElapsedTime (inside the Plotter.Draw method)
that is:
if (! scrollAdjusted)
{
// if (TotalTimeElapsed > rightDisplayLimit)
if (channel.TotalTimeElapsed > rightDisplayLimit)
{
I must admit, I didn't follow the logic for changing plotRate's etc., so this might not be the correct fix for everyone.
The second problem is somewhat related to the first. You calculate the horizontal tick interval as an integer instead of a float, leading to an accumulating error in drawing the X axis grid lines. This also happens with the Y axis grid lines.
The fix is to change GraphDecorators\Gridline.cs as so:
if ((parentGraph.Gridlines & GridStyles.Horizontal) == GridStyles.Horizontal)
{ graphics.SetClip (parentGraph.GraphArea);
// int gridSize = parentGraph.GraphArea.Height / parentGraph.GraduationsY;
float gridSize = (float)parentGraph.GraphArea.Height / (float)parentGraph.GraduationsY;
// for (int i = 0; i < parentGraph.GraphArea.Height; i += gridSize)
for (float i = 0; i <= parentGraph.GraphArea.Height; i += gridSize)
{
graphics.DrawLine (graphAreaPen, parentGraph.GraphArea.Left, parentGraph.GraphArea.Top + i, parentGraph.GraphArea.Right, parentGraph.GraphArea.Top + i);
}
}
if ((parentGraph.Gridlines & GridStyles.Vertical) == GridStyles.Vertical)
{
// int gridSize = parentGraph.GraphArea.Width / parentGraph.GraduationsX;
float gridSize = (float)parentGraph.GraphArea.Width / (float)parentGraph.GraduationsX;
// for (int i = 0; i < parentGraph.GraphArea.Width; i += gridSize)
for (float i = 0; i <= parentGraph.GraphArea.Width; i += gridSize)
{
graphics.DrawLine (graphAreaPen, parentGraph.GraphArea.Left + i, parentGraph.GraphArea.Bottom, parentGraph.GraphArea.Left + i, parentGraph.GraphArea.Top);
}
}
The only downside I see is that the right hand edge grid line is now outside the clipping area, so it looks messy. To fix this, we need to do some more work...
I blame Bush...
|
|
|
|

|
Is this library for free use?
Best regards
Hansjörg
|
|
|
|

|
Can i set a logarithmic base 10 scale?
Tanks
|
|
|
|

|
hi anup
i´m using your plotter and it works really fine. but one question.
I am starting and stopping the plotter after every measurement that i do. how can i avoid the plotter to scroll to the left after evrey cycle? i want to see the last two measurement without scrolling manual.
thanks for your offerts
hubert81
|
|
|
|

|
Hi Anup,
I'm using your GraphComponents to plot the output from my micro-controller which outputs data in hex format.. using hyperterminal i get 0000 to 0fff as my output from the microcontroller.
I cast the output from the COM port as float and send it to the channel for display but it doesnt seem to work... I have implemented code to append output from the COM port to a logger.txt and it correctly shows its receiving output so i do not think the problem is with the serialport code.. can you pls enlighten me? thanks in advance.
gerardtay[at]yahoo[dot]com
My code is as of below:
private void plotterTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
byte[] buffer = null;
int offset = 0;
int count = 2;
//plotter1.Channels[0].CurrentValue = (float)(5 * r.NextDouble());
plotter1.Channels[0].CurrentValue = (float) (serialPort1.Read(buffer,offset,count));
if ( plotter1.Channels[0].Enabled)
{
plotter1.UpdateDisplay();
}
}
|
|
|
|

|
Try To use this:
define a int update var;
use this for collect data:
private void SerialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//insert a code to assign Serialport.ReadByte() to a var
this.invoke(new EventHandler(DisplayText));
}
to show the data:
private void DisplayText(object sender,EventArgs e)
{
plotter1.Channels[0].CurrentValue=(float) (your result data);
update++;
if (update==1)
{
plotter1.UpdateDisplay();
update=0;
}
|
|
|
|

|
Couldn't find the GC dll that you mention to add components. It wasn't in the zip file.
stjds
|
|
|
|

|
hi,
the dll is called GraphComponents.dll. It is contained as a project (GraphComponents) in the solution GraphComponents.sln. The other projects in this solution are all applications.
Regards
Anup
|
|
|
|

|
Hi, I'm using Visual Studio 2005 and i keep getting an error msg when i try to convert the solution.. any idea why? I wish to import tis library into a VB project.. is it possible?
Conversion Report - GraphComponents
Time of Conversion: Monday, January 22, 2007 22:53 PM
Solution: GraphComponents
Filename Status Errors Warnings
GraphComponents.sln Converted 0 0
Conversion Issues - GraphComponents.sln:
Solution converted successfully
1 file Converted: 1
Not converted 0 0 0
Project: BarGraphWalkThrough
Filename Status Errors Warnings
BarGraphWalkThrough\BarGraphWalkThrough.csproj Not Converted 2 0
Conversion Issues - BarGraphWalkThrough\BarGraphWalkThrough.csproj:
Project file is not writable: C:\Documents and Settings\u0307692\Desktop\GraphComponents_src\GraphComponents_src\BarGraphWalkThrough\BarGraphWalkThrough.csproj
Unable to save converted project file.
1 file Converted: 0
Not converted 1 2 0
Project: GraphComponents
Filename Status Errors Warnings
GraphComponents.csproj Not Converted 2 0
Conversion Issues - GraphComponents.csproj:
Project file is not writable: C:\Documents and Settings\u0307692\Desktop\GraphComponents_src\GraphComponents_src\GraphComponents.csproj
Unable to save converted project file.
1 file Converted: 0
Not converted 1 2 0
Project: GraphUsageDemo
Filename Status Errors Warnings
GraphUsageDemo\GraphUsageDemo.csproj Not Converted 2 0
Conversion Issues - GraphUsageDemo\GraphUsageDemo.csproj:
Project file is not writable: C:\Documents and Settings\u0307692\Desktop\GraphComponents_src\GraphComponents_src\GraphUsageDemo\GraphUsageDemo.csproj
Unable to save converted project file.
1 file Converted: 0
Not converted 1 2 0
Project: PlotterWalkThrough
Filename Status Errors Warnings
PlotterWalkThrough\PlotterWalkThrough.csproj Not Converted 2 0
Conversion Issues - PlotterWalkThrough\PlotterWalkThrough.csproj:
Project file is not writable: C:\Documents and Settings\u0307692\Desktop\GraphComponents_src\GraphComponents_src\PlotterWalkThrough\PlotterWalkThrough.csproj
Unable to save converted project file.
1 file Converted: 0
Not converted 1 2 0
Project: StackedBarGraphWalkThrough
Filename Status Errors Warnings
StackedBarGraphWalkThrough\StackedBarGraphWalkThrough.csproj Not Converted 2 0
Conversion Issues - StackedBarGraphWalkThrough\StackedBarGraphWalkThrough.csproj:
Project file is not writable: C:\Documents and Settings\u0307692\Desktop\GraphComponents_src\GraphComponents_src\StackedBarGraphWalkThrough\StackedBarGraphWalkThrough.csproj
Unable to save converted project file.
1 file Converted: 0
Not converted 1 2 0
Conversion Settings
Solution File: C:\Documents and Settings\u0307692\Desktop\GraphComponents_src\GraphComponents_src\GraphComponents.sln
|
|
|
|

|
I had the same issue. First, all the files were Read Only for some reason...so I fixed that and ran the conversion again. Things were better but I had many errors when I tried to compile.
As was stated before;
"You need to rebuild the whole project and remove the old reference and add the new rebuilt one from this directory "GraphComponents_src\GraphComponents_src\bin\Debug" "
After you perform the conversion, ignore any errors, look in the Solution Explorer at GraphUsageDemo and then at its References. The GraphComponents reference is broken. Remove that reference and replace it with a current reference to the dll in the bin\Debug folder.
Recompile....it's all good!
|
|
|
|

|
is the code for the graphic components DLL in the demo folder is available?
I am interested in the real time ploter to apply to application.
I want to include the ploter and isert other symbols and format to the ploter.
the real time ability of this implementation is great in GDI+!!
Did you consider WPF/Vista graphics engine for a real time graphic components?
elwolv
elwolv
|
|
|
|

|
Hi!!! I found great your plotter control! I'm traying to use it to display a signal acquisition.
But if I have signals that changes in less than 40 ms, all application doesn't respond to inputs.
I use the plotter in a new thread and in this thread I use a timer to generate ticks.
Do you have any suggestion?
Thank you in advance and sorry for my bad english
Alessio
|
|
|
|

|
Hi,
Thanks for the compliments
For the time being this could help (maybe)
What you can do to draw a line graph is for every timer elapsed, set the CurrentValue and not call the UpdateDisplay () function. After setting all the values, you can call update display once.
eg.
int update; // a member variable
private void plotterTimer_Elapsed (.......)
{
// keep assigning values each time the timer elapses
// The plotter stores all this internally
plotter.Channels[0].CurrentValue = x;
update ++;
// refresh the screen once every 50 times.
if (update == 50)
{
plotter.UpdateDisplay ();
update = 0;
}
}
With this you can get low times plotted (like 1 ms or less, but the actual refresh happens every 50 ms or so). This should be okay because if the control were to draw and scroll for every 1 ms, then we could not see anything but a blur on the screen.
Hope this helps you. If not, i am currently working on a fast oscilloscope. I will try to finish that once i get some free time.
Regards
Anup
|
|
|
|

|
Thanks a lot for your help.
I was thinking about implementing the plotter using asynchronous threading pattern, for example with background process. By this way maybe it's possible to have faster refresh without blocking main application form.
What do you think about this?
Thank again!
Alessio
|
|
|
|

|
Hi,
This is a very neat control! Thanks a lot.
One question, is it possible to create a line graph?
Kindest regards
Raymond Verbruggen
Netherlands
|
|
|
|

|
Hi,
Thanks for the compliments
For the time being this could help (maybe)
What you can do to draw a line graph is for every timer elapsed, set the CurrentValue and not call the UpdateDisplay () function. After setting all the values, you can call update display once.
eg.
int update; // a member variable
private void plotterTimer_Elapsed (.......)
{
// keep assigning values each time the timer elapses
// The plotter stores all this internally
plotter.Channels[0].CurrentValue = x;
update ++;
// refresh the screen once every 50 times.
if (update == 50)
{
plotter.UpdateDisplay ();
update = 0;
}
}
Hope this helps you. If not, i am currently working on a fast oscilloscope. I will try to finish that once i get some free time.
Regards
Anup
|
|
|
|

|
Has anybody converted this project to VS2005?
|
|
|
|

|
keep having error msgs... but i'm trying to use the dll from the demo zip...
|
|
|
|

|
You need to rebuild the whole project and remove the old reference and add the new rebuilt one from this directory "GraphComponents_src\GraphComponents_src\bin\Debug"
|
|
|
|

|
it works fine when i copy paste the dll frm the demo into the toolbar....
|
|
|
|
|

|
i'd seen this earlier when there was just the bars, but this plotter is something else!! fantastic. a 5er from me after seeing the plotter!
|
|
|
|

|
Hi,
Thank you very much! I get lots of josh (enthusiasm/begeisterung) seeing messages like this
Regards
Anup
|
|
|
|

|
GDI+ it is very powerful when it is known to use
|
|
|
|

|
Thank you. Yes it's very powerful indeed!
|
|
|
|

|
Can I use this in a web form?
Thanks,
John
|
|
|
|

|
Hi,
The idea behind this is that you get very fast updates (in miliseconds). So, it is meant to be used on a Windows forms application. But, if you want static images to be displayed, then with a little tweaking, it should be possible in a web form too.
Maybe in the future, with Atlas - Ajax and stuff, i will incorporate fast refreshing on a webform too!!
|
|
|
|

|
There is a nice free charting control available for asp.net called webchart available at http://www.carlosag.net/Tools/WebChart/Default.aspx; have you looked at this control? and how does it compare in functionality and ease of runtime to the one you have? If yours is actually easier to configure that this one, I would be interested in assisting you in porting this to the asp.net enviornment, might give me an excuse to actually learn ajax.
|
|
|
|
 |
|
|
General News Suggestion Question Bug Answer Joke Rant Admin
|
High speed graphs and charts that are also very easy to configure and use. As easy as inserting a simple chart in MS Excel!
| Type | Article |
| Licence | |
| First Posted | 12 Nov 2006 |
| Views | 123,448 |
| Bookmarked | 224 times |
|
|