【问题标题】:the data that i received is not like the original data我收到的数据与原始数据不同
【发布时间】:2018-03-08 09:33:55
【问题描述】:

我正在尝试在未连接到 ble 传感器的情况下接收广告数据,我使用了onScanResult 功能。我logcat 结果然后我得到:

 ScanResult{mDevice=A4:34:F1:3A:AF:XX, mScanRecord=ScanRecord 
 [mAdvertiseFlags=6, mServiceUuids=null, mManufacturerSpecificData={}, 
 mServiceData={}, mTxPowerLevel=-2147483648, mDeviceName=XXXX], 
 mRssi=-67, mTimestampNanos=1445086508079000}

mDevice 和 mDeviceName 和 mRssi 是正确的,然后我尝试获取 mScanRecord,它是字节数组格式,我尝试将其转换为十六进制表示:然后我得到了这个结果

02010606094D734F6E65000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000

第一个问题,数据只是第一次改变,然后一直这样,我收到的数据不像我用python脚本在RPI中测试的原始数据,这是在RPI中扫描的结果

a4:34:f1:3a:af:ab,54540400201818000e00000000000000,-74
a4:34:f1:3a:af:ab,5252040313061f015500050000020001,-84

谢谢你帮助我

【问题讨论】:

  • 你的问题可能真的存在于任何地方,我会从源头开始,并确保被通告的数据包是有效的。当您未与设备配对时,您会收到 ADV 数据包,请参阅数据包结构 here。 Android 库需要一个有效的结构,在我的例子中,我们的自定义设备宣传了错误的数据包长度。您还应该提供更多信息,例如源代码、您使用的 android 版本和库、代码 sn-p 等。这里很少有信息可以缩小问题范围。

标签: android bluetooth-lowenergy


【解决方案1】:

我注意到的第一件事是你的数据包中的6E 说 ADV 数据包有 110 字节的有效负载数据,这在技术上是不可能的或者没有意义。假设0201 是您的标头(2 个字节)并且0606094D734F 是设备地址(6 个字节)是正确的。您可以通过使用其他扫描仪(如您的树莓派)扫描您的数据包来仔细检查它。

如何查看这个答案; https://stackoverflow.com/a/22569917/1505341

那里接收到的数据包结构有问题。为了确定,我还会在 android 甚至 iOS 上使用 BLE 扫描仪应用程序对其进行检查。据我所知,北欧有一个很好的。不知道现在扫描原始 BLE 数据包的最佳应用是什么。

【讨论】:

  • 感谢您的回答,当我使用 Linux 扫描时,我收到以下数据:HCI 嗅探器 - 蓝牙数据包分析器版本 5.37 设备:hci0 snap_len:1500 过滤器:0xffffffffffffffff 04 0E 04 02 1A 0C 00 我的发送和接收设备版本不一样。第一个是 5.0,最后一个是 4.1。它们之间有什么不兼容的地方吗?正如我听说他们不使用相同的数据包长度!是真的吗?先感谢您。我使用 Android 7.0 作为接收设备。
猜你喜欢
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多