swift - “激活”蓝牙 LE 能源数据流

标签 swift bluetooth bluetooth-lowenergy core-bluetooth

对于一个学生项目,我们正在努力将蓝牙 LE 设备(同时进行传输和接收)连接到 iPhone 或 iPad,以便从中读取数据并实时显示给用户。我们有证据表明制造该设备的公司可以做到这一点,并且我们实际上已经成功建立连接并获取一些数据..但是它每 5-10 秒 ping 一次,并且似乎是数字的随机子集,变化很小在更改设备上的某些内容后,我们却一无所知。

现在,当然,我们首先找到了制造设备和应用程序的公司,我们确实获得了使用他们硬件的批准,但无法从他们那里获得 SDK/API 来与应用。因此,我们的计划是自己解决问题并找到我们需要的东西。

这就是我们陷入困境的地方。我们有以下内容:

  • 基于名称或蓝牙设备地址的连接
  • 扫描服务(如果服务中包含 CoreBluetooth 文档中指定的服务,则进行级联扫描)
  • 读取所述服务的特征。
  • 将值解密为 8 位 UInt,以便我们获得一些实际可读的数据。

这是我们所获得的值仍保持原样的示例。

Service: 0x1c0476440, is Primary = yes. UUID: 058d0001-ca72-4c8b-8084-25e049936b31
value <53636da1 7a616c74 73616c74 73616c74 73616c27>

现在,看看这一切,我认为这里的服务是某种“保持事件”ping,它提供了一些有关设备当前状态的辅助信息。

我们的问题归结为:

我们如何进一步“探索”该设备?除此之外,我们似乎没有获得任何额外的输出,但是从 Windows 中查看设备管理器,我们得到了一些如下所示的结果(示例):

 {058d0001-ca72-4c8b-8084-25e049936b31}[6]

其值可以是十六进制值、 bool 值或日期时间,没有明确的标识符。有没有办法让我们使用 Swift 向设备发送消息来更改该 uuid 中的值,或者这是不可能的?

最佳答案

虽然现在已经解决了,但我不接受这个答案。我的解决方案?尝试一些事情。愚蠢的“干草堆里的针”事情。

我将 uuid 从 058d0001-ca72-4c8b-8084-25e049936b31 更改为 058d0002-ca72-4c8b-8084-25e049936b31

瞧。我可以做得更多。我尝试了 3 次,再次得到了新结果和工作数据流...

@Paulw11 的评论也是解决我们发现的这个问题的好方法。

关于swift - “激活”蓝牙 LE 能源数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46448049/

相关文章:

支持 HID 的蓝牙 USB 智能加密狗

javascript - react native 扫描蓝牙设备

swift - 循环数组,删除唯一值,只留下重复项

ios - HeaderView 按钮以编程方式转到另一个 View Controller

ios - 我怎样才能拥有类似于AirBNB iOS App上的UIScroll效果,如下图所示

android - cordova 蓝牙音箱没有声音

android - 有 Bluedroid 测试或示例代码吗?

bluetooth-lowenergy - BLE scan() 不返回完整的广告负载

Android 应用程序在扫描 iBeacons 的后台服务上非常不稳定

swift - 在核心数据中检索具有已过滤子级的父级