2008-09-28 39 views
31

Tôi đang trong quá trình viết máy quét Bluetooth định vị và nhận dạng các thiết bị di động trong vùng lân cận. Đây có phải là một cái gì đó mà tôi có thể thực hiện bằng cách sử dụng C#, hay tôi cần phải thả xuống các API C/C++? Ứng dụng của tôi đang nhắm mục tiêu Windows XP và Vista. Con trỏ được đánh giá cao.API Bluetooth trong Windows/.Net?

Cảm ơn!

Trả lời

25

Một vấn đề với Bluetooth trên PC là có một số ngăn xếp BT đang được sử dụng và bạn không bao giờ có thể biết được máy nào có sẵn trên một máy đã cho. Phổ biến nhất là Widcomm (nay là Broadcom) và Microsoft (xuất hiện trong XP, có thể là một trong các gói dịch vụ). Tuy nhiên, một số nhà cung cấp phần cứng BT gói BlueSoleil và một số sử dụng Toshiba. Hầu hết các thiết bị bảo vệ phần mềm sẽ hoạt động với ngăn xếp MS nên các thư viện .NET. Tôi đã thấy có xu hướng sử dụng nó.

Mỗi ngăn xếp có cách hoàn toàn khác để thực hiện phần khám phá nơi bạn duyệt tìm thiết bị lân cận và hỏi dịch vụ của họ.

Nếu tôi phải chọn một cách tiếp cận hôm nay, tôi có thể thực hiện khám phá trong C++ và thêm giao diện cho .NET.

Công cụ 32feet.net hoạt động khá tốt khi tôi thử nhưng không hỗ trợ chồng Widcomm.

+1

Ngoài ra, tôi đã thử 32Feet trên Windows 10 và nhận được "32feet.NET không hỗ trợ ngăn xếp Bluetooth trên thiết bị này. " Tôi đã báo cáo vấn đề này, nhưng có vẻ như dự án đã không được cập nhật trong một vài năm ... – LawMan

+0

@LawMan Tôi gặp sự cố tương tự với Windows 10. Nguyên nhân là do Bluetooth đã bị tắt. –

+0

@Juozas Kontvainis Đó là điều đầu tiên tôi kiểm tra. Mặc dù mã của tôi sẽ ghép nối thiết bị nếu nó không được ghép nối (hoặc ít nhất là nó được sử dụng để ... lol), tôi đảm bảo rằng Windows đã ghép nối thành công với thiết bị, sau đó thực thi mã của tôi. Ngoài ra, 32Feet vẫn chưa trả lời được vấn đề của tôi. Đây là liên kết vấn đề nếu có ai quan tâm. https: //32feet.codeplex.com/workitem/43236 – LawMan

3

API BlueTooth được quản lý duy nhất tôi có thể tìm thấy tham chiếu là here.

14

Ngoài ra còn có 32feet.net Peter Foot của

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

Tôi đã chơi xung quanh với lại này khi nó là v1.5 và nó làm việc tốt.

+0

Tôi đã sử dụng thư viện 32feet.net trên một cửa sổ ứng dụng di động và nó hoạt động thực sự tốt – tjjjohnson

7

Mike Petrichenko có khung BT đẹp. Nó hoạt động với BlueSoleil, Widcomm, Toshiba và Microsoft.

Nó bây giờ được gọi là Thư viện truyền thông không dây và hoạt động với Bluetooth 802.11 và Hồng ngoại. Mike đã đặt tên cho Công ty Dịch vụ Mềm của công ty và bán giấy phép phi thương mại và thương mại có và không có mã nguồn với giá dao động từ 100 đô la đến 2050 đô la.

+1

Tôi đã sử dụng 32feet cho một dự án và đã nhận được rất nhiều lỗi ngẫu nhiên khi kết nối với thiết bị SPP. Tôi đã thử bản demo của WCL và nó dường như hoạt động tốt hơn nhiều. – JoelHess

-9

Cách tốt nhất để biết thiết bị bluetooth và gửi tệp đến thiết bị bluetooth từ máy tính của bạn là sử dụng mã đó.

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

Bạn có thể gọi phương pháp này như

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

Vì vậy, BluetoothFileTransferWizard xuất hiện và bạn có thể chọn thiết bị có sẵn và gửi file cho gửi thiết bị đó. Nếu bạn không muốn sử dụng theo cách đó, hãy thử 32feet.net.uk. Điều đó thật tuyệt vời cho việc phát triển bluetooth cho C# và VB.NET.