2017-10-13 188 views
-1

我正在开发Windows 10上的C#WinForms应用程序。我想执行蓝牙环境扫描并获取PC周围的设备列表。我也想要每个设备的RSSI。蓝牙扫描C#

我试过32feet库,但无法访问RSSI。

你有一个解决方案,或者我应该迁移到WPF/UWP?

+0

看看这个: https://stackoverflow.com/questions/34807308/bluetooth-discovery-and-signal-strength-rssi – khmub

+0

我假设你已经在对等设备信息的32feet文档下看到[RSSI部分](https://github.com/inthehand/32feet/wiki/Peer-Device-Information#rssi)。在Windows桌面上,您要求的内容可能不可能。 –

+1

@JeffBridgman谢谢,在Windows 7或Windows 7下,RSSI访问是不可能的。但可以通过Windows 10(我使用的平台)访问它。 我已经尝试过Windows 10上的32feet,并且RSSI似乎不起作用。我认为问题是32f库女巫不兼容。 –

回答

2

好的,我找到了一个解决方案here

  1. 您首先必须安装Windows10开发工具包。
  2. 然后在你的项目,你必须添加此库:

    C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd 
    

    或者你可以安装“UwpDesktop” NuGet包。

  3. 这适用于控制台应用程序,Winforms,WPF和UWP。

  4. 下面是一个简单的例子:

    using Windows.Devices.Bluetooth.Advertisement; 
    
    namespace BeaconExample 
    { 
        class Program 
        { 
         static void Main(string[] args) 
         { 
          var watcher = new BluetoothLEAdvertisementWatcher(); 
          watcher.Received += Watcher_Received; 
          watcher.Start(); 
         } 
    
         private static void Watcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args) 
         { 
          Console.WriteLine(args.BluetoothAddress.ToString("x") + ";" + args.RawSignalStrengthInDBm); 
         } 
        } 
    } 
    
+0

仅链接答案可能会有问题(因为链接可能会在以后中断)。如果您总结了解决方案的内容,对社区会有所帮助。例如,也许你必须选择一个不同的项目类型或平台......或者使用特定的nuget软件包......或者也许这个属性并不是你所期望的......所有有用的信息都会传给下一个这样的人题 :) –

0

BluetoothDeviceInfo device_info = device_info.Rssi.ToString();

+0

调用'ToString'的结果不能分配给'BluetoothDeviceInfo'类型的变量。我不认为这个代码会编译。 –