TODOPIC
Misceláneas - Interés General => Off Topic => Mensaje iniciado por: PCCM en 04 de Enero de 2013, 13:23:55
-
Buenas, espero que me puedan ayudar.
Descripcion general del proyecto:
--------------------------------------------
He realizado un software en C (linux, ubuntu 11.04), que realiza 3 procesamientos a la vez(multihilos), uno que hace procesamiento con opencv, otro que se comunica via sockets con un software llamado blender y el tercer se comunica via serial con el exterior.
Para la salida serial utilizo un cable comercial conversor usb-232, y este va a una tarjeta electronica conversora de 232-485 y a su salida de esta tarjeta sale un cable de aprox 15 metros a otro sistema.
--------------------------------------------
El problema es que cuando ejecuto el programa, lo utilizo ... y despues lo cierro (tecla escape), A VECES se cuelga (no se cierra, se pone pantalla del programa en negro o el mouse y teclado deja de funcionar), ese comportamiento de que a veces se cuelgue me hizo pensar de que algo estaba mal en la programación, tal ves que no finalizaba bien el procesamiento, no cerraba bien el puerto serial, el socket, etc...
Para lo cual lo probé el software solo, sin la conexión externa del 485 al otro sistema, y de todas las pruebas que hice, nunca se me colgó,
Mi pregunta concreta es si a alguien le ha sucedido algo parecido, o si es posible de que un ruido externo afecte a un software de PC.
Gracias.
-
No creo que por ruido te deje el soft colgado, yo creo que el problema es porque en tu programa no estas liberando bien el dispositivo al momento de cerrarlo, por eso quizas cuando lo usas (el soft) sin conectar funciona correctamente porque no has abierto ninguna conexión.
Yo intentaría colocar alguna sentencia en tu programa que pueda darte algún mensaje si se produce algún error.
No tengo experiencia en programar en Linux, en windows esto que te comento es una buena técnica ;-)
-
Una consulta?... la placa conversora de 485... es alimentada por el propio USB o tiene una fuente aparte?
Saludos!
Norberto
-
El Puerto serial siempre esta conectado, uso un cable conversor 232-usb, ya que para probarlo sin sistema adicional, solo conecte este cable conversor, para que el programa piense que esta el dispositivo, ya que no funciona si no esta conectado.
La placa conversora tiene su propia alimentación (fuente aparte), pero la tierra del usb si esta conectadas por medio de una resistencia de 100 ohm.
Pero si no estaria liberando bien, porque me sucede en casos aleatorios?.
Asi libero mi programa:
cvReleaseCapture(&capture); //Libero puntero de captura de video
cvReleaseImage(&contourImg); //Libero puntero de imagen
cvReleaseImage(&frame);
cvReleaseImage(&grayImg);
cvDestroyWindow("src"); //Libero puntero de ventana
close(sockfd); //libero puerto de la comunicacion socket
close(fd); //libero puerto de comunicacion serial
exit(0); //finalizo programa.
-
El Puerto serial siempre esta conectado, uso un cable conversor 232-usb, ya que para probarlo sin sistema adicional, solo conecte este cable conversor, para que el programa piense que esta el dispositivo, ya que no funciona si no esta conectado.
La placa conversora tiene su propia alimentación (fuente aparte), pero la tierra del usb si esta conectadas por medio de una resistencia de 100 ohm.
Pero si no estaria liberando bien, porque me sucede en casos aleatorios?.
Asi libero mi programa:
cvReleaseCapture(&capture); //Libero puntero de captura de video
cvReleaseImage(&contourImg); //Libero puntero de imagen
cvReleaseImage(&frame);
cvReleaseImage(&grayImg);
cvDestroyWindow("src"); //Libero puntero de ventana
close(sockfd); //libero puerto de la comunicacion socket
close(fd); //libero puerto de comunicacion serial
exit(0); //finalizo programa.
Hola PCCM.
En este ultimo caso que mencionas, ¿la PC funciono bien ?
Existen unos dispositivos que aislan electricamente la interfase RS232. Poseen internamente optoacopladores para realizar la aislacion. De ultima proba con alguno de estos. En Elektor han salido circuitos de estos. Tambien quizas puedas conseguirlos en Internent ya armados.
Saludos.
-
yo me apunto mas a un problema de induccion por el largo de cable.. diferencias de tension entre tierras o algo por el estilo... esta la pc a masa? (descarga a tierra), quizas el equipo al que estas comunicando, tiene alguna perdida o induccion...
es posible acortar el cable?, o colocar un sistema opto-acoplado?
-
Dejo mi solución: la solución era por el sistema operativo, cuando hice más pruebas al software solo, se seguía colgando. La PC que usaba como dije era Ubuntu pero de 64 bits. Así que lo cambié por Ubuntu de 32 bits y problema solucionado.
Aunque quisiera saber la explicación de tal hecho me basta saber que está OK.
Gracias.