Administrator
2023-02-07 3b359b5a250b6383ce111980f28a719e16446e25
添加接口以及添加告警文件解析
7个文件已修改
2个文件已添加
145 ■■■■■ 已修改文件
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$AlarmData.class 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$AlarmDataHead.class 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$DATE_TIME.class 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo.class 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/bin/com/fgkj/bres/FileDataParseInfo_Interface.class 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/bin/com/fgkj/bres/RESDataInfo.class 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/src/com/fgkj/alm/Alarm_DataInfo.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/src/com/fgkj/bres/FileDataParseInfo_Interface.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/src/com/fgkj/bres/RESDataInfo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$AlarmData.class
Binary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$AlarmDataHead.class
Binary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo$DATE_TIME.class
Binary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/alm/Alarm_DataInfo.class
Binary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/bres/FileDataParseInfo_Interface.class
Binary files differ
FBS9600ForFBO_Parse/bin/com/fgkj/bres/RESDataInfo.class
Binary 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");
    }
    
}