当前位置: 首页 > 知识库问答 >
问题:

(Dis)将蓝牙设备与Windows连接。设备。蓝牙。Rfcomm(WP8.1)

太叔涵亮
2023-03-14

连接和断开蓝牙设备在Windows Phone/Desktop 8.1上产生了各种结果。我一直在使用Windows。设备。蓝牙。Rfcomm命名空间和我尝试连接具有不同蓝牙版本/类的几个设备。

  • 版本1.2(1级和2级)

每当我尝试连接到2.0或2.1设备时,都会出现问题。第一次尝试连接到每个设备时,一切都会顺利,连接也会打开。当我随后关闭连接并重新连接设备时,问题就开始了。在重新连接期间,连接将永远不会打开,调试器将抛出一个系统。例外:

> Message: No further data is available.

此外,当连接失败时,Windows 8.1设备将继续尝试(未成功)自行连接到蓝牙设备,即使我自己的应用程序已终止。有时,Windows 8.1设备也会将蓝牙设备显示为已连接,而该设备会在视觉上显示它已不再连接。重新连接蓝牙设备的唯一方法是将其拔出,然后在Windows设备上关闭/重新启动蓝牙。

每当我在连接失败后尝试重新调用设备信息时,它都会拒绝返回我之前尝试连接的设备。

> Message: The service cannot be found in the specified name space.

奇怪的是,1.2设备工作正常。

清单文件:

<m2:DeviceCapability Name="bluetooth.rfcomm">
  <m2:Device Id="any">
    <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
  </m2:Device>
</m2:DeviceCapability>

选择设备:

Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));

正在连接:(id=chatserviceid)

StreamSocket _socket;    
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);

断开连接:

this._socket.Dispose();
this._socket = null;

我研究了MSDN、代码示例、演示、channel-9视频和StackOverflow,没有任何资源可以告诉我Windows是否存在问题。设备。蓝牙。Rfcomm。

有没有人认识到这些奇怪的结果?我做错什么了吗?

>

  • 这里也观察到类似的问题

    链接到MSDN问题

    更新:使用Windows Phone 8.1 GDR2是一种可能的解决方案。

    注意:对于我自己和其他几个人来说,这个更新仍然给出了相同的问题。

  • 共有1个答案

    唐景山
    2023-03-14

    我会试试CoolTerm,看看这对你是否有效。我在通过USB连接将扬声器与Sigma DSP芯片连接时遇到了类似的问题,因此如果您在查看外部设备时遇到问题,可能是该设备与您的计算机不兼容。下载CoolTerm并转到options(选项),在Serial Port(串行端口)下,您应该将端口更改为所需的连接(蓝牙、usb等),然后根据需要编辑选项,然后转到主窗口,点击connect(连接),查看它是否适合您。

     类似资料:
    • 连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的

    • 连接蓝牙设备 接口说明 接口需传入蓝牙名称(蓝牙address重启后会变) 参数说明 字段 类型 必须? 说明 name String 是 设备名称 举个大栗子 RokidMobileSDK.binder.connectBT(name, new IBTConnectCallBack() { @Override public void onConnectSucceed(BTDevic

    • 我如何获得Android所有已连接蓝牙设备的列表,而不考虑配置文件? 或者,我看到您可以通过BluetoothManager获取特定配置文件的所有连接设备。获取连接的设备。 我想我可以通过ACTION_ACL_CONNECTED/ACTION_ACL_DISCONNECTED监听连接/断开来查看哪些设备连接...似乎容易出错。 但我想知道是否有更简单的方法来获取所有已连接蓝牙设备的列表。

    • 我正在开发一款连接蓝牙物联网设备的Flitter应用程序。我正在使用Flatter_blue图书馆。该库允许扫描附近的蓝牙设备。基于该扫描,您可以“连接”到设备。没有与设备配对的概念。 根据我以前在手机上使用蓝牙的经验(连接到我的汽车和蓝牙扬声器时),我必须在Android操作系统上配对设备。 我很好奇,从高层次上讲,配对设备和连接设备之间有什么区别。此外,更具体地说,在操作系统内配对设备与扫描并

    • 我想连接第三方蓝牙设备到我的Android Wear手表(三星Gear Live)。我试图找到留档如何做到这一点,但我没有任何运气。所有的搜索,我似乎都认为我想连接到手机上。 有谁知道一个很好的例子来演示如何将蓝牙心率监视器(或其他设备)连接到Android Wear,以便我在手机不存在时保存历史记录?这可能吗?它是否与从手机/平板电脑上执行相同的协议?

    • deviceName String deviceId String