我正在尝试编写一个java程序来从COM端口读取。有266个字节要读取,因为266个字节不是全部一起生成,这意味着输入流在某个时候可以为空,我使用while循环来读取所有266个字节。根据我逐个检查接收到的字节,问题是有时一个字节可能会丢失(只有一个字节)。以下是代码:
While(numOfBytes < 266) {
if(!(inputStream.available() > 0)) continue;
inputStream.read(buffer);
data[numOfBytes] = buffer[0];
numOfBytes++;
}
答案 0 :(得分:0)
您为输入流提供一个数组来存储(is.read(缓冲区))中的数据,但无论它读取多少,只存储1个字节,并将字节数递增1。
尝试改为:
While(numOfBytes < 266) {
if(!(inputStream.available() > 0)) continue;
int b = inputStream.read();
if(b >= 0){
data[numOfBytes] = (byte) b ;
numOfBytes++;
}
}
答案 1 :(得分:0)
通常我会这样做
byte[] in = new byte[4196];
int bytesRead = 0;
while ((bytesRead = is.read(in)) != -1) {
// add to a StringBuffer maybe
}