none
serialport no responde RRS feed

  • Pregunta

  •  

    estoy haciendo un proyecto con RFID comunicandome con el puerto serial

    mi problema es que el lector le tengo que mandar lo siguiente (enter 001401 enter) para que lea y me mande el ID del dispositivo que registro

     

    cuando lo pruebo con el hyperterminal escribo la secuencia y me regresa el ID pero cuando lo hago desde mi programa no me responde nada

     

    aqui esta el codigo

    =============================================================================

    Private Sub puertoRFID_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)

     

    Dim input As String = puertoRFID.ReadExisting

    Dim delegado_De_lectura As New mydel(AddressOf escribe)

    Me.Invoke(delegado_De_lectura, input)

    End Sub

     

    Sub escribe(ByVal ID As String)

    label1.text=ID

    End Sub

     

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    Dim lectura As String = Chr(13) & "001401" & Chr(13)

    Dim contbits As Integer

    While contbits < lectura.Length puertoRFID.Write(lectura, contbits, 1) contbits = contbits + 1

    End While

    End Sub

    ==============================================================================

     

    ojala me pudieran ayudar

    gracias

    sábado, 5 de enero de 2008 5:19

Respuestas

  • Hola Cary!!

     

    Aqui tienes una posible solucion... o al menos eso espero

     

        'Definir objetos de la aplicacion

        Private MiCOM1 As SerialPort            'Puertos serie

     

        Private lbxRecepcion As New ListBox     'ListBox recepcion

        Private tmrTransmision As New Timer     'Temporizador transmision

     

        Delegate Sub ProcesarCOM1()             'Delegados proceso

     

        Private RecibidosCOM1 As String = ""    'Recepcion de datos

        '

        '

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            'Texto Incial del list box

            lbxRecepcion.Items.Add("...Comunicacion con el Rfid")

            'Anadir control al form

            Me.Controls.AddRange(New Control() {lbxRecepcion})

            Me.Text = "Ejemplo: COM <-> Rfid"

     

            'Constructores para el puerto de comunicaciones

            MiCOM1 = New SerialPort("COM1")

            MiCOM1.Open()

            'Definir eventos al recibir datos

            AddHandler MiCOM1.DataReceived, AddressOf RecibirdeCOM1

     

            'acoplar listbox

            lbxRecepcion.Dock = DockStyle.Fill

     

            'inicializar temporizador

            tmrTransmision.Enabled = True

            tmrTransmision.Interval = 3000        'Cada tres segundos

            AddHandler tmrTransmision.Tick, AddressOf EnviarACOM1

        End Sub

        '

        'Enviamos una peticion al Rfid cada 3 segundos

        Private Sub EnviarACOM1(ByVal sender As Object, ByVal e As System.EventArgs)

            lbxRecepcion.Items.Add("<Peticion    >" + System.DateTime.Now)

            MiCOM1.Write(Chr(13) & "001401" & Chr(13))

        End Sub

        '

        'Añadir una linea al listbox al recibir un caracter 13 por COM1

        Private Sub RecibirdeCOM1(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)

            RecibidosCOM1 += MiCOM1.ReadExisting

            If RecibidosCOM1.IndexOf(Chr(Keys.Enter)) > -1 Then

                Me.Invoke(New ProcesarCOM1(AddressOf RecepcionesdeCOM1))

                RecibidosCOM1 = ""  'Borrar datos recibidos

            End If

        End Sub

     

        'Añadir los datos recibidos por COM1 al listbox

        Private Sub RecepcionesdeCOM1()

            lbxRecepcion.Items.Add("<Respuesta>" + RecibidosCOM1)

        End Sub

    ;-))

    Saludos,

    Pep Lluis

    lunes, 7 de enero de 2008 17:10
    Moderador

Todas las respuestas

  •  

    de hecho es todo el codigo que tengo, pero no me responde. tengo un programa monitor de puertos y checo que si manda la instruccion pero el dispositivo no me responde.

    me podrias informar algo de la seguridad a la que te refieres?

    estoy trabajando sobre xp pro

     

    gracias

    domingo, 6 de enero de 2008 3:21
  • Hola Cary!!

     

    Aqui tienes una posible solucion... o al menos eso espero

     

        'Definir objetos de la aplicacion

        Private MiCOM1 As SerialPort            'Puertos serie

     

        Private lbxRecepcion As New ListBox     'ListBox recepcion

        Private tmrTransmision As New Timer     'Temporizador transmision

     

        Delegate Sub ProcesarCOM1()             'Delegados proceso

     

        Private RecibidosCOM1 As String = ""    'Recepcion de datos

        '

        '

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            'Texto Incial del list box

            lbxRecepcion.Items.Add("...Comunicacion con el Rfid")

            'Anadir control al form

            Me.Controls.AddRange(New Control() {lbxRecepcion})

            Me.Text = "Ejemplo: COM <-> Rfid"

     

            'Constructores para el puerto de comunicaciones

            MiCOM1 = New SerialPort("COM1")

            MiCOM1.Open()

            'Definir eventos al recibir datos

            AddHandler MiCOM1.DataReceived, AddressOf RecibirdeCOM1

     

            'acoplar listbox

            lbxRecepcion.Dock = DockStyle.Fill

     

            'inicializar temporizador

            tmrTransmision.Enabled = True

            tmrTransmision.Interval = 3000        'Cada tres segundos

            AddHandler tmrTransmision.Tick, AddressOf EnviarACOM1

        End Sub

        '

        'Enviamos una peticion al Rfid cada 3 segundos

        Private Sub EnviarACOM1(ByVal sender As Object, ByVal e As System.EventArgs)

            lbxRecepcion.Items.Add("<Peticion    >" + System.DateTime.Now)

            MiCOM1.Write(Chr(13) & "001401" & Chr(13))

        End Sub

        '

        'Añadir una linea al listbox al recibir un caracter 13 por COM1

        Private Sub RecibirdeCOM1(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)

            RecibidosCOM1 += MiCOM1.ReadExisting

            If RecibidosCOM1.IndexOf(Chr(Keys.Enter)) > -1 Then

                Me.Invoke(New ProcesarCOM1(AddressOf RecepcionesdeCOM1))

                RecibidosCOM1 = ""  'Borrar datos recibidos

            End If

        End Sub

     

        'Añadir los datos recibidos por COM1 al listbox

        Private Sub RecepcionesdeCOM1()

            lbxRecepcion.Items.Add("<Respuesta>" + RecibidosCOM1)

        End Sub

    ;-))

    Saludos,

    Pep Lluis

    lunes, 7 de enero de 2008 17:10
    Moderador
  • muchas gracias Pep Lluis y a ti tambien el bruno

     

    todo me funciona prefecto con el ultimo ejemplo...de hecho ya lo tenia funcionando antes con un ejemplo de codigo de tu pagina pep Lluis...(la de los delegados)

     

    gracias y espero que tambien les sirva a mucha mas gente este ejemplo

    saludos

    lunes, 7 de enero de 2008 20:54
  • Hola:

    Puedes descargar el manual en pdf sobre VB y  puerto serie.
    Saludo.


    martes, 26 de mayo de 2009 8:48
  • hola: 

    muy interesante su información, yo me encuentro realizando  mi tesis con rfid pero me debo conectar a traves del puerto ethernet, pero tengo problemas realmente soy nueva en vb y no estoy muy clara si me pODRIAN ayudar estoy trabajando con vb 2008
    sábado, 23 de enero de 2010 1:16