Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问蓝牙设备_C#_Windows Phone 8.1_Bluetooth Lowenergy - Fatal编程技术网

C# 访问蓝牙设备

C# 访问蓝牙设备,c#,windows-phone-8.1,bluetooth-lowenergy,C#,Windows Phone 8.1,Bluetooth Lowenergy,我有蓝牙LE模块rn4020,我成功地将其配对并连接到我的WP8.1,但我找不到具有以下代码的模块: private async void ScanDevices() { lstDevices.Items.Clear(); string genericUUID = GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.GenericAccess); foreach (De

我有蓝牙LE模块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不返回任何设备。所以我的问题是,如果有人知道我忘记了什么或做错了什么(模块也可能是问题,但我不认为我配对/连接它时没有问题)。

如果没有一个完整的可复制场景(这很难,当方程的一半是可复制的设备时),就不可能确定代码中存在什么问题。然而,对我来说,最明显的问题似乎是错误服务ID的规范

在代码中,您正在搜索
GattServiceUuids.genericacess
。它对应于GUID
{00001800-0000-1000-8000-00805f9b34fb}
,或缩写形式的GATT UUID
0x1800
。但在清单中,您指定的是
serviceId:1803

根据本发明,0x1803的ID甚至不对应于已知服务

在Windows RT中,您实际上可以,例如
。我不知道Windows Phone是否支持同样的功能,但值得一试。否则,您应该指定
0x1800
的实际正确ID


还要注意,我不确定Windows Phone是否允许在清单中使用短ID。如果
name:genericacess
serviceId:1800
都不起作用,则应如上所示指定完整的GUID。

如果没有完整的可复制场景(这很难,当等式的一半是可复制设备时),则无法确定代码中存在哪些问题。然而,对我来说,最明显的问题似乎是错误服务ID的规范

在代码中,您正在搜索
GattServiceUuids.genericacess
。它对应于GUID
{00001800-0000-1000-8000-00805f9b34fb}
,或缩写形式的GATT UUID
0x1800
。但在清单中,您指定的是
serviceId:1803

根据本发明,0x1803的ID甚至不对应于已知服务

在Windows RT中,您实际上可以,例如
。我不知道Windows Phone是否支持同样的功能,但值得一试。否则,您应该指定
0x1800
的实际正确ID


还要注意,我不确定Windows Phone是否允许在清单中使用短ID。如果
name:genericacess
serviceId:1800
都不起作用,则应如上所示指定完整的GUID。

感谢您的回复,但我尝试了所有建议,但均未成功。我会在windows RT中尝试,当我得到BLE usb加密狗和android手机,以确保模块工作。但我认为程序应该找到BLE设备,不管我在清单中输入了错误的GUID,只有当我尝试读/写它时,我才会得到错误。“我认为程序应该找到BLE设备,不管我在清单中输入了错误的GUID”-你们肯定错了。Windows使用清单来决定向用户公开哪些可扩展设备和服务。根据我的经验,即使清单中列出了设备/服务,Windows也会询问用户是否批准应用程序访问该设备。应用程序完全看不到清单中未列出的设备或服务。感谢您的回复,但我尝试了所有建议,但均未成功。我会在windows RT中尝试,当我得到BLE usb加密狗和android手机,以确保模块工作。但我认为程序应该找到BLE设备,不管我在清单中输入了错误的GUID,只有当我尝试读/写它时,我才会得到错误。“我认为程序应该找到BLE设备,不管我在清单中输入了错误的GUID”-你们肯定错了。Windows使用清单来决定向用户公开哪些可扩展设备和服务。根据我的经验,即使清单中列出了设备/服务,Windows也会询问用户是否批准应用程序访问该设备。清单中未列出的设备或服务对应用程序完全不可见。