我正在尝试让我的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);
}
但这并没有给出任何有意义的清单。
我有一种感觉我做错了。请让我回到正轨。
答案 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似乎不支持它。)