编程语言
首页 > 编程语言> > java – Android蓝牙串口RFCOMM低波特率/慢速传输

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

作者:互联网

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

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

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

产品规格

协议:使用最大520字节大小的包将同步或生成的数据发送到硬件.收到并批准每个包后,硬件发送验证命令,然后电话发送下一个数据包.

客户端:Android 2.3.3,三星galaxy w i8150,蓝牙v3.0,RFCOMM
硬件:自定义,蓝牙v2.1 BlueGiga WT11i

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

Edit
After changing the package size to 4160 Bytes, Throughput has
increased to 254Kbps. I’m trying to figure out the optimum package
size to reach 1.5Mbps. I appreciate any suggestions

解决方法:

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

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

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

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

标签:java,android,bluetooth,connectivity,rfcomm
来源: https://codeday.me/bug/20190620/1245763.html