我正在使用arduino从一个SD读取字节到java应用程序。这是我的方法:
if(temp.contains("_i_;")){
imgByte = new ArrayList<>();
imgByte.clear();
for(int i=0; i< min(imgSize , 64) ;i++){
imgByte.add((byte)rx.getInputStream().read());
imgSize--;
}
Files.write(imgFile, toByteArray(imgByte),StandardOpenOption.APPEND );
System.out.println("Left: "+imgSize);
return true;
}
I 的;只是表示64个数据包即将到来。
但是太慢了我无法按时收到照片。是否有另一种方法,所以我只能读取一行中的所有64个字节?而不是迭代for循环? P.S:toByteArray将字节ArrayList转换为byte [],因此我可以将其写入文件。 我正在使用串行通信的jSerialComm库
答案 0 :(得分:0)
你试过吗
Files.copy(rx.getInputStream(), imgFile);
答案 1 :(得分:0)
我通过以下方式解决了问题:
if(temp.contains("_i_;")){
imgByte = new ArrayList<>();
imgByte.clear();
byte[] data = new byte[64];
// for(int i=0; i< min(imgSize , 64) ;i++){
// imgByte.add((byte)rx.getInputStream().read());
rx.getInputStream().read(data, 0, min(imgSize , 64));
imgSize-=min(imgSize , 64);
// }
//Files.write(imgFile, toByteArray(imgByte),StandardOpenOption.APPEND );
Files.write(imgFile, data,StandardOpenOption.APPEND );
System.out.println("Left: "+imgSize);
return true;
}