Por eso es más fácil para un principiante utilizar Hserin, pero cuando complicas el programa ya comienza a darte problemas, Hserget solo lee 1byte cada vez, y pertenece a la programación avanzada ya que se pretende que el micro este realizando otras tareas como leer teclas, activar salidas, enviar datos por el LCD o hacer cálculos matemáticos. Hserget se puede utilizar básicamente de dos maneras: Comprobando el bit o flag que nos informa que hay datos en el búfer y por lo tanto enviamos a haserget tantas veces como haga falta hasta extraer todos los datos, no necesitamos saber la longitud de la trama. Normalmente cuando más rendimiento se obtiene con Hserget es utilizando la segunda forma: Las interrupciones, cuando están activas las interrupciones de la Usart no tenemos que comprobar nada, simplemente se ejecuta la rutina de entrada de datos de forma autónoma. La otra parte que crea muchos quebraderos de cabeza al que se inicia con el modulo Usart, es que hay que tener en cuenta que como es un búfer de entrada de datos, si los datos se solapan en el búfer este queda bloqueado, y activa un flag de error de desborde que implica que se perdieron datos y, quedando el modulo usart bloqueado solo en modo Rx, por esto hay que comprobar el flag de error de la usart para saberlo, y proceder al desbloqueo según el método del datasheet del micro.
Y el problema que mencionas con la trama se soluciona si envías códigos ASCII. En ASCII no es lo mismo 0 que "0" (
http://www.ascii.cl/es/). El sistema anterior usa un protocolo de los llamados simples, y te puedo asegurar que no se le cuela ninguna trama defectuosa. Aquí te dejo un video con el mismo protocolo pero para otra aplicación:
En el video anterior a una de las placas se le suministran los datos por el teclado del pc y esta los reenvia por rf a la otra pantalla.
Aquí esta el hilo donde puedes seguir todo eso:
http://www.todopic.com.ar/foros/index.php?topic=14917.0