04-26-2012 12:59 PM
Hola Comunidad,
Es mi primera pregunta en NI Developer Zone, es muy urgente para mi saber como hacer esto para continuar mi proyecto. Estoy elaborando una Aplicacion que contiene Waveformgraph y 200 canales de waveformplots, mi duda es como poder hacer un tracking de cada plot para detectar desniveles y puntos maximos y minimos en mi plot. He visto eventos que detectan un nearest point en el plot pero no funcionan muy bien que digamos, Tambien vi alguna opcion llamada cwGTrackDragCursor pero no encuentro esto en la version de Measurement Studio que tengo. Necesito este tracking de los 200 plots para poder calcular defectos en mi grafica. Gracias por la ayuda!
Armando.
05-02-2012 01:45 PM - edited 05-02-2012 01:47 PM
Hola Armando.
Una pregunta, lo que te interesa es detectar los puntos mínimos y máximos de los datos y mostrarlos en la gráfica, correcto?
Si solamente quieres hacer cálculos o tener el valor numérico de los valores te recomendaría trabajar sobre los datos de entrada y no sobre la gráfica. En caso de que lo que desees es mostrar esos puntos si tendrías que alterar la gráfica programáticamente. En caso de que lo que quieras sea lo segundo te dejo algunos ejemplos al respecto:
http://zone.ni.com/devzone/cda/epd/p/id/1175
Si me pudieras explicar mejor exactamente que es lo que requieres te puedo apoyar de una mejor manera.
Saludos.
05-02-2012 04:16 PM
Hola Aldo,
Muchas gracias por tu respuesta en verdad lo aprecio mucho. Basicamente lo que quiero es desplegar el tracking de los datos por cada plot, es decir tener por decirlo de algun modo, un cursor que siga mis 200 plots y que de el dato al que estoy apuntando. Es buena tu idea de pre-procesar los datos en vez de detectarlos en la grafica solo queria ver si los eventos que esta tool tiene en realidad funcionan. Adjunto unos screen shoots de lo que quiero lograr. En la figura se muestran los 200 canales que estoy graficando, en el text box de defectos es el punto de dato que me arroja esta condicion:
XYGraphHitTestInfo hitLoc = waveformGraph1.HitTest(e.X, e.Y);
if (hitLoc == XYGraphHitTestInfo.Plot)
{
// now that we know we're over a plot, get the plot we're over
XYPlot hoveredPlot = waveformGraph1.GetPlotAt(e.X, e.Y);
double xVal, yVal, hovX, hovY;
// get the point (in data coordinates) that the mouse cursor is over
hoveredPlot.InverseMapDataPoint(hoveredPlot.GetBounds(), new PointF(e.X, e.Y), out hovX, out hovY);
// check if that data coordinate point is close to a point on the plot we're over
TxtDefect.Text = hovY.ToString();
dentro del evento waveformGraph1_PlotAreaMouseMove
El Problema es que este evento no es muy dinamico que digamos y no arroja los puntos de dato a un buen rate por decirlo asi de muestra. En la grafica se esta viendo el canal 85 y el punto que arroja este metodo. Una vez mas te agradezco tu ayuda!
05-04-2012 10:06 AM
Hola armando, sí esta arrojando resultados extraños ese método.
Te dejo un par de ligas con métodos diferentes que podrías utilizar para lograr el mismo resultado.
http://digital.ni.com/public.nsf/allkb/98024D511124B8CF86256D210079FF01?OpenDocument+
http://zone.ni.com/devzone/cda/tut/p/id/10525
Saludos.