buenas a todos...
les comento q estoy haciendo un proyecto donde debo recibir diversos datos desde uno o varios microcontroladores en diversos puntos de una instalacion, el protocolo q mas se acomodo a mis necesidades fue el RS485, ya logre hacer codigos de prueba donde entablo comunicaciones en ambientes muy ruidosos conn cables de hasta 300 mts, y los resultados fueron exitosos.
Lo siguiente en mi proyecto es enviar todo a una PC donde debo hacer graficas y bases de datos de acuerdo a las señales recibidas...
Para la parte de los microcontroladores aproveche las librerias RS485 q nos brinda el compilador MIKROC, el cual ya envia una trama establecida q contiene 8 bytes START,ADDRESS,DATALEN,DATA1...DATA3,CRC,END. en datalen se especifica cuantos datos deben llegar y si es el master o algun slave quien envia los datos... tbn se cuenta con calculos de CRC para desechar la trama si se detectan errores..
Toda la informacion referente al tratamiento de datos fue tomada en cuenta, y lo q hize fue diseñar un software que rearme la trama y q tome los datos para poder interpretarlos. La PC estara luego manejada como un slave mas cundo sea necesario, inicialmente solo quiero ver los datos en pantalla, y para eso pongo el puerto virtual del proteus a escuchar los datos q manda cada uno. Como veran, al escuchar al slave, se reciben los datos, y estos son interpretados sin problema, al igual q cuando se escucha al Master, pero cuando se escucha la salida del driver 485 en el puerto se muestran errores, llegan los datos al programa, pero solo llegan los primeros 7bytes, y nunca llega el byte END, por lo q el programa (como yo lo programe) desecha todo el buffer recibido.... Mi pregunta es pq se produce ese error, si el protocolo solo hace q uno de ellos envie a la vez, y esta comprobado q escuchando uno a la vez si se reciben bien los datos.
Mas abajo encontraran la simulacion con los Hex correspondientes, como tbn el codigo en VS2005... para simular utilize el virtual serial port driver, COM2 en proteus, y COM4 en mi programa de prueba.
Como dije anteriormente el codigo de los mikros dio buenos resultados,... ya q lo hize fue enviar un dato conocido desde el master hacia un slave, cuando este lo detecta envia una respuesta, el master al recibir la respuesta vuelvaa enviar al slave, y asi sucesivamente, teniendo indicadores paa saber si el pic responde al envio y recepcion... el codigo a continuacion es el encargado de eso... (claro q algunas cosas fui quitando y otras aumentando)
Espero q puedan ayudarme, ya q con esto lograremos algo muuuucho mas grande aun...