2017-09-27 103 views
0

对于学生项目,我们正在将蓝牙LE设备(既传输又接收)连接到iPhone或iPad,以便从其读取数据以向用户显示实时。我们已经证明,制造该设备的公司可以做到这一点,并且我们实际上已经设法获得连接并获取一些数据。但是,它每隔5-10秒钟就会进行一次,似乎是一个随机数字子集,只需很少的更改在设备上改变了某些东西之后,这让我们不再聪明。'激活'蓝牙LE能量数据流

当然,我们去了制作设备和应用程序的公司,我们确实已经批准我们使用他们的硬件,但一直没有能够从他们那里获得SDK/API来使用它应用程序。所以,我们的计划是通过我们自己的方式来找到我们需要的东西。

这是我们陷入困境的地方。我们有以下几种:基于名称或蓝牙设备地址

  • 连接
  • 扫描服务(和级联扫描的情况下,作为CoreBluetooth文档中指定的服务将在其内部服务)
  • 阅读从上述特点服务。
  • 将值解密为8位UInt,以便我们获得一些实际可读的数据。

这是我们所用值还是因为它来自于得到了一个例子。

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

现在,看着这一切,我相信这里的服务是某种形式的“住活着'ping,并提供有关设备当前状态的一些辅助信息。

我们接下来的问题归结为:

如何才能进一步“探讨”的设备?我们似乎没有得到任何额外的输出除了这个然而,在设备管理器看,从窗户,我们得到了几个命中,看起来像这样(例):

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

它在任一十六进制值有值,布尔值或日期时间,但没有明确的标识符。有没有办法让我们发送消息给设备,使用Swift更改uuid中的值,或者这是不可能的?

+0

您可以打印您感兴趣的特征吗?该服务不应该有一个“保持活力”,它的一个特点可能就是它的变化,比如订阅可能性('setNotify :()')。也许是一个字符在哪里写改变模式。 – Larme

+0

您可以使用App Store中的LightBlue应用程序来探索外围设备服务和特性 – Paulw11

+0

@Larme抱歉回复。在上个月的过程中进一步深入研究表明,这只是一个表明它还活着的信号。它也用盐进行内部加密。它工作了一点,我们做了以下内容: 打印每一个服务 打印每一个特征 登录蓝牙交通和分析 到目前为止,我们还没有“中”,但我们正在向指出它对我们可用。 – Veraduxxz

回答

0

现在解决了,我不接受这个答案。我的解决方案尝试一下。愚蠢的'在哈伯莱针'的东西。

我从058d0001-ca72-4c8b-8084-25e049936b31到058d000 -ca72-4c8b-8084-25e049936b31

瞧改变的UUID。我可以做更多。我尝试了3,并且再次获得了新的结​​果和工作数据流...

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