package com.source.parse; import android.os.Handler; import com.rftransceiver.util.Constants; import com.source.DataPacketOptions; /** * Created by Rth on 2015/5/6. */ public class TextParser { private DataPacketOptions options; private Handler handler; /** * a cache to save text bytes */ private byte[] textTemp = new byte[1000]; /** * the real text bytes's length */ private int length = 0; public void parseText(byte[] data) { if(data[options.getRealLenIndex()] == options.getRealLen()) { makeText(data,options.getLength() - options.getOffset()-1); }else { //this is the last packet makeText(data,data[options.getRealLenIndex()]); byte[] sendData = new byte[length]; System.arraycopy(textTemp,0,sendData,0,length); handler.obtainMessage(Constants.MESSAGE_READ,1,-1,sendData).sendToTarget(); sendData = null; length = 0; } } private void makeText(byte[] data,int len) { if(len > options.getLength() - options.getOffset() -1) { return; } for(int i = options.getOffset();i < len + options.getOffset();i++) { textTemp[length++] = data[i]; } } public void setOptions(DataPacketOptions options) { this.options = null; this.options = options; } public void setHandler(Handler han) { this.handler = null; this.handler = han; } }