FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$AlarmData.classBinary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$AlarmDataHead.classBinary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$DATE_TIME.classBinary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo.classBinary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/bres/FileDataParseInfo_Interface.classBinary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/bres/RESDataInfo.classBinary files differ
FBS9600ForFBO_Parse/src/com/fgkj/alm/Alarm_DataInfo.java
@@ -1,20 +1,91 @@ package com.fgkj.alm; 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.Date; import java.util.List; import com.fgkj.bres.FileDataParseInfo_Interface; import com.fgkj.data.ComBase; public class Alarm_DataInfo { public class Alarm_DataInfo implements FileDataParseInfo_Interface{ public AlarmDataHead almDataHead; public List<AlarmData> almDatas; public int parse_result = PARSE_RESULT_NULL; //文件解析结果 public final int file_type = FILE_TYPE_ALM; //文件类型 public Alarm_DataInfo() { almDataHead = new AlarmDataHead(); almDatas = new ArrayList<Alarm_DataInfo.AlarmData>(); } @Override public void readFileData(String filePath) { FileInputStream fis = null; try { File f = new File(filePath); if(!filePath.endsWith(".alm") && !filePath.endsWith(".ALM")) { System.out.println("文件格式错误"); parse_result = PARSE_RESULT_FILETYPEERR; return; } if(!f.exists()) { parse_result = PARSE_RESULT_NOTFOUNDFILE; System.out.println("文件不存在.........."); return; } fis = new FileInputStream(f); byte[] buf = new byte[4]; if(fis.read(buf, 0, buf.length) == AlarmDataHead.BYTE_LEN) { if(this.almDataHead.setHeadData(buf)) { parse_result = PARSE_RESULT_SUCCESS; }else { parse_result = PARSE_RESULT_FILEERROR; } while(true) { if(almDataHead.checkDataHead(fis)) { byte[] databuf = new byte[AlarmData.BYTE_LEN]; if(fis.read(databuf) == databuf.length) { AlarmData almData = new AlarmData(); if(almData.setData(databuf)) { //System.out.println(resData); almDatas.add(almData); } } } if(fis.available() <1) { //System.out.println("解析完成"); break; } } }else { parse_result = PARSE_RESULT_FILEERROR; } } catch (IOException e) { e.printStackTrace(); } finally { if(null != fis) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } //告警头部数据 @@ -38,6 +109,44 @@ record_line = ComBase.changeShortToInt(bf.getShort()); //System.out.println("行数:"+record_line); return true; } public boolean checkDataHead(FileInputStream fis) { boolean check_ok = false; boolean file_end = false; byte[] tag = new byte[1]; try { while(true) { int n = 0; for(n=0; n<2; n++) { if(1 != fis.read(tag, 0, 1)) { file_end = true; break; } if((0xAA != (tag[0]&0xFF))) { break; } } if(n >= 2) { check_ok = true; break; } if(true == file_end) { break; } } } catch (IOException e) { //e.printStackTrace(); } return check_ok; } } @@ -104,4 +213,6 @@ } } } FBS9600ForFBO_Parse/src/com/fgkj/bres/FileDataParseInfo_Interface.java
New file @@ -0,0 +1,19 @@ package com.fgkj.bres; public interface FileDataParseInfo_Interface { public static final int PARSE_RESULT_NULL = 0; //未知 public static final int PARSE_RESULT_SUCCESS = 1; //解析成功 public static final int PARSE_RESULT_NOTFOUNDFILE = 2; //文件未找到 public static final int PARSE_RESULT_FILETYPEERR = 3; //文件格式错误 public static final int PARSE_RESULT_FILEERROR = 4; //文件异常 public static final int FILE_TYPE_NULL = 0; //未知 public static final int FILE_TYPE_FBO = 1; //FBO文件数据 public static final int FILE_TYPE_RES = 2; //内阻数据 public static final int FILE_TYPE_ALM = 3; //告警数据 public static final int FILE_TYPE_MCP = 4; //放电监测数据 public static final int FILE_TYPE_MCH = 5; //充电监测数据 public void readFileData(String filePath); } FBS9600ForFBO_Parse/src/com/fgkj/bres/RESDataInfo.java
@@ -8,25 +8,20 @@ //FBS9600 内阻数据集 public class RESDataInfo { public class RESDataInfo implements FileDataParseInfo_Interface{ public RESDataHead resDataHead; //内阻数据头 public List<RESData> resDatas; //内阻数据集 public int parse_result = PARSE_RESULT_NULL; public static final int PARSE_RESULT_NULL = 0; //未知 public static final int PARSE_RESULT_SUCCESS = 1; //解析成功 public static final int PARSE_RESULT_NOTFOUNDFILE = 2; //文件未找到 public static final int PARSE_RESULT_FILETYPEERR = 3; //文件格式错误 public static final int PARSE_RESULT_FILEERROR = 4; //文件异常 public final int file_type = FILE_TYPE_RES; //文件类型 public RESDataInfo() { resDataHead = new RESDataHead(); //内阻数据头 resDatas = new ArrayList<>(); //内阻数据集 } public void readResFile(String filePath) public void readFileData(String filePath) { FileInputStream fis = null; @@ -92,7 +87,7 @@ public static void main(String[] args) { RESDataInfo info = new RESDataInfo(); info.readResFile("D:\\桌面文件备份\\公司各种设备资料\\FBS存储文件解析/resdata.bres"); info.readFileData("D:\\桌面文件备份\\公司各种设备资料\\FBS存储文件解析/resdata.bres"); } }