Problema comunicación Puerto Serie

Iniciado por malith, 30 Agosto 2015, 04:47 AM

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

malith

Buenas,

He creado un programa para enviar y recibir tramas hexadecimales a través de un puerto serie en visual basic.
Al testear el programa veo que las tramas se envian correctamente (usando lenguaje ascii), pero a la hora de recibir las tramas, cuando se encuentra un zero termina la comunicación.
Por ejemplo si tengo que recibir 10 49 3B 16 lo recibio perfecto, pero si tengo que recibir 10 49 00 3B 16 solo recibo 10 49.

Alguien puede ayudarme?

Gracias de antemano

someRandomCode

Malith, seria muy util que compartieras la sección de tu programa pertinente a la recepcion de las tramas.


malith

#2
Gracias por contestar,

primero abro el puerto con esta instrucción al activar un botón:

Private Sub BtnConnectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConnectar.Click

       If BtnConnectar.Text = "CONECTAR" Then

           Try

               With SpPort
                   .BaudRate = 9600
                   .DataBits = 8
                   .Parity = IO.Ports.Parity.None
                   .StopBits = IO.Ports.StopBits.One
                   .PortName = CboPorts.Text
                   .Encoding = System.Text.Encoding.GetEncoding(1252)
                   .DiscardNull = False
                 

                   .Open()


               End With

               BtnConnectar.Text = "DESCONECTAR"
               BtnEnviarDades.Enabled = True

           Catch ex As Exception
               MsgBox(ex.Message, MsgBoxStyle.Critical)
           End Try

       ElseIf BtnConnectar.Text = "DESCONECTAR" Then
           BtnConnectar.Text = "CONECTAR"
           BtnEnviarDades.Enabled = False
           SpPort.Close()
       End If

   End Sub


Luego para recibir los datos entrantes hago servir delegados:

Private Sub AccesFormPrincipial(ByVal TextForm As String)
       StrBufferEntrada = TextForm
       TxtDadesRebudes.Text &= StrBufferEntrada 'Muestro las dadas recibidas en un textbox
     
   End Sub
 
     

Private Sub DadaRebuda(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SpPort.DataReceived

Dim DadaInterrupcio As String

       DadaInterrupcio = SpPort.ReadExisting
       PortaAccesInterrupcio(DadaInterrupcio)

   End Sub


Private Sub PortaAccesInterrupcio(ByVal BufferIn As String)

       Dim TextInterrupcio() As Object = {BufferIn}
       Dim DelegatInterrupcio As DelegatAcces
       DelegatInterrupcio = New DelegatAcces(AddressOf AccesFormPrincipial)
       MyBase.Invoke(DelegatInterrupcio, TextInterrupcio)

   End Sub


Sería esta parte