- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个在使用 bluez d-bus api 的 Raspberry Pi 上运行的 C++ 应用程序。它支持来自不同供应商的多个传感器,但在大多数情况下,一旦我开始使用第一个传感器,添加新传感器就相当简单了。连接后我并没有真正使用任何太奇特的东西,只是“StartNotify”、“StopNotify”、“ReadValue”和“WriteValue”。不管怎样,最近我在添加几个新传感器时遇到了问题。两者都使用更大的数据包大小,因此使用数据包嗅探器我可以看到传感器协商更大的 MTU。无论出于何种原因,尽管在协商后我可以读取更大的值(value)特征,但无法启用(或无论如何接收)通知。使用 bluetoothctl 尝试不同的方法,我发现使用“acquire-notify”似乎可以解决问题。我还注意到新的“获取”命令返回 MTU,所以这可能与它有关。回到我已经支持的传感器,我还发现用“AcquireNotify”替换“StartNotify”似乎也适用于它们。所以我的犹豫是对所有传感器使用“AcquireNotify”(让我的代码更清晰)还是只对给我带来问题的新传感器使用。
不幸的是,我还没有真正找到任何关于新“获取”接口(interface)的深入文档。对于没有太多 bluez 历史的人来说,根本不清楚使用它们与原始界面相比的后果是什么。所以我的问题是双重的 -
非常感谢任何信息,谢谢!
最佳答案
AcquireNotify
返回一个您可以轮询和读取的文件描述符,并且通知不会通过 d-bus。使用 StartNotify
您可以从 d-bus 读取通知值。如果您在 GATT 通知中发送大量数据,您将能够使用文件描述符(并且没有 d-bus)获得更好的性能。
AcquireNotify/AcquireWrite 是相对较新的 API,它们存在一些稳定性问题(bluetoothd 可能因 SIGPIPE 而终止)。在他们的存储库中有一些 bluez 5.50 的补丁可以改进它。
关于linux - Bluez D 总线, "StartNotify"与 "AcquireNotify",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53454090/
有时我必须检查互联网连接并为此使用“可达性”。 最好使用“可达性”手动检查互联网连接,例如: BOOL status = ([[Reachability reachabilityForInternet
我得到这个错误:可达性没有可见的@interface 声明选择器 startNotifier 我已经包含了 Reachability.h 和 .m 文件。我对 Objective-C 非常陌生,错误可
我的 Reachability 完全按照此 thread 中的建议工作. 我正在使用 open source Reachability .但是我没有使用 block 而是使用通知,因此该过程与 App
我有一个在使用 bluez d-bus api 的 Raspberry Pi 上运行的 C++ 应用程序。它支持来自不同供应商的多个传感器,但在大多数情况下,一旦我开始使用第一个传感器,添加新传感器就
我是一名优秀的程序员,十分优秀!