2008-09-28 6 views
31

Ich schreibe gerade einen Bluetooth-Scanner, der mobile Geräte in der Nähe lokalisiert und identifiziert. Ist das etwas, das ich mit C# erreichen kann, oder muss ich in die C/C++ - APIs wechseln? Meine Anwendung zielt auf Windows XP und Vista ab. Zeiger sind willkommen.Bluetooth-APIs unter Windows/.Net?

Danke!

Antwort

25

Ein Problem mit Bluetooth am PC besteht darin, dass mehrere BT-Stacks im Einsatz sind und man nie genau wissen kann, welcher auf einem bestimmten Computer verfügbar ist. Die häufigsten sind Widcomm (jetzt Broadcom) und Microsoft (erschienen in XP, vielleicht eines der Service Packs). Einige Hersteller von Bluetooth-Hardware packen BlueSoleil und andere verwenden Toshiba. Die meisten Dongles werden mit dem MS-Stack arbeiten, so dass die .NET-Bibliotheken, die ich gesehen habe, diese verwenden.

Jeder der Stacks bietet eine völlig andere Möglichkeit, den Erkennungsteil zu verwenden, wo Sie nach Geräten in der Nähe suchen und deren Dienste abfragen können.

Wenn ich heute einen Ansatz wählen müsste, würde ich wahrscheinlich die Entdeckung in C++ machen und eine Schnittstelle für .NET hinzufügen.

Das 32feet.net-Zeug funktionierte ziemlich gut, als ich es versuchte, aber den Widcomm-Stapel nicht unterstützte.

+1

Außerdem habe ich 32Feet unter Windows 10 versucht und bekomme "32feet.NET unterstützt nicht den Bluetooth-Stack auf diesem Gerät. " Ich habe das Problem gemeldet, aber es sieht so aus, als ob das Projekt in ein paar Jahren nicht aktualisiert wurde ... – LawMan

+0

@LawMan Ich hatte ein ähnliches Problem mit Windows 10. Die Ursache war, dass Bluetooth ausgeschaltet war. –

+0

@Juozas Kontvainis Das war das erste, was ich überprüft habe. Obwohl mein Code das Gerät koppeln würde, wenn es nicht gepaart wäre (oder es zumindest mit ... lol), stellte ich sicher, dass Windows erfolgreich mit dem Gerät gepaart wurde und führte dann meinen Code aus. Außerdem muss 32Feet noch auf mein Problem reagieren. Hier ist der Link zum Thema, wenn jemand interessiert ist. https: //32feet.codeplex.com/workitem/43236 – LawMan

3

Die einzigen verwalteten BlueTooth-APIs, auf die ich verweisen konnte, sind here.

14

Es gibt auch Peter Foots 32feet.net

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

Ich habe mit diesem wiedergegeben um, wenn es v1.5 war und es hat gut funktioniert.

+0

Ich habe die 32feet.net-Bibliothek in einer Windows Mobile App verwendet und es funktioniert wirklich gut – tjjjohnson

7

Mike Petrichenko hat ein nettes BT-Framework. Es funktioniert mit BlueSoleil, Widcomm, Toshiba und Microsoft.

Es heißt jetzt die Wireless Communications Library und arbeitet mit Bluetooth 802.11 und Infrarot. Mike benannte die Firma Soft Service Company und verkauft nicht-kommerzielle und kommerzielle Lizenzen mit und ohne Quellcode in Preisen zwischen 100 und 2050 $.

+1

Ich war 32feet für ein Projekt und bekam eine Menge zufällige Fehler beim Anschluss an ein SPP-Gerät. Ich habe die Demo von WCL ausprobiert und es schien viel besser zu funktionieren. – JoelHess

-9

Die beste Art, Bluetooth-Geräte zu kennen und Dateien von Ihrem PC an ein Bluetooth-Gerät zu senden, ist die Verwendung dieses Codes.

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); 
     } 
    } 

Sie können diese Methode aufrufen, als

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

So BluetoothFileTransferWizard angezeigt und Sie können verfügbare Gerät wählen und Datei senden für dieses Gerät senden. Wenn Sie nicht auf diese Weise arbeiten möchten, versuchen Sie 32feet.net.uk. Das war großartig für die Bluetooth-Entwicklung für C# und VB.NET.