我要将两个文件从Java应用程序传输到大约200k的Arduino,以保存到uSD。使用USB连接,使用RXTX库和Arduino上的简单数据解析就可以了。我现在想用HC-06模块用蓝牙替换USB连接。
不改变任何东西,转移工作但需要12分钟而不是2分钟。转移在转移的相同4个(可能是50个)点处挂起,通过百分比进度看到。
瓶颈必须在RXTX库或bluteooth TX中,但无法找到正在发生的事情。有什么我可以调整或者这是基本蓝牙模块的限制吗?
以下是代码FWIW的片段,没什么特别的(我想!):
Java:
int perc = data.length / 100;
for (int i = 0 ; i < data.length ; i++) {
try{
output.write(data[i]);
}
catch(Exception e){
System.err.println(e.toString());
}
if(i % perc == 0) System.out.println(i / perc);
}
Arduino:
boolean waiting = true;
while( lastData + 2000 > millis() || waiting){
while(Serial.available()) {
waiting = false;
if(Serial.available() >= 255) nodes[nodeCount++] = byteCount;
buff[bytInc++] = Serial.read();
if(bytInc == 512) {
bytInc = 0;
in.write(buff,512);
}
lastData = millis();
byteCount++;
}
}
in.write(buff,bytInc);
in.flush();
上述代码段中的任何优化都将非常受欢迎。波特率为38400.写入uSD时,任何更快的速度和缓冲区都会重载。 Arduino板是一个具有256字节串行缓冲区的Mega。
非常感谢。已经寻找相关的帖子,但无法在这样的蓝牙文件传输上找到任何东西。