我正在尝试为Win 8.1 PC开发一个应用程序来与我的BLE设备进行通信。我在Win 8中看到没有类似BLE的扫描功能,所以我从MS中读了一些例子并尝试使用UUID简单连接到我的设备:“A9DA45B4-34F8-C660-591D-F6918B5B988C”
所以我根据ms示例编写了一些代码:
var devices = await DeviceInformation.FindAllAsync(
GattDeviceService.GetDeviceSelectorFromUuid(new Guid("A9DA45B4-34F8-C660-591D-F6918B5B988C")), new string[] { "System.Devices.ContainerId" });
if (devices.Count > 0){
//Do something
}
但是这段代码总是返回我的空设备列表。此外,我仍然可以通过Android或iOS应用程序连接我的设备。
有人能告诉我这是否是连接BLE的好方法?
答案 0 :(得分:4)
转到设置 - >更改电脑设置 - > - > PC和设备 - >蓝牙。
确保您的设备可被发现,然后建立连接。
完成后再试一次,如果仍然无效,请尝试使用以下代码:
var devices = await DeviceInformation.FindAllAsync(
GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.GenericAccess));
devices.Count应至少返回1.
答案 1 :(得分:2)
就我而言,有三件事是错误的。
如果您打算在Windows 8.1上使用BLE,请首先确保您拥有
Bluetooth LE Enumerator
在您的设备管理器中,如果没有去PC /笔记本电脑制造商并重新安装驱动程序,直到您在设备管理器中找到BLE枚举器!
其次,正如Peter Duniho所说,在你做任何其他事情之前,先手动配对你的设备。 Windows没有像扫描功能那样的东西,所以在你尝试连接之前,首先配对它。
最后,引用Alexandru,Windows BLE就像" Wild West"。有几次,当我尝试将我的设备与Windows配对时,我收到了消息" Windows无法配对您的设备,请确保它仍然可被发现"。 为了省略这一步,我增加了我的设备上的每个制造商时间(我认为当Windows试图配对我的设备后,认为没有发生任何事情,因为太长的延迟,它进入睡眠模式或拒绝连接)所以你必须耐心。首先,将每个超时设置为MAX值,然后关闭睡眠模式和节能模式。
此外,我可以确认以下代码正常工作:
var devices = await DeviceInformation.FindAllAsync(
GattDeviceService.GetDeviceSelectorFromUuid(new Guid("A9DA45B4-34F8-C660-591D-F6918B5B988C")), new string[] { "System.Devices.ContainerId" });