2009-06-29 24 views
17

Tenemos una aplicación que tiene que ser capaz de utilizar Bluetooth para los siguientes requisitos:Bluetooth en C#, ¿Qué pila, qué SDK?

  1. recibir archivos desde dispositivos Bluetooth (hasta 2 dispositivos al mismo tiempo)
  2. mostrar todos los dispositivos Bluetooth en
  3. gama
  4. enviar archivos a dispositivos Bluetooth
  5. Buscar dispositivos Bluetooth y transferir archivos a la vez

Estamos corriendo en Windows XP.

He hecho algunas mirando a su alrededor y no parece ser de 3 pilas principales:

BlueSoleil

En el sitio web de BlueSoleil, en su sección de SDK, parece mencionar sólo el 1 de conexión está soportado , que obviamente no es bueno.

de Windows

Sólo parece apoyar 1 dongle Bluetooth, lo que probablemente significa que no podamos satisfacer todas nuestras necesidades.

Widcommno

costoso y potencialmente una exageración? ¿API más compleja? ¿Pensamientos?

En términos de SDK para C#, estaba mirando a Franto Bluetools, ¿alguien usó esta API?

Gracias

Respuesta

18

En primer lugar, la exención de responsabilidad, soy el mantenedor de la biblioteca 32feet.NET. :-)

Acabo de comprobar, y en XP con la pila de Microsoft (usando un dongle) puedo recibir simultáneamente dos OBEX PUT y también descubrir dispositivos. Eso es usando la clase ObexListener de 32feet.NET y el método BluetoothClient.DiscoverDevices. Para enviar OBEX PUT uno puede usar su clase ObexWebRequest. Para hacer múltiples conexiones paralelas con ObexListener, acabo de tener varios hilos llamando a su método GetContext().

Así que eso es quizá más simple de lo que pensamos ...

También he probado con OBEX servidor de Andy Hume usando su biblioteca Brecham.Obex y la concurrente recibo funciona bien allí también. Está disponible desde http://32feet.net/files/folders/objectexchange/entry6511.aspx.

En nuestro soporte Widcomm. Con suerte, no parece demasiado "incompleto" en el lado del cliente ... La investigación (detección de dispositivos) y las conexiones funcionan. Sin embargo, el lado del servidor todavía necesita un poco de trabajo y hay algunas cosas que la API de Widcomm simplemente no admite, por ejemplo. (manejo de autenticación programática).

¿Cuál fue el problema con las muestras? Tiempo de compilación o tiempo de ejecución? En pila MSFT o Widcomm? Haga un seguimiento al http://32feet.net/forums/37.aspx si lo prefiere.

+0

Gracias alanjmcf :-) Necesitamos las cosas del lado del servidor. Estamos produciendo un dispositivo que permite a las personas transferir cosas desde sus dispositivos móviles y enviar cosas a sus teléfonos móviles. Entonces, debemos publicar los servicios para que los usen los clientes. No estoy seguro de que 2 transmisiones sean suficientes en el futuro, por lo que no estoy interesado en la pila de Windows. Puede acomodar a 8 personas en uno de nuestros dispositivos. Publicaré problemas de muestra en su sitio. – badbod99

+0

Cada vez que un autor de una biblioteca publica una respuesta, obtiene un +1 en el formulario. –

+0

Gracias Jordania. En los comentarios anteriores. Me pregunto qué progreso se ha logrado. De todos modos, en las "dos OBEX PUT y también descubriendo dispositivos", acabo de probar dos, ¿quizás los siete (full) piconet peers completos podrían ser compatibles? Todavía no es ocho ... – alanjmcf

4

Prueba esto: 32feet.NET. A partir de la versión 2.4, admiten la pila Widcomm además de la pila de Windows.

BTW: ¿Por qué necesita trabajar con dos dongles al mismo tiempo? Por lo general, un solo dongle puede manejar hasta 7 dispositivos conectados simultáneamente.

+0

Tengo entendido que, aunque admite varios dispositivos al mismo tiempo, solo puede hacer la transferencia de archivos Obex a/desde 1 de ellos a la vez. ¡Corrígeme si estoy equivocado! – badbod99

+0

