none
Encontrar errores de este programa que hice RRS feed

  • Pregunta

  • Hola:

    Estoy con WPF de VB 2015. Este es la interfaz.

    La parte de programación es esta:

    Imports System.IO.Ports ' No olvidar.
    Imports System.Text ' No olvidar.
    
    Class MainWindow
        ' Utilizaremos un string como buffer de recepción.
        Dim Recibidos As String
        ' Creamos un objeto sdel puerto serie.
        Dim serialPort1 As New SerialPort()
    
        Private Sub Form_Principal_Loaded(sender As Object, e As RoutedEventArgs) Handles Form_Principal.Loaded
            ' Configuramos el puerto serie.
            serialPort1.BaudRate = 115200 ' Baudios, tiene que ser el mismo que Arduino UNO.
            serialPort1.PortName = "COM4" ' Elegimos el COM4 igual que Arduino en mi caso.
            serialPort1.Parity = Parity.None ' Nada de paridad.
            serialPort1.DataBits = 8 ' 8 bits.
            serialPort1.StopBits = StopBits.Two ' Funciona mejor con 2 bits de Stop.
    
            ' Abrir puerto mientras se ejecute la aplicación.
            If Not serialPort1.IsOpen Then
                Try
                    serialPort1.Open()
                Catch ex As System.Exception
                    MessageBox.Show(ex.ToString())
    
                End Try
            End If
            ' Ejecutar la función Recepción por disparo del evento ¡DataReived!
            serialPort1.DataReceived += Recepcion
        End Sub
    
        Private Sub Recepcion(sender As Object, e As SerialDataReceivedEventArgs)
            ' Acumular los caracteres recibidos a nuestro "buffer" (string).
            Recibidos += serialPort1.ReadExisting()
    
            ' Invocar o llamar al proceso de tramas.
            Me.Dispatcher.Invoke(AddressOf Actualizar)
        End Sub
    
        ' Procesar los datos recibidos en el buffer y extraer tramas completas.
        Private Sub Actualizar()
            Dim doc = New FlowDocument()
            doc.Blocks.Add(New Paragraph(New Run(Recibidos)))
    
            Select Case Recibidos
                Case "ON"
                    image.Source = (New BitmapImage(New Uri("Led rojo encendido.png", UriKind.Relative)))
                    label_Leyendo.Content = "Encendido."
                    Rectangulo.Fill = New SolidColorBrush(Colors.Green)
                    Recibidos = "" ' Limpiar.
                    Exit Select
    
                Case "OFF"
                    image.Source = (New BitmapImage(New Uri("Led rojo apagado.png", UriKind.Relative)))
                    label_Leyendo.Content = "Apagado."
                    Rectangulo.Fill = New SolidColorBrush(Colors.Red)
                    Recibidos = "" ' Limpiar.
                    Exit Select
            End Select
        End Sub
    End Class

    El error me da aquí, en esta línea de código.

            ' Ejecutar la función Recepción por disparo del evento ¡DataReived!
            serialPort1.DataReceived += Recepcion

    Gravedad    Código    Descripción    Proyecto    Archivo    Línea
    Error    BC32022    'Public Event DataReceived As SerialDataReceivedEventHandler' es un evento y no se puede llamar directamente. Use una instrucción 'RaiseEvent' para generar un evento.    Entrada_Arduino_WPF_1_VB    C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Entrada_Arduino_WPF_1_VB\Entrada_Arduino_WPF_1_VB\MainWindow.xaml.vb    28

    Gravedad    Código    Descripción    Proyecto    Archivo    Línea
    Error    BC30455    No se especificó un argumento para el parámetro 'e' de 'Private Sub Recepcion(sender As Object, e As SerialDataReceivedEventArgs)'.    Entrada_Arduino_WPF_1_VB    C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Entrada_Arduino_WPF_1_VB\Entrada_Arduino_WPF_1_VB\MainWindow.xaml.vb    28

    El programa completo se trada de recibir tramas de bytes por el puerto serie.

    ¿Alguna solución al problema?

    Saludos.

    PD: Uso Visual Studio Community 2015.


    http://electronica-pic.blogspot.com



    • Editado Metaconta martes, 2 de febrero de 2016 21:33
    martes, 2 de febrero de 2016 18:19

Respuestas

  • Es código de VB, pero has intentado conectar un evento usando la sintaxis de C#.

    En VB no se puede hacer serialPort1.DataReceived += Recepcion. En su lugar se conecta el evento con AddHandler:

    AddHandler serialPort1.DataReceived, AddressOf Recepcion

    • Marcado como respuesta Metaconta miércoles, 3 de febrero de 2016 12:38
    miércoles, 3 de febrero de 2016 6:33

Todas las respuestas

  • Es código de VB, pero has intentado conectar un evento usando la sintaxis de C#.

    En VB no se puede hacer serialPort1.DataReceived += Recepcion. En su lugar se conecta el evento con AddHandler:

    AddHandler serialPort1.DataReceived, AddressOf Recepcion

    • Marcado como respuesta Metaconta miércoles, 3 de febrero de 2016 12:38
    miércoles, 3 de febrero de 2016 6:33
  • Hola Metaconta:

    Me parece buen consejo de Alberto empecemos buscándole por ese motivo.

    miércoles, 3 de febrero de 2016 22:09