[踏石留印之Android] byte[]数组的截取方法arraycopy与串口数据流处理
在做的项目中使用了byte[]数组来接收android USB serial 串口数据,由于串口数据有很多无用的响应指令,故要对其截取,arraycopy是效率很高的截取方式,调用方式如下:
System.arraycopy(src, srcPos, dest, destPos, length)
参数解释引用大神的:
参数解析:
src:byte源数组
dest,:byte目的数组(截取后存放的数组)
destPos:截取后存放的数组起始位置(0位置有效)
length:截取的数据长度
http://blog.csdn.net/educast/article/details/52332496
数据流处理,我用了一个for循环遍历数组,进行数据筛查:
temp = driver.read();
size = temp.length;
int j = 0;
if(size > 0){
for (int i=0;i<size-10;i++){
//进行筛选摸排,选出我所需要的数据块
if((temp[i] == HEAD)&& (temp[i+1] == (byte)0x02) && (temp[i+2] == (byte)0x22) && (temp[i+3] == (byte)0x00)){
int len = temp[i+4]&0xff; //数据块内的长度标识
if(temp[len + 6] != END){//数据区尚未接收完整
continue ; }
byte[] packageBytes = new byte[len + 7];
//运用arraycopy方法
System.arraycopy(temp, i, packageBytes, 0, len + 7);
//利用数据块性质再次进行排查
byte crc = checkSum(packageBytes);
if( crc == packageBytes[len + 5]){
//将packgeBytes再截取一块有效数据
byte[] epcBytes = new byte[len - 5];
System.arraycopy(packageBytes, 8, epcBytes, 0, len - 5);
}
}
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C++ 密码强度验证
- 下一篇: Java字符串按照字节截取