Echa un vistazo a 32feet. Su implementación de widcomm es bastante incompleta y no pude obtener ninguna de sus muestras funcionando de fábrica. Me complace gastar en un componente, ¡pero no puedo encontrar uno bueno! Los ejemplos de herramientas azules tampoco funcionan de la caja. – badbod99

+0

Aún no he probado la implementación de widcomm. En cuanto a los dispositivos múltiples, no puedo decirlo con certeza, porque no lo hice, pero hasta donde sé, no hay límites para el tipo de conexión, por lo que debe tener varias transferencias obex simultáneas sin problemas. – arbiter

5

tiempo para explicar exactamente lo que terminamos haciendo ...

2 dongles por qué?

  1. Si un dispositivo de seguridad está haciendo un análisis de la velocidad de transferencia es más lenta masivamente hacia abajo
  2. Un dispositivo de seguridad sólo puede soportar 7 transferencias simultáneas, si se está haciendo un análisis, este se reduce a 6. Si desea enviar , reciba y escanee todo al mismo tiempo, todo se ralentiza, mal, y tiene canales muy limitados.

Por lo tanto, la idea es ejecutar un dongle continua exploración (lo que los dispositivos aparecen tan pronto como sea posible) y el otro dispositivo de seguridad reservada para las transferencias, y ya que no es la exploración, las transferencias están muy bien y rápido.

biblioteca que utiliza

Después de muchas pruebas y pensó, terminamos optando por WirelessCommunicationLibrary from BT framework.

Es compatible con Widcomm, Windows, BlueSoleil y la pila de Toshiba. Es compatible con todas las cosas del lado del servidor que necesitamos, es un producto comercial bien soportado, que funciona perfectamente sin errores.

¿Qué pila?

Bueno, esto es complejo. NINGUNO de los stacks admite 2 dongles al mismo tiempo. Entonces, la única opción es ejecutar un dongle en una pila y el otro dongle en otra. ¡Aquí es donde la biblioteca de WCL es útil!

Microsoft - Si se produce un error durante un análisis, es común que la pila se bloquee por completo. Esto no es ideal! Debe cerrar y reiniciar el dispositivo de radio, lleva tiempo y es propenso a fallas. Pero ... la pila de Microsoft maneja muy bien las transferencias de archivos.

Widcomm - Widcomm stack no es ideal para transferencias de archivos. Hay pequeñas aplicaciones molestas que se instalan con Widcomm que siguen tratando de tomar el control de su aplicación. Puedes matar a bttray.exe, lo que ayuda, pero aún obtienes un comportamiento extraño de la pila durante las transferencias. Estoy seguro de que esto se puede resolver, pero dado que Windows es pobre para escaneos, tiene sentido usar Widcomm para escaneos.

Así que ... tenemos un dongle configurado para Widcomm para escanear una y otra vez, y un dongle configurado para Microsoft configurado para manejar solo transferencias de archivos (dentro y fuera).

conseguir 2 llaves para trabajar

Fuimos para el uso de 2 de los mismos dispositivos de seguridad, podemos pedir a granel y los inventarios de todos la misma confusión reductor. Cada dispositivo enviado solo necesita 2 dongles bluetooth, simples.

El único problema es que estos son dongles widcomm y necesitamos un dongle en la pila de Windows. Windows no los reconoce como dongles de Windows, por lo que no los registrará para la pila de Windows. Entonces ... el es un truco que puedes hacerle al bt.archivo inf para que reconozca el dongle para Windows. Luego debe cambiar los controladores de uno de los dongles para que funcionen con los controladores de Windows y listo.

Resumen

Así que ... tenemos un dongle escanear todo el tiempo, uno transferencias de manejo, cada uno en pilas separadas y todo funciona muy bien. Esta es la única forma que he encontrado para obtener 2 dongles funcionando sin problemas en Windows. Si tienes una mejor sugerencia, ¡publícala!

+1

Solo para tener en cuenta que mi biblioteca 32feet.NET ha admitido el uso de dos dongles desde 2.5 (en realidad 2.4.1). Uno con MSFT y otro con Widcomm similar al usado en este caso. :-) – alanjmcf

+0

El único problema es que 32feet no es compatible con las características del servidor de Widcomm. – badbod99