Hola,
tengo un serio problema con la comunicación PC <--> PIC-USB.
Lo que estoy intentando hacer es comunicar un ordenador Intel Atom (Windows 7) con un dispositivo externo mediante USB. Y el problema es que, de vez en cuando, la comunicación se corta y no tengo idea de como solucionarlo. El problema es que se suele cortar después de varias horas, con lo que es muy difícil depurar y encontrar el error. De hecho, no creo que el error esté en mi código.
El dispositivo lo ha creado una empresa externa, utilizando un PIC de la familia 18F, por lo que no tengo acceso al código que va en el PIC (aunque tampoco tengo experiencia en programación de PICs, ya que no se nada de electrónica).
Para comunicarme con el dispositivo estoy utilizando Visual C++, los drivers WinUSB y la librería MPUSBAPI de Microchip (versión 6.0).
Básicamente la aplicación tiene varios threads, uno de ellos dedicado en exclusiva a comunicarse con el dispositivo USB. Para no pegar código, ya que puede ser largo, diré que la aplicación se comunica con el dispositivo USB cada vez que una persona pisa sobre una cosa y toca un botón (es decir, pseudo-aleatoriamente). A partir de ese momento se registran una serie de pisadas del usuario en diferentes posiciones (pongamos menos de 100) y después se corta la comunicación con el dispositivo USB. Y esperamos a la siguiente persona.
¿Alguna sugerencia?
----
Casi todos los ejemplos que he visto de comunicación USB con PICs se limitan a enviar/recibir dos o tres paquetes realizando alguna operación. ¿Pero que pasa después de varias horas de comunicación? ¿A alguien más se le pierden paquetes?
He comprobado que no es nada bueno abrir y cerrar los puertos de comunicación cada vez que me comunico con el dispositivo USB (se cuelga más veces), por los que los cierro sólo cada cierto tiempo.
Además, cuando se cuelga el dispositivo hay que reiniciar el ordenador!!! No sirve ni cerrar el programa, ni desconectar el USB
Gracias por vuestra ayuda!