Curso Completo Base de datos

Ayuda con RS232 Puerto COM VB2010

Colapsar
Este tema ha sido cerrado
X
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Ayuda con RS232 Puerto COM VB2010

    Buenas noches por aca...

    Necesito ayuda urgente con un programa que estoy desarrollando en VB2010, no soy un experto y ya he probado miles de codigos encontrados en internet,

    solo he podido enviar datos desde mi aplicacion hasta un dispositivo receptor, en este caso estoy trabajando con la siguiente interfaz:


    PICkit2 (Microchip)<---->MAX232<---->PC

    El software de PICkit2 me permite enviar y recibir data RS232 en formatos ASCII y HEX, el programa que he logrado hacer, me permite enviar desde mi PC

    hasta el PICkit2, en esto no tengo problemas, pero cuando quiero enviar desde el PICkit2 hacia la PC, no logro que la PC me muestre nada de nada de nada

    de nada y mi duda esta en la lectura del programa en VB, he trabajado con casi todos los modos y comandos que he encontrado en la web, pero no logro

    hacer que mi PC lea nada.

    el codigo que tengo hasta ahora es el siguiente, omitiendo los elementos que no son imporantes en la comunicacion:

    Código:
    Imports System
    Imports System.ComponentModel
    Imports System.Threading
    Imports System.IO.Ports
    Imports System.Text
    Imports System.Threading.Thread
    Imports System.Windows.Forms.Control
    
    Public Class Form1
    
        Dim invocartextbox As String
    
        Dim myText As String
        Dim x As Integer
        Delegate Sub AddReceiveString(ByVal str As String)
        Public DelegadoRecString As AddReceiveString
    
    
        Private Sub Form1_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
           
            For Each sp As String In My.Computer.Ports.SerialPortNames
                ListBox1.Items.Add(sp)
            Next
    
            SerialPort1.Close()
    
        End Sub
        
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'Abrir Puerto
            If Not SerialPort1.IsOpen Then
                SerialPort1.Open()
            End If
            TextBox7.Text = "Abierto"
        End Sub
    
        Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 'Cerrar Puerto
            If SerialPort1.IsOpen Then
                SerialPort1.Close()
            End If
            TextBox7.Text = "Cerrado"
            x = 0
        End Sub
    
        Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click ' Enviar dato
    
            Dim myTextWrite As String
            myTextWrite = TextBox9.Text
            SerialPort1.Write(myTextWrite, 0, Len(myTextWrite))
    
        End Sub
    
        Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles 
    
    SerialPort1.DataReceived ' Recibir Dato
    
            Dim resultado As String = String.Empty
            resultado = SerialPort1.ReadByte()
            RichTextBox1.Text = resultado.ToString
           
            RichTextBox4.Text = Invoke(DelegadoRecString, New Object() {resultado.ToString})
            TextBox12.Text = Invoke(DelegadoRecString, New Object() {resultado.ToString})
        End Sub
    
    End Class
    Con el evento DataReceived no logro hacer funcionar la recepcion de nada. No logro mostra nada en el Richtextbox o en el Textbox.

    Podria alguien ayudarme en este problema...

  • #2
    Re: Ayuda con RS232 Puerto COM VB2010

    Hola, en la parte:

    Código:
    Dim resultado As String = String.Empty
    resultado = SerialPort1.ReadByte()
    RichTextBox1.Text = resultado.ToString
    Si pones un punto de ruptura cuando ejecutas resultado = SerialPort1.ReadByte(), ¿no te devuelve ningún dato o te da algún error capturable con un On Error?

    Por cierto, resultado ya es un String, creo que el ToString lo puedes suprimir, ¿o si no lo pones te da problemas?

    Saludos

    Comentario


    • #3
      Re: Ayuda con RS232 Puerto COM VB2010

      Lo primero que tienes que asegurar es que ambos extremos del cable transmiten y reciben con la misma velocidad, bits de stop y trama de bits.

      Después decidir si lo que quieres transmitir son bytes o tramas de string...el siguiente link te da los detalles necesariios para controlar puertos serie. Está muy bien explicado.


      http://www.dreamincode.net/forums/topic/37361-serial-port-communication-in-vbnet/


      Ten especial cuidado con ReadByte(). Yo trataría de utilizar ReadTo("!%") que te devolverá cadenas. Este otro link te especifica la diferencia y los problemas que te puede acarrear el uso de ReadByte() y ReadChar().

      http://msdn.microsoft.com/es-es/library/system.io.ports.serialport.readbyte(v=vs.80).aspx
      Un cordial saludo
      -Acalanto-

      Madrid - España

      Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

      Comentario


      • #4
        Re: Ayuda con RS232 Puerto COM VB2010

        Originalmente escrito por Scherzo Ver mensaje
        Hola, en la parte:

        Código:
        Dim resultado As String = String.Empty
        resultado = SerialPort1.ReadByte()
        RichTextBox1.Text = resultado.ToString
        Si pones un punto de ruptura cuando ejecutas resultado = SerialPort1.ReadByte(), ¿no te devuelve ningún dato o te da algún error capturable con un On Error?

        Por cierto, resultado ya es un String, creo que el ToString lo puedes suprimir, ¿o si no lo pones te da problemas?

        Saludos
        1. No se como seria ese punto de ruptura, no se que significa.
        2. Como se usa el On Error? me das un ejemplo?...
        3. Bueno el ToString lo puedo quitar y no me da ningun problem.

        En este caso no logro recibir absolutamente nada...
        Saludos y gracias por tu ayuda...

        Comentario


        • #5
          Re: Ayuda con RS232 Puerto COM VB2010

          Originalmente escrito por acalanto Ver mensaje
          Lo primero que tienes que asegurar es que ambos extremos del cable transmiten y reciben con la misma velocidad, bits de stop y trama de bits.

          Después decidir si lo que quieres transmitir son bytes o tramas de string...el siguiente link te da los detalles necesariios para controlar puertos serie. Está muy bien explicado.


          http://www.dreamincode.net/forums/topic/37361-serial-port-communication-in-vbnet/


          Ten especial cuidado con ReadByte(). Yo trataría de utilizar ReadTo("!%") que te devolverá cadenas. Este otro link te especifica la diferencia y los problemas que te puede acarrear el uso de ReadByte() y ReadChar().

          http://msdn.microsoft.com/es-es/library/system.io.ports.serialport.readbyte(v=vs.80).aspx
          Hola y gracias por tu respuesta

          1. Bueno hice una prueba puenteando los RX y TX del puerto COM de esa manera me aseguro que lo que envio se regresa por el RX del COM y aun asi no recibo nada.
          2. En realidad lo que pienso enviar y recibir es un solo carater, ya que la aplicacion solo va a interpretar si esta recibiendo una "A" o una "B", mas nada.
          3.Voy a revisar los link a ver en que me pueden ayudar, pero como no soy muy esperto en esto, pues espero entenderlo...

          Gracias.

          Comentario


          • #6
            Re: Ayuda con RS232 Puerto COM VB2010

            Originalmente escrito por davidepr Ver mensaje
            1. No se como seria ese punto de ruptura, no se que significa.
            2. Como se usa el On Error? me das un ejemplo?...
            3. Bueno el ToString lo puedo quitar y no me da ningun problem.

            En este caso no logro recibir absolutamente nada...
            Saludos y gracias por tu ayuda...
            1.- Con un punto de ruptura me refiero a poner con F9 en la línea de código un parón, para que luego durante la ejecución, cuando llegue a esa línea, dicha ejecución se detenga y te permita depurar, inspeccionar los valores de las variables, etc.

            2.- El On Error es un rudimentario control de errores que permite VB6. Para ello haces algo así:

            Código:
            Public Sub MiSubrutina()
                On Error GoTo TratamientoErrores
            
                ...
                ... 'El código de mi subrutina
                ...
            
            TratamientoErrores:
                'Aquí saltará la ejecución cuando salte un error capturable por el compilador, pudiendo
                'así inspeccionar el objeto "Err" que contendrá información sobre el error producido.
            End Sub
            Saludos

            Comentario


            • #7
              Re: Ayuda con RS232 Puerto COM VB2010

              Originalmente escrito por Scherzo Ver mensaje
              1.- Con un punto de ruptura me refiero a poner con F9 en la línea de código un parón, para que luego durante la ejecución, cuando llegue a esa línea, dicha ejecución se detenga y te permita depurar, inspeccionar los valores de las variables, etc.

              2.- El On Error es un rudimentario control de errores que permite VB6. Para ello haces algo así:

              Código:
              Public Sub MiSubrutina()
                  On Error GoTo TratamientoErrores
              
                  ...
                  ... 'El código de mi subrutina
                  ...
              
              TratamientoErrores:
                  'Aquí saltará la ejecución cuando salte un error capturable por el compilador, pudiendo
                  'así inspeccionar el objeto "Err" que contendrá información sobre el error producido.
              End Sub
              Saludos
              Ok dejame lo intento y te digo como me fue... no respondi antes porque estaba de viaje...

              Comentario


              • #8
                Re: Ayuda con RS232 Puerto COM VB2010

                Bueno gracias por su ayuda, pero el problema esta en que el puerto com de mi PC esta dañado y no recibe Datos, compre un adaptados USB-Serial y me funciono perfectamente...

                Comentario


                • #9
                  Re: Ayuda con RS232 Puerto COM VB2010

                  Disculpa las molestias pero necesitaria una ayuda con respecto a la comunicacion entre el puerto rs23 y visual basic 2008. Pude recibir datos y todo pero opr ejemplo mi tarjeta de proximidad tiene el numero 1561 y cuando lo paso por el lector el programa me larga 1AFE830C80

                  A que se debe?

                  __________________________

                  Amigo facku21: Ya se ve que todavía no has leído las Normas del Foro; por eso has empezado cometiendo dos faltas: Primera, "No se deben resucitar temas antiguos"; segunda, "No se debe repetir la pregunta" (ya has expuesto tu problema en un tema nuevo, así que éste sobra...). Cierro el post para que no se generen duplicidades.

                  Por ello me permito aconsejarte que leas las Normas del Foro, porque son de obligado cumplimiento... A pesar de ello te saludo afectuosamente y te deseo suerte entre nosotros.

                  José María Movilla Cuadrado
                  Administrador

                  Comentario

                  Trabajando...
                  X