繁体   English   中英

访问蓝牙LE设备

[英]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:genericAccessserviceId:1800不起作用,则应如上所述指定完整的GUID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM