locked
Adquirir datos desde puerto serial. RRS feed

  • Pregunta

  • Buen día a todos.

    Soy nuevo en el tema de programación en C# y necesito realizar un programa que lea datos que manda un escaner por el puerto serial y los almacene dentro de 3 textbox (un dato en cada textbox); ya he buscado información a través de foros y he podido adquirir un dato y almacenarlo en un textbox pero al realizar el siguiente escaneo y quererlo almacenar en el otro textbox no he encontrado información de como se realice en automático. Adjunto el codigo que estoy utilizando actualmente para almacenar el dato en un solo textbox.

    De antemano muchas gracias.

    Public Class Form1

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            buscapuerto()
        End Sub

        Private Sub buscapuerto()
            Try
                cmbPort.Items.Clear()
                For Each puerto As String In My.Computer.Ports.SerialPortNames
                    cmbPort.Items.Add(puerto)
                Next
                If cmbPort.Items.Count > 0 Then
                    cmbPort.SelectedIndex = 0
                Else
                    MsgBox("NO HAY PUERTOS DISPONIBLES EN TU SISTEMA")
                End If
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            End Try
        End Sub

        Private Sub btnconectar_Click(sender As Object, e As EventArgs) Handles btnconectar.Click
            Try
                With sppuerto
                    .BaudRate = 9600
                    .DataBits = 8
                    .Parity = IO.Ports.Parity.None
                    .StopBits = 1
                    .PortName = cmbPort.Text
                    .Open()

                    If .IsOpen Then
                        lblestado.Text = "CONECTADO"
                    Else
                        MsgBox("CONEXION FALLIDA!", MsgBoxStyle.Critical)
                    End If
                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            End Try
        End Sub

        Private Sub btndesconectar_Click(sender As Object, e As EventArgs) Handles btndesconectar.Click
            sppuerto.Close()
            lblestado.Text = "DESCONECTADO"
        End Sub

        Private Sub sppuerto_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles sppuerto.DataReceived
            Dim buffer As String
            buffer = sppuerto.ReadExisting
            txtrecibe.Text = "Recibido>> " & buffer & vbCrLf
        End Sub

        Private Sub btnenviar_Click(sender As Object, e As EventArgs) Handles btnenviar.Click
            If sppuerto.IsOpen Then
                sppuerto.WriteLine(txtenvia.Text)
            Else
                MsgBox("NO ESTAS CONECTADO", MsgBoxStyle.Exclamation)
            End If
        End Sub
    End Class

    miércoles, 16 de enero de 2019 19:03

Respuestas

Todas las respuestas

  • hola

    porque otro TextBox ? porque no mejor algun otro control que permite la reccepcion de multiple informacion y pueda ir uniendola

    se puede usar el mismo textbox si lo unes usando

    txtrecibe.Text = txtrecibe.Text  + "Recibido>> " & buffer & vbCrLf

    o podrias usar algun ListBox

    ListBox1.Items.Add("Recibido>> " & buffer)

    no creo que ir variando de textbox sea lo correcto, ya que sino vas a tener que crear estos de forma dinamica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 16 de enero de 2019 19:18
  • Hola:

    Todo lo que sea puerto serie, se habla en la sección del foro llamado:

    Comunicación con dispositivos externos.

    Así lo saben para la próxima.

    Saludos.


    http://electronica-pic.blogspot.com

    miércoles, 16 de enero de 2019 20:39