【发布时间】:2017-09-27 12:35:50
【问题描述】:
对于一个学生项目,我们正在努力将蓝牙 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]
具有十六进制值、布尔值或日期时间的值,没有明确的标识符。我们有没有办法使用 Swift 向设备发送消息以更改该 uuid 中的值,或者这不可能?
【问题讨论】:
-
您能打印出您感兴趣的特征吗?服务不应该有“活着”,一个特性可能有它,比如订阅它的变化的可能性(
setNotify:())。也许还有一个字符来改变模式。 -
您可以使用 App Store 中的 LightBlue 应用来探索外围服务和特性
-
@Larme 抱歉回复。在上个月的过程中深入研究它向我们表明,它只是一个表明它还活着的信号。它还使用盐进行内部加密。经过一段时间的研究,我们做了以下工作: 打印每个服务 打印每个特征 记录蓝牙流量并分析它 到目前为止,我们还没有“进入”,但我们已经到了它对我们有用的地步.
标签: swift bluetooth bluetooth-lowenergy core-bluetooth