我正在 Android(移动设备 A)上执行 UUID 过滤扫描,并且有两个测试用例。
一个人在另一台 Android 设备(移动设备 b)上使用名为 BLE Scanner 的应用程序来创建具有两个测试服务(每个服务都有自己唯一的 UUID)的 BLE 服务器。另一种是通过 Arduino BLE 服务器,并为其服务提供自定义 UUID。
如果我使用移动设备 B 的 BLE 扫描仪应用程序并扫描 arduino,我可以找到它、连接到它并查看服务以及每个服务的 UUID。它具有通用属性、通用访问权限和自定义服务(我设置的服务)。那太好了。
如果我使用移动设备 A 并使用三个服务(通用属性 UUID、通用访问 UUID 和自定义服务 UUID)执行 BLE 过滤扫描,则 Arduino 根本不会显示在扫描中。
如果我使用移动设备 A 并使用通过移动设备 B 上的 BLE 扫描仪应用程序创建的测试服务器中的 UUID 执行 BLE 过滤扫描,则移动设备 B 的 BLE 服务器确实会显示在扫描中。
所以我很困惑。移动设备 A 的过滤扫描似乎可以找到通过 BLE 扫描器应用程序创建的服务器,并分配由 BLE 扫描器应用程序创建的自定义 UUID,但对于 Arduino BLE 服务器,它无法显示。
是否可能是因为 BLE 扫描器应用程序不执行过滤扫描来查找/连接到它能够工作的 Arduino BLE 服务器?在哪种情况下,不可能使用 Arduino 上的已知服务 UUID 进行过滤扫描?或者是否有我丢失的隐藏 UUID,或者 UUID 是否需要包含在广告数据/制造数据中?
事实证明,差异是由于未能在过滤器扫描中显示的设备是因为广告数据中没有设置/提供 UUID,因此扫描只是将其全部排除。
一旦我将 UUID 添加到广告数据中,它就会显示在扫描中。
就我而言,我必须遵循此处的 Arduino BLE 库示例。https://github.com/nkolban/ESP32_BLE_Arduino/blob/master/examples/BLE_server/BLE_server.ino https://github.com/nkolban/ESP32_BLE_Arduino/blob/master/examples/BLE_server/BLE_server.ino
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)