对于一个学生项目,我们正在努力将蓝牙 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/