You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows 10中通过.Net为蓝牙适配器添加RFCOMM串口设备

问题描述

我希望在Windows系统中通过.NET使用蓝牙串口,尝试用以下代码扫描设备:

var devices = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));

已经在Package.appxmanifest的<Capabilities>节点中添加了权限配置:

<m2:DeviceCapability Name="bluetooth.rfcomm">
  <m2:Device Id="any">
    <m2:Function Type="name.serialPort"/>
  </m2:Device>
</m2:DeviceCapability>

但全新安装蓝牙适配器后,代码无法列出串口设备;运行MyPhoneExplorer应用后,能通过相同代码找到名为“MyPhoneExplorer”的RFCOMM设备,但卸载重装蓝牙适配器后该设备又消失。请问如何为蓝牙适配器添加可被上述代码检测到的RFCOMM串口设备?

解决方案

1. 启用蓝牙适配器的SPP服务

  • 打开设备管理器,展开“蓝牙”节点,右键点击你的蓝牙适配器,选择“属性”
  • 切换到“服务”选项卡,勾选“串行端口(SPP)”服务,点击“确定”后系统会自动安装对应串口驱动
  • 重启电脑后重新运行代码扫描

2. 手动注册RFCOMM串口服务

如果设备管理器中无SPP服务选项,可通过注册表手动添加:

  • 按下Win+R输入regedit打开注册表编辑器
  • 导航到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Services
  • 右键Services项,新建“项”,命名为00001101-0000-1000-8000-00805F9B34FB(RFCOMM串口服务的标准UUID)
  • 在新建项中,右键新建“字符串值”,命名为Name,值设为Serial Port
  • 新建“DWORD(32位)值”,命名为Security,值设为0
  • 禁用再启用蓝牙适配器,或重启电脑

3. 确保蓝牙设备配对并建立连接

  • 先通过Windows设置的“蓝牙和设备”完成目标蓝牙设备的配对
  • 部分蓝牙设备需要主动发起一次SPP串口连接,才会在系统中注册对应的RFCOMM服务,可尝试用串口工具发起连接后再扫描

4. 校验应用权限配置完整性

  • 确认Package.appxmanifest的根节点Package已添加命名空间声明:xmlns:m2="http://schemas.microsoft.com/appx/manifest/foundation/windows10/2"
  • 检查Capabilities节点下的配置无拼写错误,Type属性的name.serialPort是正确的RFCOMM服务类型

5. 兼容型扫描代码

如果以上方法无效,可尝试枚举所有RFCOMM设备再过滤串口服务:

var allRfcommDevices = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector());
foreach (var device in allRfcommDevices)
{
    var service = await RfcommDeviceService.FromIdAsync(device.Id);
    if (service?.ServiceId == RfcommServiceId.SerialPort)
    {
        // 找到目标串口设备
        Console.WriteLine(device.Name);
    }
}

内容的提问来源于stack exchange,提问作者user20138168

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:10:40