[英]On my Bluetooth LE device, can I change an attribute of a characteristic on a peripheral device?
[英]Accessing bluetooth LE device
我有蓝牙LE模块rn4020 http://www.microchip.com/wwwproducts/Devices.aspx?product=RN4020 ,我已成功将其配对并连接到WP8.1,但无法通过以下代码找到它:
private async void ScanDevices()
{
lstDevices.Items.Clear();
string genericUUID = GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.GenericAccess);
foreach (DeviceInformation di in await DeviceInformation.FindAllAsync(genericUUID))
{
BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(di.Id);
lstDevices.Items.Add(new MyBluetoothLEDevice(bleDevice));
}
}
我把这个加法体现出来了:
<Capabilities>
<m2:DeviceCapability Name="bluetooth.genericAttributeProfile">
<m2:Device Id="any">
<m2:Function Type="serviceId:1803" />
</m2:Device>
</m2:DeviceCapability>
Foreach不返回任何设备。 所以我的问题是,是否有人知道我忘记或做错了什么(模块也可能是问题,但我认为在配对/连接时不会出现问题)。
如果没有一个完整的可重现场景(当方程式的一半是您的BLE设备时,这很困难),就不可能确定您的代码中存在哪些问题。 但是,在我看来,最明显的问题是错误的服务ID的规范。
在您的代码中,您正在搜索GattServiceUuids.GenericAccess
。 这对应于GUID {00001800-0000-1000-8000-00805f9b34fb}
或简短的GATT UUID 0x1800
。 但是在清单中,您指定的是serviceId:1803
。
根据蓝牙文档 ,ID 0x1803甚至不对应于已知服务。
在Windows RT中,您实际上可以按名称指定通用访问配置文件 ,例如<m2:Function Type="name:genericAccess" />
。 我不知道Windows Phone是否支持相同功能,但是值得尝试。 否则,您应该指定实际的正确ID 0x1800
。
还要注意,我不确定Windows Phone是否在清单中允许短ID。 如果name:genericAccess
或serviceId:1800
不起作用,则应如上所述指定完整的GUID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.