CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Graficas en VB 2005 sin usar evento PAINT
(1/1)
ricki33:
Hola a todos!
Antes que nada debo decir que mis conocimientos de programación no son muy buenos que digamos.
Estoy haciendo un programa en VB2005 que se encargara de recibir datos enviados por un modulo bluetooth (Señales analógicas--ADC 10 bits-- microcontrolador--modulo bluettoth).
Lo que el programa en VB debe hacer es graficar los datos obtenidos (son 5 señales analógicas) y guardar los datos en un archivo .csv o txt.
Empecé el programa usando VB6.0 y pude obtener los datos y hacer la gráfica (un solo canal)
En VB6 solo usaba la instruccion
Picture1.Line (X1, Y1)-(X2,Y2), vbYellow
Así podia graficar cada que se recibía un dato.
Ahora en VB2005 no sé como hacerlo :ouch:
El objetivo es graficar las 5 señales simultáneamente pero por ahora lo único que conseguido es graficar en forma de puntos usando la siguiente instrucción:
a.PlotPoint(X, Y)
Pero esa me gráfica punto a punto y quiero los puntos unidos por lineas.
Creo que la solución es usar drawline pero no me acepta esa instrucción. AL parecer se deben definir varios parámetros (pen, etc) y no se como hacerlo.
He buscado en mucho lugares y encontré código para graficar lineas pero solo funciona en el evento PAINT y no acabo de comprenderlo del todo.
LA pregunta es:
¿Cómo puedo graficar los valores recibidos cada que se active un evento TIMER?
Abajo el código que estoy usando para graficar en forma de puntos:
'Tareas cada que se cumple el tiempo para TIMER1
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
txtData.Text = String.Empty
SerialPort1.Write(txtSend.Text & vbCrLf)
txtData.Text = SerialPort1.ReadExisting
Y = Val(txtData.Text)
'Subrutina para graficar
a.SetupFrame()
a.PlotPoint(X, Y)
X = X + 1
If X >= 900 Then
X = 0
End If
End Sub
Quizá la solución sea muy fácil pero no le he encontrado y cada vez estoy mas confundido.
Si alguien tiene un código para hacer algo parecido a lo que quiero les agradecería me lo facilitaran. (Todo lo que he hecho ha sido modificando códigos, por lo que mis conocimientos son muy rudimentarios ) :(
Igual si conocen de un manual de (aprendiendo con ejemplos) digamne donde encontralo, por favor! :lol:
Nebire:
Es cierto, a todo lem undo se le hace extraño...
Te respondo brevemente:
Si en vb6.0 querías hacer una línea dentro de un picture hacía como indicas picture1.line(xo,yo)-(xf,yf),color . Al hacer esto fíjate que el grueso de línea y algunas otras opciones gráficas quedaban definidas por el contenedor donde se dibujaba es decir picture1.DrawWidth implicaba el ancho de los métodos gráficos referidos al picture1.
Ahora en VB2005-2008... se ha querido separar e independizar, te pongo un ejemplo que será más significativo y te comento dentro del mismo:
--- Código: Visual Basic --- Dim p = New Pen(Color.Red, 2) ' Creo una 'brocha' del color y ancho indicados ' suele ser útil si vamos a emplear mucho gráfico importar la claseImports System.Drawing.Graphics ' cuando queremos utilizar un gráfico a nivel de formulario suele ser útil describir una variable para usar los gráficosDim g As Graphics ' para usarlo en un momento dado, por ejemplo en un pictureboxg = PictureBox1.CreateGraphics ' esto indica que g vamos a usarlo dentro del picturebox1 ' finalmente de ejemplo una línea:g.DrawLine(p, xo, yo, xf, yf) ' el pen que indicamos, y las cordenadas todas juntitas...
Supongo que ya te atreverás a graficar sin problemas...
El código lo puedes ejecutar desde un botón o si prefieres desde un timer (como indicas), eso ya al gusto de cada uno.
ricki33:
Hola Nebire! :hola:
Muchísimas gracias!
Ahora lo acabo de probar y funciona perfecto! :comp:
Aún me quedan algunas dudas de como funciona pero lo importante es que funciona! Ahora es cosa de seguirle e ir aprendiendo más sobre la marcha.
Gracias! :beer:
Navegación
Ir a la versión completa