Ver Mensaje Individual
  #12  
Antiguo 08-05-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Reputación: 25
egostar Va camino a la fama
Cita:
Empezado por vejerf Ver Mensaje
Hola de nuevo,



Esto lo entiendo, pero yo lo que digo es que no tienen por qué llegarte todos los caracteres de una trama de una vez. Es decir si yo envío por ejemplo la siguiente trama por un puerto serie:
<STX>Esto es un ejemplo de una cadena por el puerto serie<ETX>

puede que la primera vez que se genera el evento llegue tan sólo:
<STX>Esto es un ejemplo de una cadena

esto tu lo almacenas en lína y a continuación te llega el resto de trama:
por el puerto serie<ETX>

Esto te llega la segunda vez que se genera el evento por lo que la variable línea se habrá vuelto a inicializar y no tendrá la trama completa por lo que se perdería.

Si no me equivoco este es el comportamiento del puerto serie, aunque para decir la verdad es ahora cuando lo estoy manejando por primera vez. Para evitar que se pierdan tramas lo que usaba yo es un buffer circular.

Un saludo egostar & cia...
Es que hay un detalle

Tu vas a recibir solo un SYN o si quieres un STX identificando que es una cadena nueva (yo prefiero usar STX, porque en un protocolo de este tipo la cadena valida esta siempre entre STX y ETX), es por eso que solo la incializamos cuando recibimos ese caracter, cuando sea cualquier otro estamos agregando los caracteres a Linea, y solo hasta que nos llegue ETX hacemos el proceso correspondiente de una cadena completa.

Edito: No importa cuantas veces nos mande caracteres para completar una sola trama completa

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 08-05-2008 a las 20:36:29.
Responder Con Cita