蓝牙串行数据传输在相同点挂起

时间:2014-02-24 10:31:19

标签: java bluetooth serial-port arduino serial-communication

我要将两个文件从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。

非常感谢。已经寻找相关的帖子,但无法在这样的蓝牙文件传输上找到任何东西。

0 个答案:

没有答案