首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dbus & Bluez编程语言

Dbus & Bluez编程语言
EN

Stack Overflow用户
提问于 2015-09-28 13:57:58
回答 2查看 2K关注 0票数 4

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

我和我的上级对我是否应该使用Python或C进行了争论。他的一个论点是,使用Python建立蓝牙LE连接时存在不可接受的开销,而蓝牙LE必须非常及时才能正常工作。我的论点是,开销并不重要,因为蓝牙连接没有时间限制;应用程序将找到设备,连接到特定的设备,并读取一些属性,并将其保存到文件中。

我的问题是,对于一个读取GATT服务及其特性的基本应用程序,是否有理由更喜欢使用低级别的C方法而不是使用高级Python实现?这对嵌入式设备意味着什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-30 08:10:02

这是一个相当开放的问题,因为在作出这一决定时有许多事情要考虑。因此,最好的“答案”可能是试图缩小讨论范围:

基于这个问题,我假设您所针对的系统具有具有所有所需依赖项的D总线和Python。

我试图通过首先决定使用什么BlueZ API来缩小讨论范围。如果您计划使用D总线API而不是lib蓝牙C库API,那么已经存在由此带来的一些开销,我不认为Python本身就是主要的因素。当然,应该对此进行测量/评估,以确定这一点,但排除在仍然使用D总线的同时使用Python可能是一个不成熟的优化,在实践中不会有太大影响。

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

如果“及时的态度”因素是非常重要的,我相信你最终将需要有方法来衡量业绩无论如何。那么,也许这两种设计方案的概念证明才是真正做出决定的最佳方法。

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

票数 3
EN

Stack Overflow用户

发布于 2016-01-11 09:05:30

更需要考虑的是:

  1. 最新的BlueZ。( 5.36+),BLE应该工作得很好,并且对我来说非常稳定--并记住在构建它时添加“实验性”,并将"-E“作为服务参数来获得manufacturerData (和其他实验特性)。
  2. 使用C,我认为您的代码必须是GPL (不是100%肯定)。DBus接口允许您编写封闭的源代码(如果是为公司编写的话)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32824889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档