2008-09-28 46 views
31

Estoy en el proceso de escribir un escáner Bluetooth que localice e identifique dispositivos móviles en las cercanías locales. ¿Es esto algo que puedo lograr usando C#, o tengo que incluir las API de C/C++? Mi aplicación está dirigida a Windows XP y Vista. Los indicadores son apreciados.Bluetooth API en Windows/.Net?

Gracias!

Respuesta

25

Un problema con Bluetooth en la PC es que hay varias pilas de BT en uso y nunca se puede saber cuál está disponible en una máquina determinada. Los más comunes son Widcomm (ahora Broadcom) y Microsoft (apareció en XP, quizás uno de los paquetes de servicio). Sin embargo, algunos proveedores de hardware de BT empaquetan BlueSoleil y algunos utilizan Toshiba. La mayoría de los dongles funcionarán con la pila MS, por lo que las bibliotecas .NET que he visto tienden a usar eso.

Cada una de las pilas tiene una forma totalmente diferente de hacer la parte de descubrimiento donde busca dispositivos cercanos y busca sus servicios.

Si tuviera que elegir un enfoque hoy probablemente haría el descubrimiento en C++ y agregaría una interfaz para .NET.

El material de 32feet.net funcionó bastante bien cuando lo probé pero no admitía la pila de Widcomm.

+1

Además, he probado 32Feet en Windows 10 y obtengo "32feet.NET no admite la pila Bluetooth en este dispositivo. " He informado el problema, pero parece que el proyecto no se ha actualizado en un par de años ... – LawMan

+0

@LawMan Tuve un problema similar con Windows 10. La causa fue que Bluetooth se apagó. –

+0

@Juozas Kontvainis Eso fue lo primero que revisé. Aunque mi código emparejaría el dispositivo si no estaba emparejado (o al menos solía ... jaja), me aseguré de que Windows se hubiera emparejado con éxito con el dispositivo, y luego ejecuté mi código. Además, 32Feet aún no ha respondido a mi problema. Aquí está el enlace del problema si alguien está interesado. https: //32feet.codeplex.com/workitem/43236 – LawMan

3

Las únicas API gestionadas de BlueTooth a las que pude recurrir son here.

14

Existe también 32feet.net de Peter Foot

http://inthehand.com/content/32feet.aspx

He jugado un poco con esto cuando era v1.5 y funcionó bien.

+0

He estado utilizando la biblioteca 32feet.net en una aplicación móvil de Windows y funciona muy bien – tjjjohnson

7

Mike Petrichenko tiene un buen marco BT. Funciona con BlueSoleil, Widcomm, Toshiba y Microsoft.

Ahora se llama Biblioteca de Comunicaciones Inalámbricas y funciona con Bluetooth 802.11 e Infrarrojo. Mike nombró a la compañía Soft Service Company y vende licencias comerciales y no comerciales con y sin código fuente en precios que oscilan entre $ 100 y $ 2050.

+1

Estaba usando 32feet para un proyecto y recibía muchos errores aleatorios al conectarme a un dispositivo SPP. Probé la demostración de WCL y parecía funcionar mucho mejor. – JoelHess

-9

La mejor manera de conocer los dispositivos bluetooth y enviar archivos al dispositivo bluetooth desde su PC es usar ese código.

public void ExecuteCommandSync(object command) 
    { 
     try 
     { 
      // create the ProcessStartInfo using "cmd" as the program to be run, 
      // and "/c " as the parameters. 
      // Incidentally, /c tells cmd that we want it to execute the command that follows, 
      // and then exit. 
      System.Diagnostics.ProcessStartInfo procStartInfo = 
       new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command); 

      // The following commands are needed to redirect the standard output. 
      // This means that it will be redirected to the Process.StandardOutput StreamReader. 
      procStartInfo.RedirectStandardOutput = true; 
      procStartInfo.UseShellExecute = false; 
      // Do not create the black window. 
      procStartInfo.CreateNoWindow = true; 

      // Now we create a process, assign its ProcessStartInfo and start it 
      System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
      proc.StartInfo = procStartInfo; 
      proc.Start(); 

      // Get the output into a string 
      string result = proc.StandardOutput.ReadToEnd(); 
      // Display the command output. 
      Console.WriteLine(result); 
     } 
     catch (Exception objException) 
     { 
      // Log the exception 
      MessageBox.Show(objException.Message); 
     } 
    } 

Usted puede llamar a este método como

      string command = "fsquirt"; 
          ExecuteCommandSync(command); 

Por lo tanto, parece BluetoothFileTransferWizard y se puede elegir dispositivo disponible y enviar archivos para enviar a ese dispositivo. Si no quieres usar de esa manera, prueba 32feet.net.uk. Eso fue genial para el desarrollo de bluetooth para C# y VB.NET.