我正在做一个Android蓝牙项目,从定制的硬件发送和接收数据。我在SDK中使用了蓝牙聊天示例作为基础。
我意识到无法更改客户端(Android手机)上的波特率,波特率将取决于硬件。我尝试在硬件上设置不同的波特率,但没有一个达到我们的期望;
我能得到的最快速度是91Kbps(波特率设置为2.7Mbps~910Kbps时)。使用最小波特率(115Kbps),我得到43Kbps。我尝试使用不同的手机,这是相同的。我需要每秒将 170KB 的数据传输到硬件。
规格
协议:使用最大 520 字节大小的包将同步或生成的数据发送到硬件。硬件在收到并批准每个包裹后发送验证命令,然后手机发送下一个数据包。
客户端: 安卓 2.3.3, 三星银河 w i8150, 蓝牙 v3.0, 射频通信
硬件: 定制, 蓝牙 v2.1 蓝色千兆 WT11i
我完全糊涂了..可能是手机上的Android或蓝牙设备引起的问题吗?我想知道最特率是多少?有没有办法加快传输速度(例如增加最大包大小,或者在不等待硬件验证命令的情况下发送所有包)。
编辑
将包大小更改为 4160 字节后,吞吐量具有 增加到 254Kbps。我正在尝试找出最佳包装 大小达到 1.5Mbps。我感谢任何建议
更改蓝牙RFCOMM/串行端口协议上的波特率应该不会有什么不同,因为它不是真正的串行端口,而只是一个仿真。(特定的制造商可能会特别使用它,但蓝牙或Android通常不使用该参数来控制空中比特率)
影响 SPP 数据速率的因素将是数据包的大小、您可以通过蓝牙获得的实际最大数据速率以及接收器读取的速度/以及发送方发送的频率。对于数据包大小,您可以查看内部文档或尝试不同的大小以达到应用程序的最佳数量。此外,我建议发送多个数据包(或全部),直到流可以连续发送数据,类似地连续读取。
这里的主要问题似乎是您可以通过蓝牙实现的实际吞吐量。如果您使用您在问题中提到的非 EDR 版本,则非常低级别的理论速度为 720Kbps ,并且添加协议和应用程序开销以及 RFCOMM 协议开销,您可以获得最大约 450-500 Kbps。
如果您可以访问 +EDR 即蓝牙版本 2.0 或更高版本 + EDR 的两个设备,那么您可以期望应用程序吞吐量在 1.2 到 1.5 Mbps 之间(理论上的无线比特率为 2.0 或 3.0 Mbps)