• Lunes 23 de Diciembre de 2024, 18:40

Autor Tema:  Graficas en VB 2005 sin usar evento PAINT  (Leído 3011 veces)

ricki33

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Graficas en VB 2005 sin usar evento PAINT
« en: Viernes 21 de Noviembre de 2008, 11:36 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Graficas en VB 2005 sin usar evento PAINT
« Respuesta #1 en: Domingo 23 de Noviembre de 2008, 00:20 »
0
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
  1.  
  2. Dim p = New Pen(Color.Red, 2) ' Creo una 'brocha' del color y ancho indicados
  3.  
  4. ' suele ser útil si vamos a emplear mucho gráfico importar la clase
  5. Imports System.Drawing.Graphics
  6.  
  7. ' cuando queremos utilizar un gráfico a nivel de formulario suele ser útil describir una variable para usar los gráficos
  8. Dim g As Graphics
  9.  
  10. ' para usarlo en un momento dado, por ejemplo en un picturebox
  11. g = PictureBox1.CreateGraphics  ' esto indica que g vamos a usarlo dentro del picturebox1
  12.  
  13. ' finalmente de ejemplo una línea:
  14. g.DrawLine(p, xo, yo, xf, yf)  ' el pen que indicamos, y las cordenadas todas juntitas...
  15.  
  16.  
  17.  

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.
«Ma non troppo»
----> ModoVacaciones = False<----

ricki33

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Graficas en VB 2005 sin usar evento PAINT
« Respuesta #2 en: Domingo 23 de Noviembre de 2008, 05:21 »
0
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: