Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/02/2010, 00:43
Avatar de ferny
ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 9 meses
Puntos: 55
Respuesta: PyS60, problema con timer y recepción de datos por BT

Efectivamente saqué mucho de ahí

Conseguí hacer funcionar los thread pero me ha dado otro problema. El BT es un recurso compartido que tiene que enviar y recibir datos, es decir recibo datos cada 2 segundos y envío datos varias veces por segundo.

El problema viene porque cuando llamo a la función de BT de recibir datos, se queda a la espera de que haya datos (cada 2 segundos, 14 bytes nuevos), lo que hace que durante ese tiempo no envíe nada. Al final lo que me está haciendo es que cada dos segundos envía y recibe un mensaje, o sea el envío se produce sólo cuando el BT queda libre que es justo después de que termine la función de recibir dato. Eso no me vale porque tengo que enviar datos con una frecuencia mucho mayor que con la que recibo.

Si trato de enviar un dato cuando está la función de recibir activa, la aplicación da error y se cierra o se cuelga. Implementé un lock y con acquire() y release() controlo que eso no suceda, pero probé a ver qué pasaba quitando el lock y evidentemente se quejaba...

He visto que existe un flag para la función sock.send que es MSG_DONTWAIT y que me vendría al pelo, pero pys60 no parece reconocerlo Ignoro si se podrá implementar algún timeout para la función de alguna manera, con eso creo que lo tendría solucionado...

Gracias
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.