Estoy con WPF de VB 2015. Este es la interfaz.
La parte de programación es esta:
Código
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 ' Desde que cierres el programa, cierra el puerto. Private Sub Form_Principal_Closing(sender As Object, e As ComponentModel.CancelEventArgs) Handles Form_Principal.Closing If serialPort1.IsOpen Then ' ¿El puerto está abierto? serialPort1.Close() ' Cerrar puerto. End If End Sub End Class
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.