package com.fgkj.fbs5100; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.List; import com.fgkj.data.ComFn; public class FBS5100_AlarmData { public FBS5100_AlarmParam alarmParam; //告警参数 public List alarms; public int parse_result = FBS5100_ComBase.PARSE_RESULT_NULL; public FBS5100_AlarmData() { alarmParam = new FBS5100_AlarmParam(); alarms = new ArrayList(); } public void parseFileData(String filePath) { FileInputStream fis = null; try { File f = new File(filePath); //既不是核容放电也不是监测放电 if(!filePath.endsWith(".ALM")) { parse_result = FBS5100_ComBase.PARSE_RESULT_FILETYPEERR; return; } if(!f.exists()) { parse_result = FBS5100_ComBase.PARSE_RESULT_NOTFOUNDFILE; return; //System.out.println("文件不存在.........."); } fis = new FileInputStream(f); byte[] buf = new byte[1024]; if(fis.read(buf, 0, buf.length) == 1024) { if(this.readDataHead(buf)) { parse_result = FBS5100_ComBase.PARSE_RESULT_SUCCESS; }else { parse_result = FBS5100_ComBase.PARSE_RESULT_FILEERROR; } while(true) { FBS5100_Alarm alm = new FBS5100_Alarm(); int tag = alm.checkDataHead(fis); if((0xAA == tag)) { byte[] databuf = new byte[FBS5100_Alarm.BYTE_LEN]; if(fis.read(databuf) == databuf.length) { //System.out.println(ComFn.bytesToHexString(databuf, databuf.length)); if(alm.putByteBuffer(databuf)){ alarms.add(alm); } } } if(tag == 1) break; } }else { parse_result = FBS5100_ComBase.PARSE_RESULT_FILEERROR; } } catch (IOException e) { e.printStackTrace(); } finally { if(null != fis) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } //解析数据头 public boolean readDataHead(byte[] buf) { System.out.println(ComFn.bytesToHexString(buf, buf.length)); boolean flag = false; if(buf.length < (FBS5100_BattParam.BYTE_LEN)) { System.out.println("头部数据长度异常"); return flag; } ByteBuffer bf = ByteBuffer.allocate(buf.length); bf.order(ByteOrder.LITTLE_ENDIAN); bf.put(buf); bf.position(0); flag = this.alarmParam.putByteBuffer(bf); System.out.println("alarmParam:"+flag); return flag; } @Override public String toString() { return "FBS5100_AlarmData [alarmParam=" + alarmParam + ", alarms=" + alarms + ", parse_result=" + parse_result + "]"; } }