2014-11-25 188 views
1

我试图让我的Windows平板电脑应用程序通过蓝牙与其他设备进行通信。列出并连接到蓝牙设备

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

我做了一个简单的测试应用程序:空白的首页,并添加一个按钮和一个listboxto它。然后我尝试了下面的代码女巫我别的forund那里这里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

我刚刚得到了一个小智者,为另一个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); 
    } 
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似乎不支持它。)