none
SerialPort en visual basic RRS feed

  • Pregunta

  • Buenas tardes a todos.

    alguien sabría decirme por que  no me deja poner hola a un textbox con un SerialPort.

    Da error

    os dejo el codigo.

      Public Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

    Txt_saludo.Text="HOLA"
            c_activo = 1 '// marcamos el puerto de comunicaciones que se ha activado
            System.Threading.Thread.Sleep(1000)    '// Esperamos a que se llene el buffer
            Array.Clear(a_bufferComm, 0, 3)      ' // limpiamos a_bufferComm

            Try

                '   leer_buffer_1()
                '##############################################################################################
                m_bufferComm = "" 'inicializamos m_bufferComm
                Dim bytes As Integer = SerialPort1.BytesToRead       'obtenemos el numero de bytes en el buffer
                Dim comBuffer As Byte() = New Byte(bytes) {}    'creamos una array tipo byte para guardar los datos en espera
                SerialPort1.Read(comBuffer, 0, bytes)  'leemos los datos y los guardamos

                'Dim enc As System.Text.ASCIIEncoding = New System.Text.ASCIIEncoding()
                Dim enc As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
                m_bufferComm = enc.GetString(comBuffer)
                ahora()
                'MsgBox(v_ahora + "RECIBIDO por " & coms(c_activo, 2) & ":-->" + m_bufferComm + "<--\r\n")
                SystemSounds.Exclamation.Play()
                NotifyIcon1.ShowBalloonTip(100, "Capturador", "Mensaje recibido por " & coms(c_activo, 2) & " - " & (coms(c_activo, 1)), ToolTipIcon.Info)
                '##########################################################################################
                If m_bufferComm = c_RS_GRAL Then

                    Select Case (coms(c_activo, 2))

                        Case "LM9XX"
                            SerialPort1.Write(c_SD_LM9XX)


                        Case "NT2000"
                            SerialPort1.Write(c_SD_NT2000)

                        Case Else
                            txt_mesajes.Text = v_ahora & "No se ha reconocido el dispositivo de entrada. Por favor, revise la configuración.\r\n"

                    End Select

                    System.Threading.Thread.Sleep(200) ' Esperamos respuesta
                    Return
                End If

            Catch ex As Exception

                txt_mesajes.Text = v_ahora & "Recibido por puerto serie |" & a_bufferComm(0) & "|" & "... reintentando.\r\n"
            End Try
            'SerialPort1.Close()
            m_COM() '  comprobamos el dispositivo COM al que escuchar y tomamos la acción adecuada
            SerialPort1.DiscardInBuffer()


        End Sub

    lunes, 3 de marzo de 2014 16:09

Respuestas

  • Public Class Form1
        Delegate Sub DelegadoTextBox(texto As String)
    
        Private InstanciaDelegadoTextBox As DelegadoTextBox
    
        Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            TextBox1.Invoke(InstanciaDelegadoTextBox, "HOLA")
        End Sub
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            InstanciaDelegadoTextBox = New DelegadoTextBox(AddressOf MétodoDelegadoTextBox)
            SerialPort1.Open()
        End Sub
    
        Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            SerialPort1.Close()
        End Sub
    
        Private Sub MétodoDelegadoTextBox(texto As String)
            TextBox1.Text = texto
        End Sub
    End Class
    

    lunes, 3 de marzo de 2014 21:09

Todas las respuestas

  • Public Class Form1
        Delegate Sub DelegadoTextBox(texto As String)
    
        Private InstanciaDelegadoTextBox As DelegadoTextBox
    
        Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            TextBox1.Invoke(InstanciaDelegadoTextBox, "HOLA")
        End Sub
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            InstanciaDelegadoTextBox = New DelegadoTextBox(AddressOf MétodoDelegadoTextBox)
            SerialPort1.Open()
        End Sub
    
        Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            SerialPort1.Close()
        End Sub
    
        Private Sub MétodoDelegadoTextBox(texto As String)
            TextBox1.Text = texto
        End Sub
    End Class
    

    lunes, 3 de marzo de 2014 21:09
  • y si en vez de un cadena quiero darle todas las propiedades y de otro TextBox?

    MUCHAS GRACIAS

    martes, 4 de marzo de 2014 11:37