Android蓝牙串口RFCOMM低波特率/慢速传输

我正在开发Android蓝牙项目,以便从定制硬件发送和接收数据。 我在SDK中使用蓝牙聊天示例作为基础。

我意识到无法改变客户端(Android手机)的波特率,波特率取决于硬件。 我尝试在硬件上设置不同的波特率 ,但都没有达到我们的预期;

我能获得的最快速度是91Kbps(当波特率设置为2.7Mbps~910Kbps时)。 使用最小波特率(115Kbps)我得到43Kbps。 我尝试使用不同的手机,它是一样的。 我需要每秒将170KB数据传输到硬件。


产品规格
协议 :使用最大520字节大小的包将同步或生成的数据发送到硬件。 收到并批准每个包后,硬件发送validation命令,然后电话发送下一个数据包。
客户端 :Android 2.3.3,三星galaxy w i8150,蓝牙v3.0,RFCOMM
硬件 :自定义,蓝牙v2.1 BlueGiga WT11i


我完全糊涂了..这可能是手机上的Android或蓝牙设备引起的问题吗? 我想知道最大波特率是多少? 有没有办法加快传输速度(如增加最大包大小,或发送所有包而不等待硬件validation命令)。


编辑
将包大小更改为4160字节后,吞吐量已增加到254Kbps。 我试图找出最佳封装尺寸达到1.5Mbps。 我很感激任何建议

首先,改变蓝牙RFCOMM /串行端口协议的波特率应该没有什么区别,因为它不是真正的串行端口而只是模拟 。 (具体的制造商可以这么特别,但一般的蓝牙或Android不使用参数来控制空中比特率)

影响数据速率超过SPP的因素将是数据包大小,您可以通过蓝牙获得的实际最大数据速率以及接收器读取的速度/发送方发送的频率。 对于数据包大小,您可以查看内部文档或尝试不同的大小以达到应用程序的最佳数量。 此外,我建议发送多个数据包 (或全部),直到流可以连续发送数据,类似地连续读取。

这里的主要问题似乎是你可以通过蓝牙实现的实用组合 。 如果你正在使用你在问题中提到的非EDR版本,那么非常低级别的理论速度是720Kbps ,并且在头部添加协议和应用程序以及RFCOMM协议开销可以达到最大450-500 Kbps

如果您可以访问两个+ EDR即蓝牙版本2.0或更高版本+ EDR的设备,那么您可以预期应用程序throuput大约1.2到1.5 Mbps(理论上空中比特率为2.0或3.0 Mbps)