Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android蓝牙串行RFCOMM低波特率/慢传输_Java_Android_Bluetooth_Connectivity_Rfcomm - Fatal编程技术网

Java Android蓝牙串行RFCOMM低波特率/慢传输

Java Android蓝牙串行RFCOMM低波特率/慢传输,java,android,bluetooth,connectivity,rfcomm,Java,Android,Bluetooth,Connectivity,Rfcomm,我正在做一个Android蓝牙项目,从定制的硬件发送和接收数据。我使用SDK中的蓝牙聊天示例作为基础 我意识到在客户端(Android手机)上无法更改波特率,波特率将取决于硬件。我尝试在硬件上设置不同的波特率,但没有一个符合我们的期望 我能得到的最快速度是91Kbps(当波特率设置为2.7Mbps~910Kbps时)。使用最小波特率(115Kbps),我得到43Kbps。我试过用不同的手机,结果都一样。我需要每秒传输170KB的数据到硬件 规格 协议:使用最大520字节的包将同步或生成的数据

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

我意识到在客户端(Android手机)上无法更改波特率,波特率将取决于硬件。我尝试在硬件上设置不同的波特率,但没有一个符合我们的期望

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


规格
协议:使用最大520字节的包将同步或生成的数据发送到硬件。硬件在收到并批准每个数据包后发送验证命令,然后手机发送下一个数据包。
客户端:安卓2.3.3、三星galaxy w i8150、蓝牙v3.0、射频通信
硬件:定制蓝牙v2.1 BlueGiga WT11i


我完全糊涂了。。这可能是手机上的安卓或蓝牙设备造成的问题吗?我想知道最大波特率是多少?是否有加快传输速度的方法(如增加最大包大小,或在不等待硬件验证命令的情况下发送所有包)


编辑
将包大小更改为4160字节后,吞吐量有所提高 增加到254Kbps。我想找出最合适的包装 大小达到1.5Mbps。我感谢你的建议

首先,更改BluetoothRFCOMM/串行端口协议上的波特率应该没有什么区别,因为它不是真正的串行端口,只是一个模拟。(特定制造商可能会对其进行特殊处理,但一般来说,蓝牙或Android不使用该参数来控制空中比特率)

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

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


如果您可以访问两种+EDR的设备,即蓝牙2.0版或更高版本+EDR,那么您可以使用1.2到1.5 Mbps(理论无线比特率为2.0或3.0 Mbps)的应用程序ThroupOut

您至少可以解释一下为什么会立即否决。谢谢你可以直接使用L2CAP插座,而不是Rfcoma。罪犯总是回到犯罪现场。谢谢你提供的信息。我仍然得到低喉的问题,但改变包的大小工作了一点。我能得到的最好数据是300Kbps。硬件使用Bluetooth v2.1+EDR,我假设手机(v3.0)不会成为这里的瓶颈。我仍然离数据传输的理想速度很远。我开始认为同时发送所有数据包和读取以进行验证(正如您所建议的)会很有帮助。我想就是这样,我需要改变我的协议结构以及数据包。我将尝试与其他一些硬件发送所有数据一次,并期待最后的验证命令。