python - Dbus & Bluez 编程语言

标签 python c bluetooth-lowenergy dbus bluez

对于我正在进行的项目,我必须将我的 Linux PC 连接到蓝牙 LE 设备。我设计的应用程序完成后将部署在 ARM 嵌入式系统上。 在线搜索文档提示,此类应用程序的首选编程语言是 Python。所有 Bluez/test 示例都是用 Python 编写的,并且有很多关于在 Python 中创建 BLE 应用程序的信息来源。在 C 中不是那么多。

我的上司和我争论过我应该使用 Python 还是 C。他的一个争论是使用 Python 建立蓝牙 LE 连接时存在 Not Acceptable 开销,并且蓝牙 LE 必须非常及时才能功能正常。我的论点是开销不会那么重要,因为蓝牙 LE 连接没有时间限制;该应用程序将查找设备、连接到特定设备并读取一些属性,并将其保存到文件中。

我的问题是;对于读取 GATT 服务及其特征的基本应用程序,有什么理由更喜欢低级 C 方法而不是使用高级 Python 实现?这对嵌入式设备有何影响?

最佳答案

这是一个悬而未决的问题,因为在做出此决定时需要考虑很多因素。所以最好的“答案”可能是试图缩小讨论范围:

根据这个问题,我假设您的目标系统具有可用的 D-Bus 和 Python 以及所有需要的依赖项。

我会尝试通过首先决定使用什么 BlueZ API 来缩小讨论范围。如果您计划使用 D-Bus API 而不是 libbluetooth C 库 API,那么已经引入了一些开销,我认为 Python 本身不会是主要因素。这当然应该被测量/评估才能确定,但​​是在仍然使用 D-Bus 的同时排除 Python 可能是不成熟的优化,在实践中没有太大影响。

如果要使用 C 库 API 以避免 D-Bus 开销,那么我认为您应该始终为客户端使用 C。

如果“及时”因素非常重要,我相信您最终还是需要有衡量绩效的方法。那么也许两种设计选项的概念证明可能是真正做出决定的最佳方式。

如果时间限制在实践中被证明是一个没有实际意义的问题,其他方面应该更多地考虑,例如易于开发(提供文档和示例)、可测试性等。

关于python - Dbus & Bluez 编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824889/

相关文章:

python - 在 BaseHTTPServer 中启动守护进程

python - 如何在 PyCharm 中设置 ipython 配置文件

c - 将函数指针传递给 pthread_create 函数的 arg

c - 输出到多个终端

python - 在 while 循环中使用 python 的 core.Clock.GetTime() 方法 : timing distortions?

c - 如何通过 linux framebuffer 在屏幕上显示一些东西?

ios 核心蓝牙与外部 BLE 设备配对

ios - PIN 更改后连接到外围设备

bluetooth-lowenergy - 有没有办法在 BlueZ 中创建多连接 BLE 设备?

python - 为 Python argparse 使用字典