Python蓝牙传输速度?

时间:2011-02-01 14:27:36

标签: python bluetooth

在Python中,我使用LightBlue模块进行蓝牙连接。如何从笔记本电脑(Ubuntu)获取将文件发送到手机的速度?

3 个答案:

答案 0 :(得分:0)

说“python bluetooth speed”是不正确的,因为Python只是一种语言和执行运行时,与蓝牙无关。你应该告诉我们你使用什么Python扩展来使用蓝牙?您使用的蓝牙堆栈是什么?最终是操作系统?

使用lightblue你无法确定连接的速度,因为正如项目作者所说“提供对蓝牙操作的简单访问”,与PyBluez相同的另一个用于蓝牙的Python库你不能。由于我猜你使用套接字,你可以计算发送和接收的数据,所以你可以有一个合理的想法。

但要正确确定整个输入/输出流量,您应将自己置于HCI层级别的堆栈内并计入:

  • ACL - 数据
  • SCO - 发言
  • 命令
  • 活动

所以我的建议是使用已经构建的流量分析器,如WireShark。

更新

如果您在hci_lib.h中查看BlueZ文档,则有一个函数:

int hci_devinfo(int dev_id, struct hci_dev_info *di);

并且hci_dev_info结构包含您正在寻找acl_pkts和sco_pkts的信息,所以您应该做的是将它导出到Python这个BlueZ API函数并使用它:)

struct hci_dev_info {
uint16_t dev_id;
char     name[8];

bdaddr_t bdaddr;

uint32_t flags;
uint8_t  type;

uint8_t  features[8];

uint32_t pkt_type;
uint32_t link_policy;
uint32_t link_mode;

uint16_t acl_mtu;
uint16_t acl_pkts;
uint16_t sco_mtu;
uint16_t sco_pkts;

struct   hci_dev_stats stat;
};

答案 1 :(得分:0)

最简单的解决方案是确定文件的大小,在传输之前和传输之后捕获系统时间,然后进行数学运算。要计算在传输过程中更改的更细粒度的传输速率,您需要使用传输缓冲区的大小和发送之间的时间间隔。

答案 2 :(得分:-1)

您需要绑定处理蓝牙设备的蓝牙驱动程序/操作系统服务 大多数驱动程序是用C语言编写的,有些用C ++编写。如果您可以获得源代码/ API,或者如果提供了源代码/ API,您可以从python访问它。您可能需要为OS服务编写一些自定义绑定代码。