Una alternativa al SerialPort.ReadLine

Atendiendo algunas dudas sobre como optimizar la recepción de datos utilizando ‘ReadLine’, y a falta de un ejemplo completo os facilito una alternativa.

La idea es llamar a la funcion de recepcion siempre que se reciben datos y disparar el evento de trama completa cuando se cumple la condicion de carácter final.

Imports
System.IO.Ports 
Public Class PortsSerie       
 ‘
   
 ‘Declarar el evento disparo fin de recepcion
   
 Public Event RxFin(ByVal Trama As String)
   
 ‘   
 ‘String de recepcion utilizado como buffer   
 Private PortSerie_Recepcion As String = «»
   
 ‘Anadir el manipulador de recepcion en la sub New, Load…
   
 AddHandler
PortSerie.DataReceived, AddressOf Rx
 
 Protected
Sub Rx(ByVal sender As Object, _
                  ByVal e As serialDataReceivedEventArgs)
       
   Try
    
‘Añadir la recepcion actual al buffer           
     
PortSerie_Recepcion += PortSerie.ReadExisting           
    
If PortSerie_Recepcion.Contains(Chr(13)) Then
               
        
RaiseEvent RxFin(PortSerie_Recepcion)               
        
PortSerie_Recepcion = «»
           
    
End If       
  
Catch ex As Exception
    
‘En caso de excepción        
 
End Try
   
 End Sub
End Class


Espero que esto os sirva de idea, esperando dejaros un ejemplo para descargar tan pronto como me sea posible.
Saludos,
Pep Lluis,