public class ReceiveDataUtil extends Thread{
public void run(){
synchronized (this.getClass()) {
try {
InputStream is=CommStatement.getBluetoothSocket().getInputStream();
/*byte[] headByte=new byte[1];
byte[] typeByte=new byte[1];
byte[] lengthByte=new byte[1];
byte[] dataByte;
byte[] verifyByte=new byte[1];
byte[] endByte=new byte[1];*/
byte[] headByte=new byte[3];
int flag=0;
while(true){
flag=is.read(headByte);
if(flag!=-1){
System.out.println("接收数据===头标示"+HexConversion.bytesToHexString(new byte[]{headByte[0]}));
System.out.println("接收数据===类型标示"+HexConversion.bytesToHexString(new byte[]{headByte[1]}));
int dataLength=(Integer.valueOf(HexConversion.bytesToHexString(new byte[]{headByte[2]}),16));
System.out.println("接收数据===附加数据长度"+dataLength);
byte[] data=new byte[dataLength+2];
flag=0;
flag=is.read(data);
if(flag!=-1){
System.out.println("接收数据===命令父类型"+HexConversion.bytesToHexString(new byte[]{data[0]}));
System.out.println("接收数据===命令子类型"+HexConversion.bytesToHexString(new byte[]{data[1]}));
System.out.println("接收数据===返回标示"+HexConversion.bytesToHexString(new byte[]{data[2]}));
byte[] b=new byte[data.length-5];
System.arraycopy(data, 3, b, 0,b.length);
System.out.println("接收数据===附加数据"+new String(b));
System.out.println("接收数据===校验标示"+HexConversion.bytesToHexString(new byte[]{data[data.length-2]}));
System.out.println("接收数据===结尾标示"+HexConversion.bytesToHexString(new byte[]{data[data.length-1]}));
}else{
System.out.println("接收数据===附加数据为空");
}
}else{
System.out.println("接收数据为空");
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
哪位高手帮我解答啊 我实在是不知道为什么接收数据总出错 跪求大神帮助