列出并连接到蓝牙设备

时间:2014-11-25 07:23:55

标签: c# .net windows bluetooth windows-8.1

我正在尝试让我的Windows平板电脑应用通过蓝牙与其他设备进行通信。

首先,我想扫描设备,然后我想连接到选择的设备。

我制作了一个简单的测试应用:空白首页,并添加了一个按钮和一个列表框。然后我尝试了下面的代码,我已经在SO上发布了其他代码:

    ListBox1.Items.Clear();

    var devices = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));

    foreach (var device in devices)
    {
        ListBox1.Items.Add(device);
    }

但是列表只是空的

然后我尝试只是枚举设备并过滤掉不需要的设备:

var list = await DeviceInformation.FindAllAsync();
var uniqueList = new HashSet<string>();
var terminators = new List<string>() { "Audio", "Mixer", "Mic", "Realtek", "Usb", "Gmail,", "Line in", "Lyd", "Display", "surface", "@" };

foreach (var element in list)
{

    var strToken = element.Name.ToUpper();

    if (!uniqueList.Add(strToken))
        continue;

    var contains = false;

    foreach (var word in terminators)
        if (strToken.Contains(word.ToUpper()))
            contains = true;


    if (!contains)
        ListBox1.Items.Add(element.Name);
}

但这并没有给出任何有意义的清单。

我有一种感觉我做错了。请让我回到正轨。

2 个答案:

答案 0 :(得分:2)

我只是稍微有点聪明,我已经忘了另一个SO问题,告诉我它不可行。

Search and Connect to Bluetooth device in Windows 8/8.1 Store apps?

所以上市的解决方案是:

1)配对您的设备

2)列出他们:

ListBox1.Items.Clear();

    var devices = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));

    foreach (var device in devices)
    {
        ListBox1.Items.Add(device);
    }

答案 1 :(得分:2)

您是否设置了设备功能?您必须自己定义Id和Function类型。

有用的链接:How to set device capabilities.

 <m2:DeviceCapability Name="bluetooth.rfcomm">
  <m2:Device Id="any">
    <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
  </m2:Device>
</m2:DeviceCapability>

此外,您无法连接未配对的设备。 (Windows似乎不支持它。)