Como disminuir los errores por interferencias en el protocolo de comunicacion serie

Hola, me interesaria saber como puedo disminuir los posibles errores en el protocolo de comunicacion serie provocados por interferencias en el ambiente. Se que existen algunos metodos como la suma de chequeo y el bit de paridad que detectan estos errores, pero lo que me interesa es saber como disminuir los mismos dentro de la programacion del protocolo. Estoy realizando un proyecto que obtiene datos por puerto serie y lo guarda en una memoria externa controlado por un 8051 y me interesaria saber si existe algun mecanismo que podria disminuir los errores por interferencias que no tuviera que ver con hardware sino de software. Gracias
 
Lo normal para detectar errores suele ser usar la paridad como "seguridad horizontal" y un checksum al final del bloque como "seguridad vertical" pero con eso solo detectas errores, necesitarás reenviar el bloque para reconstruir la información.
Hay códigos redundantes que son capaces de reconstruir la información hasta cierto grado de error, depende del uso y de lo ruidoso que sea el entorno.
Ten en cuenta que todo esto redunda en mas lentitud en la transmisión y hay que sopesar la relación velocidad-fiabilidad.
 
Geacias por responder, pero todavia no dan con lo que quiero saber. Existen varios metodos para detectar errores y aalgunos hasta reconstruyen la informacion pero lo que quiero saber es que si existe algun mecanismo que minimice o elimine los efectos de la interferencia que se derivarán en errores en la trasmision de los datos, como especie de un apantallamiento digital si se puede describir de esta manera. Gracias
 
No, no doy con lo que quieres saber; a ver si te aclaras porque en el primer post hablas de que lo que quieres es "por soft".
Evidentemente lo primero es intentar que no se presenten las interferencias; comunicación diferencial tipo RS422, bucle de corriente, apantallamiento, cablear por tubos separados, evitar lazos, bajar la impedancia, desacoplar etc...
Luego ya le ponemos historias al programa, pero en C no existe la función sinerrores(x) que los elimine por que si.
 
Si es por software, una de las respuestas que ya te dieron es lo que buscabas, los codigos de Hamming pueden detectar y tambien corregir errores, lee un poco sobre eso.

Ahora, lo ideal es hacer un medio de transmision lo mas eficiente y con pocos errores que se pueda segun nuestra aplicacion, ya que los metodos de deteccion (y los de correccion mas aun) generan una gran cantidad de datos adicionales. O sea, por cada x bits que queremos transmitir, se agregan y bits para deteccion y correccion de errores. Hasta donde yo se, no se utilizan en comunicaciones codigos de correccion de errores, solo de deteccion, y el paquete que se identifica como erroneo es marcado para retransmision... o se lo descarta.

Algunas configuraciones de discos SCSI usan metodos de redundancia de manera que si uno de los discos se cae o contiene informacion erronea, los otros pueden reconstruir la informacion que contenia.
 
Última edición:
Uffff, disculpen:oops::oops:. Bueno, la verdad es que me interesaria saber mas sobre los metodos para detectar estos errores y para corregirlos. Si alguien sobe de algun sitio tutorial o algo parecido, por favor me dicen. Por cierto, mi sistema presenta un metodo, en el cual si llega un mensaje erroneo este le envia al transmisor una respuesta y este me reenvia la informacion. ?Este podria ser un metodo de correcion?:unsure: Gracias:)
 
Si, ese es un metodo de correccion comun, el metodo de retransmision. La pregunta es como detectas que el mensaje fue erroneo? Uno de los metodos es utilizando CRC, que es un codigo de validacion de informacion que puede detectar varios errores.

En general para aprender sobre metodos de deteccion y correccion de errores, una buena manera es leerse un libro de teoria de las comunicaciones.

http://www.cs.nmsu.edu/~pfeiffer/classes/573/notes/ecc.html

En general es un tema arido, ya que se basa en teoria de informacion y polinomios de correccion. Sin embargo, no es indispensable que sepas toda la base de la teoria, solo emplear algunas herramientas de deteccion de errores y una estrategia de correccion. La herramienta y la estrategia dependen del tipo de comunicacion y de la cantida de errores esperados en el medio de comunic.

Por ejemplo en una comunicacion de voz y/o video en tiempo real rara vez se realiza correccion. Si se puede realizar deteccion y si el ultimo paquete es erroneo, se descarta o se extrapola seguna la informacion previa.

En cambio en comunicacion de datos generalmente es mandatorio realizar deteccion y correccion, si no, nos podemos encontrar con un archivo corrupto.
 
Muchas gracias por ayudarme. El metodo se basa en el envio de un byte al final que contiene la sume exclusiva de todos los caracteres eviados, el receptor lo recibe ejecuta la suma y compara. No se si este metodo es muy bueno pero te ahorra tamaño ya que no envia bits adicionales y el paquete enviado solamente presenta un caracter adicional. Ya me he documentado sobre los metodos que me dijeron. Muchas gracias. Cualquier otra aclaracion es valida
 
Eso es el checksum, si añades la paridad es razonablemente fiable para encontrar errores pero no los elimina ni corrige. Solo queda reenviar.
Primero ataca la capa física si puedes, un rs422 o bucle de corriente...
Bueno, primero mira a ver cuanto falla, igual va bien sin nada
 
Atrás
Arriba