[VB .NET] Corregir este error

Iniciado por Meta, Marzo 25, 2017, 02:55:49 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Marzo 25, 2017, 02:55:49 PM Ultima modificación: Marzo 25, 2017, 03:28:39 PM por HATI
Hola:

Hice un programa en VB .net 2017. Me da este error con el Me y no se como solucionarlo.

¿Alguna idea?

El código es:
Código: php
Imports System
Imports System.Text
Imports System.IO.Ports
Imports System.IO
Imports System.Diagnostics
Imports System.Threading

Namespace Recibir_archivo_desde_Arduino_consola_06
    Class Program

        Shared cantidadBytes As Integer
        Shared sb As New StringBuilder()

        Shared Sub Main(args As String())
            Dim COM As String = ""
            ' Título de la ventana.
            Console.Title = "Recoger foto desde Arduino y crearlo en el disco duro"
            ' Tamaño ventana consola.
            Console.WindowWidth = 55 ' X. Ancho.
            Console.WindowHeight = 18 ' Y. Alto.

            ' Crear un nuevo objeto SerialPort con la configuración predeterminada.
            Dim Puerto_serie As New SerialPort()
            ' Configuración.
            Console.Write("
Introduzca un número para seleccionar puerto COM.
Por ejemplo el 4, sería COM4.

Puerto: ")
            COM = Console.ReadLine() ' Escribir el número del puerto.
            Console.Clear()
            Puerto_serie.PortName = "COM" & COM ' Número del puerto serie.

            Puerto_serie.BaudRate = 115200 ' Baudios. 115200.
            Puerto_serie.Parity = Parity.None ' Paridad.
            Puerto_serie.DataBits = 8 ' Bits de datos.
            Puerto_serie.StopBits = StopBits.One ' Bits de parada.
            Puerto_serie.Handshake = Handshake.None ' Control de flujo.
            ' Establecer la lectura / escritura de los tiempos de espera.
            Puerto_serie.ReadTimeout = -1 ' 500.
            Puerto_serie.WriteTimeout = -1 ' 500.

            Puerto_serie.Open() ' Abrir el puerto serie.

            'Puerto_serie.DataReceived += New SerialDataReceivedEventHandler(DataReceivedHandler)
            AddHandler Puerto_serie.DataReceived, AddressOf Me.Puerto_serie_DataReceived
            Console.WriteLine("Esperando datos desde Arduino... " & vbLf & "")
            Console.ReadKey()
            Puerto_serie.Close() ' Cerrar puerto.

        End Sub

        Private Shared Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)
            'Private Sub Puerto_serie_DataReceived(ByVal sender As Object, ByVal e As DataReceivedHandler) Handles Puerto_serie.DataReceived

            Dim sp As SerialPort = DirectCast(sender, SerialPort)
            Dim indata As String = sp.ReadExisting()
            Dim data As String() = indata.Split({"A"c})
            cantidadBytes = Integer.Parse(data(0))

            Select Case data(1).ToString()

                Case "1"
                    Console.WriteLine("Tamaño: " & cantidadBytes & " Bytes.")
                    Console.WriteLine("Foto: " & data(1) & ". Tipo de archivo: JPG")

                Case "2"
                    Console.WriteLine("Tamaño: " & cantidadBytes & " Bytes.")
                    Console.WriteLine("Foto: " & data(1) & ". Tipo de archivo: PNG.")

                Case Else
                    Console.WriteLine("Cosas raras en 'data': " & data.ToString())

            End Select

            Dim contador As Integer = 0 ' Por si hal algún error.
            Dim datosArray(0 To cantidadBytes - 1) As Byte

            Select Case indata
                Case "17729A1"
                    Thread.Sleep(100)
                    Dim miBuffer = Encoding.ASCII.GetBytes("OK1") ' Codificación ASCII.
                    sp.Write(miBuffer, 0, miBuffer.Length) ' Envía OK1 al puerto serie.

                Case "2065A2"
                    Thread.Sleep(100)
                    Dim miBuffer2 = Encoding.ASCII.GetBytes("OK2") ' Codificación ASCII.
                    sp.Write(miBuffer2, 0, miBuffer2.Length) ' Envía OK2 al puerto serie.

                Case Else
                    Console.WriteLine("Cosas raras en 'indata': " & indata.ToString())

            End Select

            While True

                contador += sp.Read(datosArray, contador, datosArray.Length - contador) ' Por si hal algún error.
                Console.SetCursorPosition(10, 6)
                Console.Write("Datos recibidos:  {0}", contador & " Bytes.")
                Console.WriteLine("                   ")
                If (contador = cantidadBytes) AndAlso (contador = 17729) Then
                    Mensaje1()
                    File.WriteAllBytes("fotón.jpg", datosArray) ' Crear archivo en el disco duro.
                    Mensaje2()
                    Process.Start("fotón.jpg") ' Ejecutar visualizador de imágenes.
                    Mensaje3()
                    'break ' Garantiza que el ciclo termine.

                End If

                If (contador = cantidadBytes) AndAlso (contador = 2065) Then
                    Mensaje1()
                    File.WriteAllBytes("fotón.png", datosArray) ' Crear archivo en el disco duro.
                    Mensaje2()
                    Process.Start("fotón.png") ' Ejecutar visualizador de imágenes.
                    Mensaje3()
                    'break ' Garantiza que el ciclo termine.

                End If

            End While

        End Sub

        Public Shared Sub Mensaje1()
            Console.WriteLine()
            Console.WriteLine("Creando archivo al disco duro...")
        End Sub


        Public Shared Sub Mensaje2()
            Console.WriteLine()
            Console.WriteLine("Archivo creado. Ejecutando imagen.")
        End Sub

        Public Shared Sub Mensaje3()
            Console.WriteLine()
            Console.WriteLine("Imagen ejecutada.")
            Console.WriteLine()
            'Console.WriteLine("Cabecera recibida: " & indata & "" & vbLf & "")
            Console.ForegroundColor = ConsoleColor.Yellow ' Letras amarillas.
            Console.WriteLine("FIN DE PROGRAMA.")
            Console.ForegroundColor = ConsoleColor.Gray ' Letras grises otra vez.
        End Sub

    End Class

End Namespace



Error:
CitarGravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   BC30043   'Me' solo es válido en un método de instancia.   Recibir_archivo_desde_Arduino_consola_VB   C:\Users\usuario\documents\visual studio 2017\Projects\Recibir_archivo_desde_Arduino_consola_VB\Recibir_archivo_desde_Arduino_consola_VB\Module1.vb   51   Activo

;)

No veo el error en el código que pusiste!!

Hola:

El error me lo indica aquí.
Código: php
AddHandler Puerto_serie.DataReceived, AddressOf Me.Puerto_serie_DataReceived


Justo donde dice Me. Ese Me si lo quitas, también dará otros errores.

Saludos.