我使用串口线从一台电脑向另一台电脑的接收程序里发送一个16进制字节数组,比较长,有几十个字节,然后程序接收时就发生将该数组分成几个部分接收的问题,我想是不是CPU给线程分配时间段造成的问题呢,请问该如何解决。急盼答。谢谢!
接收代码:
while(bufferedIn.available() > 1) {
bufferedIn.read(buffer, offset, 53); //该数组有53个字节,我用一个字节数组buffer(我将其字节全部初
//始化为0x00)来接收bufferedInputStream的字节。
}
应接收到的数组为:01 03 30 48 92 E4 43 00 00 7A 44 A6 0E EA 3E 00 00 00 00 A6 0E EA 3E 61 8F 0D 3F 00 00 00 00 50 07 35 41 00 00 00 00 00 00 00 00 F1 2C 00 00 F1 2C 00 00 7A 88
但实际上被分成几个数组了
例如:
<01 03 30 48 92 E4 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<00 7A 44 A6 0E EA 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<00 00 00 A6 0E EA 3E 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<8F 0D 3F 00 00 00 00 50 07 35 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<00 00 00 F1 2C 00 00 F1 2C 00 00 7A 88 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
每次buffer数组只接收到其中的一部分,然后判断while(bufferedIn.available() > 1)不成立,此时bufferedIn.available()为0,然后就执行后面的程序了。请问我应该怎么才能将bufferedInputStream中的字节数组读取玩,在进行处理。
接收代码:
while(bufferedIn.available() > 1) {
bufferedIn.read(buffer, offset, 53); //该数组有53个字节,我用一个字节数组buffer(我将其字节全部初
//始化为0x00)来接收bufferedInputStream的字节。
}
应接收到的数组为:01 03 30 48 92 E4 43 00 00 7A 44 A6 0E EA 3E 00 00 00 00 A6 0E EA 3E 61 8F 0D 3F 00 00 00 00 50 07 35 41 00 00 00 00 00 00 00 00 F1 2C 00 00 F1 2C 00 00 7A 88
但实际上被分成几个数组了
例如:
<01 03 30 48 92 E4 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<00 7A 44 A6 0E EA 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<00 00 00 A6 0E EA 3E 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<8F 0D 3F 00 00 00 00 50 07 35 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
<00 00 00 F1 2C 00 00 F1 2C 00 00 7A 88 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
每次buffer数组只接收到其中的一部分,然后判断while(bufferedIn.available() > 1)不成立,此时bufferedIn.available()为0,然后就执行后面的程序了。请问我应该怎么才能将bufferedInputStream中的字节数组读取玩,在进行处理。
int len=0;
while((len=bufferedIn.available())> 0) {
bufferedIn.read(buffer,offset,len);
offset+=len;
}