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

Unity下使用InTheHand 32Feet配对BrainLink显示已配对但无法连接

问题根因

你遇到的问题是32Feet库的默认配对逻辑和系统手动配对逻辑的差异导致的,核心原因有三个:

  • 手动通过系统蓝牙界面配对时,Windows会自动枚举BrainLink设备支持的所有蓝牙服务,为其SPP(串口仿真协议)服务分配对应的虚拟COM口,而Neurosky.ThinkGear库本质是通过读取虚拟COM口的数据完成设备连接,所以可以正常识别设备
  • 32Feet的BluetoothSecurity.PairRequest方法默认只完成蓝牙设备的身份认证配对,不会主动触发服务枚举步骤,导致系统不会为设备分配虚拟COM口,ThinkGear库找不到对应的串口自然无法连接
  • 你当前代码没有传入BrainLink的默认配对PIN,无PIN配对的授权等级不足,也会导致后续服务访问被系统拦截
修复方案

步骤1:补全配对PIN

BrainLink系列设备的默认配对PIN为0000,调用配对方法时传入该参数,保证配对授权等级符合要求:

bool paired = AttemptPair(btDevice, "0000");

步骤2:配对后主动触发SPP服务枚举

配对成功后手动调用接口枚举设备的SPP服务,强制系统完成虚拟COM口注册,修改后的AttemptPair方法参考:

private bool AttemptPair(BluetoothDeviceInfo btDevice, string pin = null)
{
    // 检查设备是否已配对
    if (btDevice.Authenticated)
        return true;

    bool result =  BluetoothSecurity.PairRequest(btDevice.DeviceAddress, pin);
    if (result)
    {
        // SPP服务的标准UUID,所有蓝牙串口设备通用
        Guid sppUuid = new Guid("00001101-0000-1000-8000-00805F9B34FB");
        try
        {
            // 主动查询SPP服务,触发系统注册虚拟COM口
            btDevice.GetServiceRecords(sppUuid);
            // 等待系统完成COM口注册,可根据实际情况调整等待时长
            System.Threading.Thread.Sleep(2000);
        }
        catch (Exception ex)
        {
            Debug.LogError($"服务枚举失败:{ex.Message}");
            return false;
        }
    }
    btDevice.Refresh();
    return result;
}

步骤3:检查Unity播放器权限

打开Unity的编辑 -> 项目设置 -> 播放器,切换到Windows平台配置,确保以下权限已开启:

  • 蓝牙权限
  • 专用网络访问权限
  • 允许提升进程权限

完成上述修改后重新测试,代码配对的设备就可以被ThinkGear库正常识别。

内容的提问来源于stack exchange,提问作者The Manly Fairy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:36:00