对于我正在做的一个项目,我必须将我的Linux连接到一个蓝牙设备上。我设计的应用程序在完成后将部署在ARM嵌入式系统上。在线搜索文档提示,这类应用程序的首选编程语言是Python。所有的Bluez /test示例都是用Python编写的,关于在Python中创建BLE应用程序有很多信息来源。没有那么多在C.
我和我的上级对我是否应该使用Python或C进行了争论。他的一个论点是,使用Python建立蓝牙LE连接时存在不可接受的开销,而蓝牙LE必须非常及时才能正常工作。我的论点是,开销并不重要,因为蓝牙连接没有时间限制;应用程序将找到设备,连接到特定的设备,并读取一些属性,并将其保存到文件中。
我的问题是,对于一个读取GATT服务及其特性的基本应用程序,是否有理由更喜欢使用低级别的C方法而不是使用高级Python实现?这对嵌入式设备意味着什么?
发布于 2015-09-30 08:10:02
这是一个相当开放的问题,因为在作出这一决定时有许多事情要考虑。因此,最好的“答案”可能是试图缩小讨论范围:
基于这个问题,我假设您所针对的系统具有具有所有所需依赖项的D总线和Python。
我试图通过首先决定使用什么BlueZ API来缩小讨论范围。如果您计划使用D总线API而不是lib蓝牙C库API,那么已经存在由此带来的一些开销,我不认为Python本身就是主要的因素。当然,应该对此进行测量/评估,以确定这一点,但排除在仍然使用D总线的同时使用Python可能是一个不成熟的优化,在实践中不会有太大影响。
如果要使用C库API以避免D总线开销,那么我认为您应该始终使用C作为客户机。
如果“及时的态度”因素是非常重要的,我相信你最终将需要有方法来衡量业绩无论如何。那么,也许这两种设计方案的概念证明才是真正做出决定的最佳方法。
如果时间限制在实践中被证明是一个没有意义的问题,那么其他方面应该考虑更多,例如开发的容易程度(文档和可用的示例)、可测试性等等。
发布于 2016-01-11 09:05:30
更需要考虑的是:
https://stackoverflow.com/questions/32824889
复制相似问题