Hola Patricia, Es normal que te pase lo que describis, deberias hacer las cosas de otra manera. No me animo a escribir codigo VB.NET asi que te planteo la idea.
1) Deberias crear un buffer, por ahora digamos que fuera una variable static (Shared en VB). 2) Deberias crear una funcion muy parecida a la que describis pero que agregue al buffer lo que recibe, NADA MAS! 3) Hacer otra funcion que se dispara periodicamente, por ejemplo con un timer, que analice el buffer y extraiga los mensajes de acuerdo a los caracteres de delimitacion. Por supuesto que esta funcion deberia retirar el mensaje leido desde el buffer. La idea es desacoplar la lectura del puerto del analisis del buffer. ---------------------------------- Carlos Peix 2010/12/1 Patricia Banfi <[email protected]> > Hola, > > Trabajo con vb 2005 , estoy recibiendo datos por el puerto serial COM1 con > la siguiente sub (está hecha sólo para hacer pruebas de la interfase) > ..... > AddHandler Puerto.DataReceived, AddressOf Recibir > ...... > > Private Sub Recibir(ByVal Sender As Object, ByVal e > AsIO.Ports.SerialDataReceivedEventArgs) > Dim RES As String > Dim mBuffer As Byte() = New Byte(Puerto.ReadBufferSize) {} > Try > Puerto.Read(mBuffer, 0, Puerto.ReadBufferSize) > If mBuffer(0) = Hex(5) Then > Me.mensa.Text = "EMPIEZA LA COMUNICACION" > MandarACK() > ElseIf mBuffer(0) = Hex(2) Then > Me.mensa.Text = "SE ESTAN COMUNICANDO" > MessageBox.Show(mBuffer.Length) > RES = System.Text.ASCIIEncoding.ASCII.GetString(mBuffer) > Me.txtRecibido.Text = RES > SW1.WriteLine(RES) > MandarACK() > ElseIf mBuffer(0) = Hex(4) Then > Me.mensa.Text = "TERMINÓ LA COMUNICACION" > Else > Me.mensa.Text = "recibió " & Convert.ToChar(mBuffer(0)) > End If > Catch ex As Exception > MessageBox.Show(ex.ToString) > End Try > End Sub > > La longitud del buffer es 4097, pero el getstring(mbuffer) me devuelve sólo > 8 caracteres. Sé que recibo más de 8 porque probé con HyperTerminal. > Probé con readexisting y no anduvo. Es la primera vez que trabajo con un > RS232. > > Alguna sugerencia ? > Muchas Gracias. > Patricia > >
