DELL
2024-10-09 dbd195da25ed4f9eee707d5ee8a9b2e6e7c10687
新增ICA-200KW调试工具
27个文件已修改
19个文件已添加
1661 ■■■■■ 已修改文件
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/IAC_Cmd.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/IAC_RealData.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/IAC_TestParam.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/ModBus_ComBase.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/SPCommIAC_200KW.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$1.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$2.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$3.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$4.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$5.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$6.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$7.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$1.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$10.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$11.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$12.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$13.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$14.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$15.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$16.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$17.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$18.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$19.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$2.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$20.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$21.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$22.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$23.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$24.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$25.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$3.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$4.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$5.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$6.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$7.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$8.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer$9.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/main/main_window_computer.class 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/IAC_Cmd.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/IAC_RealData.java 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/IAC_TestParam.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/ModBus_ComBase.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/SPCommIAC_200KW.java 659 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/iac_200kw_page.java 525 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/src/main/main_window_computer.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/IAC_Cmd.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/IAC_RealData.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/IAC_TestParam.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/ModBus_ComBase.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/SPCommIAC_200KW.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$1.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$2.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$3.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$4.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$5.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$6.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page$7.class
Binary files differ
Device_Simulator_DTS_Tester/bin/com/dev/ica_200kw/iac_200kw_page.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$1.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$10.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$11.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$12.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$13.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$14.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$15.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$16.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$17.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$18.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$19.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$2.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$20.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$21.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$22.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$23.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$24.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$25.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$3.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$4.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$5.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$6.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$7.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$8.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer$9.class
Binary files differ
Device_Simulator_DTS_Tester/bin/main/main_window_computer.class
Binary files differ
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/IAC_Cmd.java
New file
@@ -0,0 +1,19 @@
package com.dev.ica_200kw;
public class IAC_Cmd {
    public static final int Byte_Len = 18;        //基本数据长度
    public int addr;                    //地址
    public int[] synCode = new int[] {0xAA,0xAA,0xAA};
    public int length;                    //发送字节长度
    public int cmd;                        //操作指令
    public int result;                    //操作返回
    public int testType;                //测试类型
    public int state;                    //״̬
    public int alarm;                    //停止条件
    public int[] back = new int[4];     //预留
    public int crc;                        //crc16
}
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/IAC_RealData.java
New file
@@ -0,0 +1,267 @@
package com.dev.ica_200kw;
public class IAC_RealData {
    private float Ua;            //a相电压
    private float Ub;            //b相电压
    private float Uc;            //c相电压
    private float Uab;            //a相和b相之间的线电压
    private float Ubc;            //b相和c相之间的线电压
    private float Uca;            //c相和a相之间的线电压
    private float Ia;            //a相电流
    private float Ib;            //b相电流
    private float Ic;            //c相电流
    private float Fre;            //交流频率
    private float FT;            //功率因数
    private float FTa;            //
    private float FTb;            //
    private float FTc;            //
    private float Pa;            //
    private float Pb;            //
    private float Pc;            //
    private float P;            //有功功率
    private float Qa;            //
    private float Qb;            //
    private float Qc;            //
    private float Q;            //
    private float Sa;            //
    private float Sb;            //
    private float Sc;            //
    private float S;            //
    private float Ep;            //
    private float PHv;            //
    private float PHa;            //
    private float JBXBUa;        //基波谐波电压a
    private float JBXBUb;        //基波谐波电压b
    private float JBXBUc;        //基波谐波电压c
    private float JBXBIa;        //基波谐波电流a
    private float JBXBIb;        //基波谐波电流b
    private float JBXBIc;        //基波谐波电流c
    private int StateAlarm;        //状态(0-没有测试 1-稳态测试 2-整定测试 3-瞬态测试 4-波动测试 5-谐波测试)
    public float getUa() {
        return Ua;
    }
    public float getUb() {
        return Ub;
    }
    public float getUc() {
        return Uc;
    }
    public float getUab() {
        return Uab;
    }
    public float getUbc() {
        return Ubc;
    }
    public float getUca() {
        return Uca;
    }
    public float getIa() {
        return Ia;
    }
    public float getIb() {
        return Ib;
    }
    public float getIc() {
        return Ic;
    }
    public float getFre() {
        return Fre;
    }
    public float getFT() {
        return FT;
    }
    public float getFTa() {
        return FTa;
    }
    public float getFTb() {
        return FTb;
    }
    public float getFTc() {
        return FTc;
    }
    public float getPa() {
        return Pa;
    }
    public float getPb() {
        return Pb;
    }
    public float getPc() {
        return Pc;
    }
    public float getP() {
        return P;
    }
    public float getQa() {
        return Qa;
    }
    public float getQb() {
        return Qb;
    }
    public float getQc() {
        return Qc;
    }
    public float getQ() {
        return Q;
    }
    public float getSa() {
        return Sa;
    }
    public float getSb() {
        return Sb;
    }
    public float getSc() {
        return Sc;
    }
    public float getS() {
        return S;
    }
    public float getEp() {
        return Ep;
    }
    public float getPHv() {
        return PHv;
    }
    public float getPHa() {
        return PHa;
    }
    public float getJBXBUa() {
        return JBXBUa;
    }
    public float getJBXBUb() {
        return JBXBUb;
    }
    public float getJBXBUc() {
        return JBXBUc;
    }
    public float getJBXBIa() {
        return JBXBIa;
    }
    public float getJBXBIb() {
        return JBXBIb;
    }
    public float getJBXBIc() {
        return JBXBIc;
    }
    public int getStateAlarm() {
        return StateAlarm;
    }
    public void setUa(float ua) {
        Ua = ua;
    }
    public void setUb(float ub) {
        Ub = ub;
    }
    public void setUc(float uc) {
        Uc = uc;
    }
    public void setUab(float uab) {
        Uab = uab;
    }
    public void setUbc(float ubc) {
        Ubc = ubc;
    }
    public void setUca(float uca) {
        Uca = uca;
    }
    public void setIa(float ia) {
        Ia = ia;
    }
    public void setIb(float ib) {
        Ib = ib;
    }
    public void setIc(float ic) {
        Ic = ic;
    }
    public void setFre(float fre) {
        Fre = fre;
    }
    public void setFT(float fT) {
        FT = fT;
    }
    public void setFTa(float fTa) {
        FTa = fTa;
    }
    public void setFTb(float fTb) {
        FTb = fTb;
    }
    public void setFTc(float fTc) {
        FTc = fTc;
    }
    public void setPa(float pa) {
        Pa = pa;
    }
    public void setPb(float pb) {
        Pb = pb;
    }
    public void setPc(float pc) {
        Pc = pc;
    }
    public void setP(float p) {
        P = p;
    }
    public void setQa(float qa) {
        Qa = qa;
    }
    public void setQb(float qb) {
        Qb = qb;
    }
    public void setQc(float qc) {
        Qc = qc;
    }
    public void setQ(float q) {
        Q = q;
    }
    public void setSa(float sa) {
        Sa = sa;
    }
    public void setSb(float sb) {
        Sb = sb;
    }
    public void setSc(float sc) {
        Sc = sc;
    }
    public void setS(float s) {
        S = s;
    }
    public void setEp(float ep) {
        Ep = ep;
    }
    public void setPHv(float pHv) {
        PHv = pHv;
    }
    public void setPHa(float pHa) {
        PHa = pHa;
    }
    public void setJBXBUa(float jBXBUa) {
        JBXBUa = jBXBUa;
    }
    public void setJBXBUb(float jBXBUb) {
        JBXBUb = jBXBUb;
    }
    public void setJBXBUc(float jBXBUc) {
        JBXBUc = jBXBUc;
    }
    public void setJBXBIa(float jBXBIa) {
        JBXBIa = jBXBIa;
    }
    public void setJBXBIb(float jBXBIb) {
        JBXBIb = jBXBIb;
    }
    public void setJBXBIc(float jBXBIc) {
        JBXBIc = jBXBIc;
    }
    public void setStateAlarm(int stateAlarm) {
        StateAlarm = stateAlarm;
    }
    @Override
    public String toString() {
        return "ICA_RealData [Ua=" + Ua + ", Ub=" + Ub + ", Uc=" + Uc + ", Uab=" + Uab + ", Ubc=" + Ubc + ", Uca=" + Uca
                + ", Ia=" + Ia + ", Ib=" + Ib + ", Ic=" + Ic + ", Fre=" + Fre + ", FT=" + FT + ", FTa=" + FTa + ", FTb="
                + FTb + ", FTc=" + FTc + ", Pa=" + Pa + ", Pb=" + Pb + ", Pc=" + Pc + ", P=" + P + ", Qa=" + Qa
                + ", Qb=" + Qb + ", Qc=" + Qc + ", Q=" + Q + ", Sa=" + Sa + ", Sb=" + Sb + ", Sc=" + Sc + ", S=" + S
                + ", Ep=" + Ep + ", PHv=" + PHv + ", PHa=" + PHa + ", JBXBUa=" + JBXBUa + ", JBXBUb=" + JBXBUb
                + ", JBXBUc=" + JBXBUc + ", JBXBIa=" + JBXBIa + ", JBXBIb=" + JBXBIb + ", JBXBIc=" + JBXBIc
                + ", StateAlarm=" + StateAlarm + "]";
    }
}
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/IAC_TestParam.java
New file
@@ -0,0 +1,70 @@
package com.dev.ica_200kw;
/**
 *     测试参数
 * @author DELL
 *
 */
public class IAC_TestParam {
    private float CurrHigh;            //电流上限值
    private float VolLow;            //电压下限
    private float VolHigh;            //电压上限
    private float Power;            //功率
    private int TestTime;            //测试时间
    private int WTPowerCount;        //稳态功率段数
    private int ZDPowerCount;        //整定功率段数
    private int TimeCount;            //整定测试间隔
    public float getCurrHigh() {
        return CurrHigh;
    }
    public float getVolLow() {
        return VolLow;
    }
    public float getVolHigh() {
        return VolHigh;
    }
    public float getPower() {
        return Power;
    }
    public int getTestTime() {
        return TestTime;
    }
    public int getWTPowerCount() {
        return WTPowerCount;
    }
    public int getZDPowerCount() {
        return ZDPowerCount;
    }
    public int getTimeCount() {
        return TimeCount;
    }
    public void setCurrHigh(float currHigh) {
        CurrHigh = currHigh;
    }
    public void setVolLow(float volLow) {
        VolLow = volLow;
    }
    public void setVolHigh(float volHigh) {
        VolHigh = volHigh;
    }
    public void setPower(float power) {
        Power = power;
    }
    public void setTestTime(int testTime) {
        TestTime = testTime;
    }
    public void setWTPowerCount(int wTPowerCount) {
        WTPowerCount = wTPowerCount;
    }
    public void setZDPowerCount(int zDPowerCount) {
        ZDPowerCount = zDPowerCount;
    }
    public void setTimeCount(int timeCount) {
        TimeCount = timeCount;
    }
    @Override
    public String toString() {
        return "ICA_TestParam [CurrHigh=" + CurrHigh + ", VolLow=" + VolLow + ", VolHigh=" + VolHigh + ", Power="
                + Power + ", TestTime=" + TestTime + ", WTPowerCount=" + WTPowerCount + ", ZDPowerCount=" + ZDPowerCount
                + ", TimeCount=" + TimeCount + "]";
    }
}
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/ModBus_ComBase.java
New file
@@ -0,0 +1,32 @@
package com.dev.ica_200kw;
public class ModBus_ComBase {
    public static final int CMD_Null                =    0x00;            //空
    public static final int CMD_Write_TestType        =    0x5A01;            //写测试测试类型
    public static final int CMD_Write_TestParam        =    0x5A07;            //写测试参数
    public static final int CMD_Write_StartTest        =    0x5A02;            //写启动测试指令
    public static final int CMD_Write_StopTest        =    0x5A04;            //写停止测试指令
    public static final int CMD_Write_CloseWin        =    0x6A09;            //写关闭提示窗口指令
    public static final int CMD_Write_PauseTest        =    0x6A10;            //写暂停测试指令
    public static final int CMD_Read_RealData        =    0x5A05;            //读取从机数据
    public static final int TestType_Null            =    0x00;            //没有测试
    public static final int TestType_SteadyTest        =    0xF1;            //稳态测试
    public static final int TestType_SettingTest    =    0xF2;            //整定测试
    public static final int TestType_TransientTest    =    0xF3;            //瞬态测试
    public static final int TestType_WaveTest        =    0xF4;            //波动测试
    public static final int TestType_HarmonicTest    =    0xF5;            //谐波测试
    public static final int WorkState_Null            =    0x00;            //无测试
    public static final int WorkState_SteadyTest    =    0x01;            //稳态测试
    public static final int WorkState_SettingTest    =    0x02;            //整定测试
    public static final int WorkState_TransientTest    =    0x03;            //瞬态测试
    public static final int WorkState_WaveTest        =    0x04;            //波动测试
    public static final int WorkState_HarmonicTest    =    0x05;            //谐波测试
}
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/SPCommIAC_200KW.java
New file
@@ -0,0 +1,659 @@
package com.dev.ica_200kw;
import gnu.io.SerialPort;
import gnu.io.UnsupportedCommOperationException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import org.apache.logging.log4j.Logger;
import sp_comm.CommSerialPort;
import sp_comm.Comm_Socket;
import main.page_debug_inf;
import com.Com;
import com.ComFn;
import com.Crc16;
import com.PlaySound;
import com.dev.bts.data.FBS9100_ComBase;
import com.dev.bts.data.FBS9100_DFU;
import com.dev.fbs9600_mon.SPCommMon;
import com.dev.modbus.MyModBusRtu;
import com.dev.simpower.dev.Power_ACData;
import com.dev.simpower.dev.Power_AlmParam;
import com.dev.simpower.dev.Power_AlmState;
import com.dev.simpower.dev.Power_ComBase;
import com.dev.simpower.dev.Power_LIBMSData;
import com.dev.simpower.dev.Power_ModelData;
import com.dev.simpower.dev.Power_Param;
import com.dev.simpower.dev.Power_RoadState;
import com.dev.simpower.dev.Power_TimeControl;
public class SPCommIAC_200KW implements Runnable/*, SerialPortEventListener*/ {
    private ByteBuffer dt_databuffer = ByteBuffer.allocate(0);                //遥控遥调数据
    private short dt_user_cmd = Power_ComBase.CMD_NULL;
    private int dt_user_cmd_regaddr = 0;                                    //用户控制时的寄存器地址
    /*********************************************************************/
    private  boolean CommThreadRunning = false;
    public  boolean AutoStartResTestEn = false;
    public  Date AutoStartResTestTime = new Date();
    public  Date AutoSaveResDataTime = new Date();
    public  boolean AutoSaveResDataEn = false;
    public  int AutoSaveResDataCount = 0;
    public  String AutoSaveDataFileName = "";
    private ByteBuffer CommRxBuffer = ByteBuffer.allocate(1500);
    private ByteBuffer CommTxBuffer = ByteBuffer.allocate(1048);
    public int comm_tx_cnt = 0;
    public int comm_rx_cnt = 0;
    private int comm_bautrate = 9600;
    public int dt_target_addr = 0;
    public int m_ZDHJ_REG_CNT = 1;
    public int ZDHJ_BattCount = -1;
    //--------------------------------------------------------//
    public int dev_param_data_state = 0;
    public int dev_param_addr = 0;
    public int dev_param_curr_range = 0;
    public double dev_param_FloatCurrLev = 0;
    public double dev_param_float_curr_lev = 0;
    public double dev_param_wenbo_curr_lev = 0;
    public int dev_param_auto_restest_interval = 0;
    public int dev_param_res_test_type = 0;
    public int dev_param_ResDisTestMethod = 0;
    public int dev_param_Batt_StdCap = 0;
    public double dev_param_res_dis_slope = 0;
    public double dev_param_res_wenbo_slope = 0;
    public int dev_param_monnum_setmode = 0;
    public int dev_param_devid = 0;
    public double[] dev_param_resparam_d = new double[4];
    public double[] dev_param_resparam_s = new double[4];
    //--------------------------------------------------------//
    public int dev_stat_version = 0;
    public int dev_stat_state = 0;
    public double GroupVol = 0;
    public double BattCurr = 0;
    public int BattState = 0;
    public int BattCurrDir = 0;
    public double AvgWenBoCurr = 0;
    public double PeakWenBoCurr = 0;
    public int SpiCommErrCount = 0;                                      //SPI通信错误计数
    public int ResTestCount = 0;                                     //内阻测试次数
    public int CurentResTestMode = 0;                                 //当前内阻测试方法
    public int BianhaoErrNum = 0;                                     //编号错误单体号
    public double ExTemp = 0;                                        //外部温度
    //--------------------------------------------------------//
    public short mAddrSettedNow = 0;
    private short dt_cmd = ModBus_ComBase.CMD_Null;
    public int dt_cmd_ack = Power_ComBase.CMD_NULL;
    public MyModBusRtu rtu_rt;
    public MyModBusRtu rtu_rx;
    public Date dt_cmd_ack_time = new Date();
    private short dt_cmd_regaddr = 0;
    private short dt_cmd_regcnt = 0;
    private short[] dt_cmd_regdata = null;
    private int dt_cmd_cnt = 0;
    private page_debug_inf dt_debug_inf;
    private int m_COMM_PORT_TYPE = 0;
    private CommSerialPort m_SP_Comm = null;
    private Comm_Socket m_SocketComm = null;
    private Logger m_Log = null;
    private int read_libms_index = 0;    //读取锂电池包索引
    private int read_model_index = 0;    //读取电源模块索引
    public Power_ACData m_AcData;
    public Power_LIBMSData[] m_LibmsDatas;
    public Power_ModelData[] m_ModelDatas;
    public Power_AlmState m_AlmState;
    public Power_Param m_ParamFromDev;                //设备读取的参数
    public Power_TimeControl m_TimeControlFromDev;    //设备读取的参数
    public IAC_RealData m_RealData;                     //设备实时数据
    public IAC_TestParam m_TestParam;                //设置的参数
    public IAC_TestParam m_TestParamFromDev;        //设备上读取的参数
    public String op_result = "";                    //操作返回结果
    public short dt_user_cmd_ack = Power_ComBase.CMD_NULL;                    //操作返回结果,用于界面判断更新
    private boolean dt_dfu_en = false;                        //远程升级标识
    private JTextArea dt_show_msg;                            //升级文本信息域
    private String dt_dfuFileName;                            //升级文件名称
    public SPCommIAC_200KW(int addr_t, int bitrate, page_debug_inf debug, Logger log) {
        dt_target_addr = addr_t & 0x00FF;
        comm_bautrate = bitrate;
        dt_debug_inf = debug;
        m_Log = log;
        rtu_rx = new MyModBusRtu();
        m_TimeControlFromDev = new Power_TimeControl();
        m_ParamFromDev = new Power_Param();
        m_AcData = new Power_ACData();
        m_AlmState = new Power_AlmState();
        m_RealData = new IAC_RealData();                     //设备实时数据
        m_TestParam = new IAC_TestParam();                    //设置的参数
        m_TestParamFromDev = new IAC_TestParam();            //设备上读取的参数
        m_LibmsDatas = new Power_LIBMSData[Power_ComBase.LIBMSDATA_MAX_COUNT];
        for(int i =0;i<m_LibmsDatas.length;i++) {
            m_LibmsDatas[i] = new Power_LIBMSData();
        }
        m_ModelDatas = new Power_ModelData[Power_ComBase.LIMODEL_MAX_COUNT];
        for(int i =0;i<m_LibmsDatas.length;i++) {
            m_ModelDatas[i] = new Power_ModelData();
        }
    }
    public void setCommBautrate(int bt_rate) {
        if(SPCommMon.COMM_PORT_TYPE_Serial != m_COMM_PORT_TYPE) {
            return;
        }
        try {
            comm_bautrate = bt_rate;
            m_SP_Comm.serialPort.setSerialPortParams(comm_bautrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
        } catch (UnsupportedCommOperationException e) {
            e.printStackTrace();
        }
    }
    //初始化串口
    public boolean OpenCommPort(int comm_port_type, String comm_name_or_ip, int bitrate_or_comm_port) {
        boolean res = false;
        m_COMM_PORT_TYPE = comm_port_type;
        if(SPCommMon.COMM_PORT_TYPE_Serial == m_COMM_PORT_TYPE) {
            m_SP_Comm = new CommSerialPort(bitrate_or_comm_port, m_Log);
            res = m_SP_Comm.OpenCommPort(comm_name_or_ip);
        } else {
            m_SocketComm = new Comm_Socket(comm_name_or_ip, bitrate_or_comm_port);
            res = true;
        }
        if(true == res) {
            CommTxBuffer.order(ByteOrder.BIG_ENDIAN);
            CommRxBuffer.order(ByteOrder.BIG_ENDIAN);
            comm_tx_cnt = 0;
            comm_rx_cnt = 0;
            CommThreadRunning = true;
        }
        return res;
    }
    private void makeCommTxData() {
        CommTxBuffer.clear();
        rtu_rt = new MyModBusRtu();
        ByteBuffer dt_data = ByteBuffer.allocate(0);
        rtu_rt.addr = dt_target_addr;
        if(dt_user_cmd == Power_ComBase.CMD_NULL) {
            //随机读取实时数据
            if(++dt_cmd_cnt  > 1000) {
                dt_cmd_cnt = 0;
            }
            rtu_rt.Cmd = MyModBusRtu.CMD_TYPE_READ;
            if(dt_cmd_cnt%3 == 0) {
                //读取电源遥测数据-测
                rtu_rt.reg_addr = Power_ComBase.PWD_ACData_RegAddr_Start;
                rtu_rt.reg_count = Power_ACData.REG_Count;
                //rtu_rt.reg_count = 17;     //测试时最多读取17个寄存器
            }else if(dt_cmd_cnt%3 == 1) {
                //读取锂电池包数据
                rtu_rt.reg_addr = Power_ComBase.PWD_LIBMSData_RegAddr_Start[read_libms_index];
                rtu_rt.reg_count = Power_LIBMSData.REG_Count;
            }else if(dt_cmd_cnt%3 == 2) {
                //读取电源模块数据
                rtu_rt.reg_addr = Power_ComBase.PWD_ModelData_RegAddr_Start[read_model_index];
                rtu_rt.reg_count = Power_ModelData.REG_Count;
            }
            if(dt_cmd_cnt%5 == 0) {
                //读取告警状态
                rtu_rt.reg_addr = Power_ComBase.PWD_ModelAlm_RegAddr_Start;
                rtu_rt.reg_count = Power_AlmState.REG_Count;
            }
            if(dt_cmd_cnt%5 == 1) {
                //分路开关状态
                rtu_rt.reg_addr = Power_ComBase.PWD_LoadControl_RegAddr_Start;
                rtu_rt.reg_count = Power_RoadState.REG_Count;
            }
        } else {
            //数据
            dt_data = dt_databuffer;
            //遥调遥控数据
            rtu_rt.Cmd = dt_user_cmd;
            dt_user_cmd = Power_ComBase.CMD_NULL;
            rtu_rt.reg_addr = dt_user_cmd_regaddr;
            if(dt_data.capacity() > 0) {
                rtu_rt.reg_count = dt_data.capacity()/2;
            }else if(Power_ComBase.PWD_SysParam_RegAddr_Start == rtu_rt.reg_addr) {
                rtu_rt.reg_count = Power_Param.REG_Count;
            }else if(Power_ComBase.PWD_LoadControl_RegAddr_Start <= rtu_rt.reg_addr && rtu_rt.reg_addr <= Power_ComBase.PWD_LoadControl_RegAddr_Start) {
                //分路控制以及门磁控制
                rtu_rt.reg_count = Power_Param.Reg_Count_Control;
            }else if(Power_ComBase.PWD_AlmParam_RegAddr_Start == rtu_rt.reg_addr) {
                //告警参数
                rtu_rt.reg_count = Power_AlmParam.REG_Count;
            }else if(Power_ComBase.PWD_PowerParam_RegAddr_Start == rtu_rt.reg_addr) {
                //电源参数
                rtu_rt.reg_count = Power_Param.REG_Count_Power;
            }else if(Power_ComBase.PWD_SchoolTime_RegAddr_Start == rtu_rt.reg_addr) {
                //校时参数
                rtu_rt.reg_count = Power_Param.REG_Count_Time;
            }else if(Power_ComBase.PWD_Load1Time_RegAddr_Start == rtu_rt.reg_addr) {
                //分路定时控制1-6
                rtu_rt.reg_count = Power_TimeControl.REG_Count;
            }else if(Power_ComBase.PWD_Load7Time_RegAddr_Start == rtu_rt.reg_addr) {
                //分路定时控制7-12
                rtu_rt.reg_count = Power_TimeControl.REG_Count;
            }
        }
        makeRTData(rtu_rt,dt_data);
    }
    public void makeRTData(MyModBusRtu rtu,ByteBuffer bf) {
        CommTxBuffer.position(0);
        CommTxBuffer.put((byte)rtu.addr);
        CommTxBuffer.put((byte)rtu.Cmd);
        CommTxBuffer.putShort((short)rtu.reg_addr);
        if(rtu.Cmd == MyModBusRtu.CMD_TYPE_READ) {
            //读取
            CommTxBuffer.putShort((short)rtu.reg_count);
        } else if(
                rtu.Cmd == MyModBusRtu.CMD_TYPE_WRITE_STD
                || rtu.Cmd == MyModBusRtu.CMD_TYPE_WRITE_SysUpdate
                || rtu.Cmd == MyModBusRtu.CMD_TYPE_Read_UpdateFile
        ) {
            //单点写入
            CommTxBuffer.put(bf);
        } else if(rtu.Cmd == MyModBusRtu.CMD_TYPE_WRITE_MULTY) {
            //多点写入
            CommTxBuffer.putShort((short)rtu.reg_count);
            CommTxBuffer.put((byte)bf.capacity());
            CommTxBuffer.put(bf);
        }
        int crc = Crc16.CalCRC16(CommTxBuffer, CommTxBuffer.position()) & 0xFFFF;
        CommTxBuffer.putShort((short) crc);
        CommTxBuffer.flip();
        //System.out.println("发送数据长度:" + CommTxBuffer.remaining());
    }
    public void tr_Msg(ByteBuffer bbf_tx, ByteBuffer bbf_rx, boolean showdat) {
        if(++comm_tx_cnt > 32500) {
            comm_tx_cnt = 0;
        }
        if(SPCommMon.COMM_PORT_TYPE_Serial == m_COMM_PORT_TYPE) {
            m_SP_Comm.SP_Comm(bbf_tx, bbf_rx, CommSerialPort.mutycomm_Type_Samd09, dt_debug_inf, showdat);
        } else {
            m_SocketComm.SocketComm(bbf_tx, bbf_rx, dt_debug_inf, showdat);
        }
    }
    public void CloseCommPort() {
        CommThreadRunning = false;
    }
    public void setCommCmd(short cmd, int cmd_reg_addr, short[] reg_data, int reg_len) {
        if(dt_cmd_regaddr > 0) {
            return;
        }
        dt_cmd = cmd;
        dt_cmd_regaddr = (short) cmd_reg_addr;
        dt_cmd_regdata = reg_data;
        dt_cmd_regcnt = (short) reg_len;
    }
    public void setCommCmd(short cmd, int cmd_user_reg_addr, ByteBuffer bf) {
        if(dt_cmd_regaddr > 0) {
            return;
        }
        dt_user_cmd = cmd;                                            //命令
        dt_user_cmd_regaddr = (short) cmd_user_reg_addr;            //寄存器地址
        dt_databuffer = bf;                                            //遥控或遥调数据
    }
    public void setCommCmdAck(int ack_t) {
        dt_cmd_ack = ack_t;
        dt_cmd_ack_time = new Date();
        //System.out.println(Com.get_DTF(dt_cmd_ack_time, Com.DTF_YMDhms) + ", " + dev_param_data_state);
        String wav_f = "6133.wav";
        if(ack_t%2 == 0) {
            wav_f = "4577.wav";
        }
        if(ack_t > 0) {
            new PlaySound(wav_f);
        }
    }
    private boolean processRxData(ByteBuffer bbf_rx) {
        rtu_rx.clear();
        boolean isSuccess = false;
        if(rtu_rx.putByteBuffer(bbf_rx)) {
            if(MyModBusRtu.CMD_TYPE_READ == rtu_rx.Cmd) {
                if(Power_ComBase.PWD_ACData_RegAddr_Start == rtu_rt.reg_addr) {
                    //读取极简化电源遥测数据
                    if(m_AcData.putByteBuffer(bbf_rx)) {
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_LIBMSData_RegAddr_Start1 <= rtu_rt.reg_addr && rtu_rt.reg_addr <= Power_ComBase.PWD_LIBMSData_RegAddr_Start4) {
                    //锂电池包数据
                    if(m_LibmsDatas[read_libms_index].putByteBuffer(bbf_rx)) {
                        //System.out.println("锂电池包:"+(read_libms_index+1)+"读取成功");
                        read_libms_index ++;
                        if(read_libms_index >= Power_ComBase.LIBMSDATA_MAX_COUNT) {
                            read_libms_index = 0;
                        }
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_ModelData_RegAddr_Start1 <= rtu_rt.reg_addr && rtu_rt.reg_addr <= Power_ComBase.PWD_ModelData_RegAddr_Start4) {
                    //电源模块数据
                    if(m_ModelDatas[read_model_index].putByteBuffer(bbf_rx)) {
                        //System.out.println("电源模块:"+(read_model_index+1)+"读取成功");
                        read_model_index ++;
                        if(read_model_index >= Power_ComBase.LIMODEL_MAX_COUNT) {
                            read_model_index = 0;
                        }
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_ModelAlm_RegAddr_Start == rtu_rt.reg_addr) {
                    if(m_AlmState.putByteBuffer(bbf_rx)) {
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_SysParam_RegAddr_Start == rtu_rt.reg_addr) {
                    if(m_ParamFromDev.putByteBuffer(bbf_rx)) {
                        dt_user_cmd_ack = Power_ComBase.PWD_SysParam_Read_ACK;
                        op_result_sysparam = "读取电源系统参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_PowerParam_RegAddr_Start == rtu_rt.reg_addr) {
                    //System.out.println("999");
                    if(m_ParamFromDev.putPowerByteBuffer(bbf_rx)) {
                        dt_user_cmd_ack = Power_ComBase.PWD_PwdParam_Read_ACK;
                        op_result_powerparam = "读取电源参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_AlmParam_RegAddr_Start == rtu_rt.reg_addr) {
                    m_AlmParamFromDev = new Power_AlmParam();
                    if(m_AlmParamFromDev.putByteBuffer(bbf_rx)) {
                        dt_user_cmd_ack = Power_ComBase.PWD_AlmParam_Read_ACK;
                        op_result_almaram = "读取电源告警参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_SchoolTime_RegAddr_Start == rtu_rt.reg_addr) {
                    if(m_ParamFromDev.putTimeByteBuffer(bbf_rx)) {
                        dt_user_cmd_ack = Power_ComBase.PWD_SchoolTime_Read_ACK;
                        op_result_jiaozhun = "读取设备时间成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_Load1Time_RegAddr_Start == rtu_rt.reg_addr) {
                    if(m_TimeControlFromDev.putByteBuffer1(bbf_rx)) {
                        dt_user_cmd_ack = Power_ComBase.PWD_Load1Time_Read_ACK;
                        op_result_jiaozhun = "读取1-6路分时参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_Load7Time_RegAddr_Start == rtu_rt.reg_addr) {
                    if(m_TimeControlFromDev.putByteBuffer2(bbf_rx)) {
                        dt_user_cmd_ack = Power_ComBase.PWD_Load2Time_Read_ACK;
                        op_result_jiaozhun = "读取7-12路分时参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_LoadControl_RegAddr_Start == rtu_rt.reg_addr) {
                    if(m_RoadStateFromDev.putByteBuffer(bbf_rx)) {
                        //System.err.println("读取分路1~12分路状态成功" + m_RoadStateFromDev);
                        isSuccess = true;
                    }
                }
            }else if(MyModBusRtu.CMD_TYPE_WRITE_STD == rtu_rx.Cmd) {
                if(Power_ComBase.PWD_DoorControl_RegAddr_Start == rtu_rx.reg_addr) {
                    //门磁控制
                    if(Power_ComBase.CMD_Fail != rtu_rx.result) {
                        op_result_sysparam = "控制门磁打开成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }else {
                        op_result_sysparam = "控制门磁关闭成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                    isSuccess = true;
                }else if(Power_ComBase.PWD_LoadControl_RegAddr_Start <= rtu_rx.reg_addr && rtu_rx.reg_addr < Power_ComBase.PWD_BackControl_RegAddr_Start) {
                    //分路1~12控制
                    int idx = rtu_rx.reg_addr - Power_ComBase.PWD_LoadControl_RegAddr_Start +1;
                    if(Power_ComBase.CMD_Fail != rtu_rx.result) {
                        op_result_sysparam = "控制分路" + idx + "打开成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }else {
                        op_result_sysparam = "控制分路" + idx + "关闭成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                    isSuccess = true;
                }else if(Power_ComBase.PWD_BackControl_RegAddr_Start <= rtu_rx.reg_addr && rtu_rx.reg_addr < Power_ComBase.PWD_DoorControl_RegAddr_Start) {
                    //分路1~12备电控制
                    int idx = rtu_rx.reg_addr - Power_ComBase.PWD_BackControl_RegAddr_Start +1;
                    if(Power_ComBase.CMD_Fail != rtu_rx.result) {
                        op_result_sysparam = "控制分路" + idx + "备电控制打开成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }else {
                        op_result_sysparam = "控制分路" + idx + "备电控制关闭失败" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                    isSuccess = true;
                }
            }else if(MyModBusRtu.CMD_TYPE_WRITE_MULTY == rtu_rx.Cmd) {
                if(Power_ComBase.PWD_PowerParam_RegAddr_Start == rtu_rx.reg_addr) {
                    //设置电源参数
                    if(rtu_rx.result == Power_Param.REG_Count_Power) {
                        op_result_powerparam = "设置电源参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }else {
                        op_result_powerparam = "设置电源参数失败" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                }else if(Power_ComBase.PWD_AlmParam_RegAddr_Start == rtu_rx.reg_addr) {
                    //设置电源告警参数
                    if(rtu_rx.result == Power_AlmParam.REG_Count) {
                        op_result_almaram = "设置电源告警参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }else {
                        op_result_almaram = "设置电源告警参数失败" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                }else if(Power_ComBase.PWD_SysParam_RegAddr_Start == rtu_rx.reg_addr) {
                    //设置电源系统参数
                    if(rtu_rx.result == Power_Param.REG_Count) {
                        op_result_sysparam = "设置电源系统参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }else {
                        op_result_sysparam = "设置电源系统参数失败" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                }else if(Power_ComBase.PWD_SchoolTime_RegAddr_Start == rtu_rx.reg_addr) {
                    //设置电源校时
                    if(rtu_rx.result == Power_Param.REG_Count_Time) {
                        op_result_jiaozhun = "设置电源校时成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }else {
                        op_result_jiaozhun = "设置电源校时失败" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                }else if(Power_ComBase.PWD_Load1Time_RegAddr_Start == rtu_rx.reg_addr) {
                    //设置分路1-6分时控制
                    if(rtu_rx.result == Power_TimeControl.REG_Count) {
                        op_result_jiaozhun = "设置分路1-6分时参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }else {
                        op_result_jiaozhun = "设置分路1-6分时参数失败" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                }else if(Power_ComBase.PWD_Load7Time_RegAddr_Start == rtu_rx.reg_addr) {
                    //设置分路7-12分时控制
                    if(rtu_rx.result == Power_TimeControl.REG_Count) {
                        op_result_jiaozhun = "设置分路7-12分时参数成功" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                        isSuccess = true;
                    }else {
                        op_result_jiaozhun = "设置分路7-12分时参数失败" + Com.get_DTF(new Date(), Com.DTF_YMDhms);
                    }
                }
            } else if(MyModBusRtu.CMD_TYPE_WRITE_SysUpdate == rtu_rx.Cmd) {
                if(Power_ComBase.PWD_SysReStart_RegAddr_Start == rtu_rx.reg_addr) {
                    //远程重启设备
                    if(rtu_rx.result == 0xBBBB) {
                        //设备远程重启成功
                        dt_user_cmd_ack = Power_ComBase.PWD_SysRestart_Success_ACK;
                        isSuccess = true;
                    }else {
                        //设备远程重启失败
                        dt_user_cmd_ack = Power_ComBase.PWD_SysRestart_Fail_ACK;
                    }
                }else if(Power_ComBase.PWD_TransUpdateFile_RegAddr_Start == rtu_rx.reg_addr) {
                    if(rtu_rx.result != 0) {
                        isSuccess = true;
                    }
                }else if(Power_ComBase.PWD_StartUpdate_RegAddr_Start == rtu_rx.reg_addr) {
                    if(rtu_rx.result != 0) {
                        isSuccess = true;
                        appendUppdateInfo("System Update Success ... " + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "\n");
                    }else {
                        appendUppdateInfo("System Update Fail ... " + Com.get_DTF(new Date(), Com.DTF_YMDhms) + "\n");
                    }
                }
            } else if(MyModBusRtu.CMD_TYPE_Read_UpdateFile == rtu_rx.Cmd) {
                if(Power_ComBase.PWD_TransUpdateFile_RegAddr_Start == rtu_rt.reg_addr) {
                    if(bbf_rx.remaining() > 2) {
                        isSuccess = true;
                    }else {
                        System.err.println("返回数据长度不足");
                    }
                }
            }
        }
        if(bbf_rx.limit() > 0 && isSuccess) {
            if(++comm_rx_cnt > 32500) {
                comm_rx_cnt = 0;
            }
        }
        return isSuccess;
    }
    public void setAutoStartRestTest(String filename, int type, boolean en) {
        AutoSaveDataFileName = filename;
        AutoStartResTestEn = en;
        AutoSaveResDataCount = 0;
    }
    private void closeSPCommPort() {
        if(SPCommMon.COMM_PORT_TYPE_Serial == m_COMM_PORT_TYPE) {
            m_SP_Comm.serialPort.close();
        } else {
            m_SocketComm.socketClose();
        }
    }
    public void run() {
        while(true == CommThreadRunning) {
            try {
                Thread.sleep(200);
                if(dt_dfu_en == false) {
                    makeCommTxData();
                    tr_Msg(CommTxBuffer, CommRxBuffer, true);
                    processRxData(CommRxBuffer);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
                CloseCommPort();
                JOptionPane.showMessageDialog(null, "ZDHJ CommPort 串口异常: " + e.getMessage());
            }
        }
        /******************************************/
        closeSPCommPort();
        /******************************************/
        dt_debug_inf.addDebugInf(Com.get_DTF(new Date(), Com.DTF_YMDhms_S)
                                + " ZDHJ CommPort is quit,"
                                + " COMM_PORT_TYPE: " + m_COMM_PORT_TYPE + "\n");
        /******************************************/
    }
    public void makeSendFileData(byte[] data,int block_num) {
        dt_databuffer = ByteBuffer.allocate(data.length + 2);
        dt_databuffer.order(ByteOrder.BIG_ENDIAN);
        dt_databuffer.putShort(FBS9100_ComBase.changeIntToShort(block_num));
        dt_databuffer.put(data);
        dt_databuffer.flip();
    }
    public void setCommCmd_DFU(boolean dfu_en, String dfu_file, JTextArea show_area) {
        dt_dfu_en = dfu_en;
        dt_show_msg = show_area;
        dt_dfuFileName = dfu_file;
    }
    public boolean checkDfuReadAckBuf(ByteBuffer bf,byte[] data) {
        boolean  check_ok = false;
        if(data.length <= bf.remaining()) {
            check_ok = true;
            for(int k = 0 ;k< data.length;k++) {
                if(data[k] != bf.get()) {
                    System.err.println("校验字节:" + k + "失败");
                    check_ok = false;
                    break;
                }
            }
        }else {
            //System.err.println("bf:"+ComFn.bytesToHexString(bf.array(), bf.array().length));
            //System.err.println("data:"+ComFn.bytesToHexString(data, data.length));
            //System.err.println("data.length:" + data.length + "\tbf.remaining():"+bf.remaining());
        }
        return check_ok;
    }
    public void appendUppdateInfo(String msg) {
        StringBuffer buffer = new StringBuffer(dt_show_msg.getText());
        dt_show_msg.setText(msg);
        dt_show_msg.append(buffer.toString());
    }
}
Device_Simulator_DTS_Tester/src/com/dev/ica_200kw/iac_200kw_page.java
New file
@@ -0,0 +1,525 @@
package com.dev.ica_200kw;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import main.page_debug_inf;
/**
 *     极简化电源界面
 * @author DELL
 *
 */
public class iac_200kw_page  extends JPanel {
    public static int LANG_TYPE_CN = 0;
    public static int LANG_TYPE_EN = 1;
    public static int LANG_TYPE    = LANG_TYPE_CN;
    public SPCommIAC_200KW Comm_ICA = null;
    private JTabbedPane tabbedPane;
    private JPanel panel_baseinfo;                //主界面
    private page_debug_inf panel_debug;            //调试信息
    private JTextField tf_Ua;                    //A相电压
    private JTextField tf_Ub;                    //B相电压
    private JTextField tf_Uc;                    //C相电压
    private JTextField tf_Fre;                    //交流频率
    private JTextField tf_Uab;                    //AB线电压
    private JTextField tf_Ubc;                    //BC线电压
    private JTextField tf_Uca;                    //CA线电压
    private JTextField tf_Ft;                    //功率因数
    private JTextField tf_JbxbUa;                //基波谐波电压A
    private JTextField tf_JbxbUb;                //基波谐波电压B
    private JTextField tf_JbxbUc;                //基波谐波电压C
    private JTextField tf_P;                    //有功功率
    private JTextField tf_JbxbIa;                //基波谐波电流A
    private JTextField tf_JbxbIb;                //基波谐波电流B
    private JTextField tf_JbxbIc;                //基波谐波电流C
    private JTextField tf_CurrHigh;                //电流上限值
    private JTextField tf_VolLow;                //电压下限值
    private JTextField tf_VolHigh;                //电压上限值
    private JTextField tf_Power;                //功率
    private JTextField tf_TestTime;                //测试时间
    private JTextField tf_WTPowerCount;            //稳态功率段数
    private JTextField tf_ZDPowerCount;            //整定功率段数
    private JTextField tf_TimeCount;            //整定测试间隔
    private JTextField tf_StateAlm;                //工作状态
    private JButton btn_ica_read;                //读取
    private JButton btn_ica_write;                //设置
    private JComboBox<String> cb_testtype;        //测试类型
    private JButton btn_set_testtype;            //设置
    private JButton btn_start_test;                //启动
    private JButton btn_stop_test;                //ֹͣ
    private JButton btn_pause_test;                //暂停
    private JButton btn_close_windos;                //暂停
    private JTextField tf_op_inf;                //工作状态
    private Logger logger;
    /**
     * Create the panel.
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public iac_200kw_page() {
        logger = LogManager.getLogger(iac_200kw_page.class);
        setLayout(new BorderLayout(0, 0));
        tabbedPane = new JTabbedPane(JTabbedPane.TOP);
        add(tabbedPane, BorderLayout.CENTER);
        panel_baseinfo =  new JPanel();                            //电源遥测
        panel_debug =  new page_debug_inf();                    //调试信息
        //tabbedPane.add(panel_baseinfo,"电源遥测");
        tabbedPane.addTab("设备信息",null/*new ImageIcon(zdhj_page_base.class.getResource("/png_16x16/target.png"))*/, panel_baseinfo, null);
//        tabbedPane.addTab("调试信息",null, panel_debug, null);
        tabbedPane.addTab("调试信息",null/*new ImageIcon(zdhj_page_base.class.getResource("/png_16x16/target.png"))*/, panel_debug, null);
        /************************ 电源遥测 ********************************************/
        panel_baseinfo.setLayout(new BorderLayout());
        JPanel panel_100 = new JPanel();
        panel_100.setBorder(new TitledBorder(null, "设备状态", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_baseinfo.add(panel_100, BorderLayout.CENTER);
        panel_100.setLayout(new GridLayout(6, 3, 10, 10));
        JPanel panel_101 = new JPanel();
        panel_baseinfo.add(panel_101, BorderLayout.EAST);
        panel_101.setLayout(new BorderLayout(0, 0));
        JPanel panel_102 = new JPanel();
        panel_102.setBorder(new TitledBorder(null, "A相电压", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_102);
        panel_102.setLayout(new BorderLayout(0, 0));
        tf_Ua = new JTextField();
        panel_102.add(tf_Ua);
        tf_Ua.setColumns(10);
        JPanel panel_103 = new JPanel();
        panel_103.setBorder(new TitledBorder(null, "B相电压", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_103);
        panel_103.setLayout(new BorderLayout(0, 0));
        tf_Ub = new JTextField();
        panel_103.add(tf_Ub);
        tf_Ub.setColumns(10);
        JPanel panel_104 = new JPanel();
        panel_104.setBorder(new TitledBorder(null, "C相电压", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_104);
        panel_104.setLayout(new BorderLayout(0, 0));
        tf_Uc = new JTextField();
        panel_104.add(tf_Uc);
        tf_Uc.setColumns(10);
        JPanel panel_105 = new JPanel();
        panel_105.setBorder(new TitledBorder(null, "交流频率", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_105.setLayout(new BorderLayout(0, 0));
        tf_Fre = new JTextField();
        panel_105.add(tf_Fre);
        tf_Fre.setColumns(10);
        JPanel panel_106 = new JPanel();
        panel_106.setBorder(new TitledBorder(null, "AB线电压", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_106);
        panel_106.setLayout(new BorderLayout(0, 0));
        tf_Uab = new JTextField();
        panel_106.add(tf_Uab);
        tf_Uab.setColumns(10);
        JPanel panel_107 = new JPanel();
        panel_107.setBorder(new TitledBorder(null, "BC线电压", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_107);
        panel_107.setLayout(new BorderLayout(0, 0));
        tf_Ubc = new JTextField();
        panel_107.add(tf_Ubc);
        tf_Ubc.setColumns(10);
        JPanel panel_108 = new JPanel();
        panel_108.setBorder(new TitledBorder(null, "CA线电压", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_108);
        panel_108.setLayout(new BorderLayout(0, 0));
        tf_Uca = new JTextField();
        panel_108.add(tf_Uca);
        tf_Uca.setColumns(10);
        JPanel panel_109 = new JPanel();
        panel_109.setBorder(new TitledBorder(null, "功率因数", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_109.setLayout(new BorderLayout(0, 0));
        tf_Ft = new JTextField();
        panel_109.add(tf_Ft);
        tf_Ft.setColumns(10);
        JPanel panel_110 = new JPanel();
        panel_110.setBorder(new TitledBorder(null, "基波谐波电压A", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_110);
        panel_110.setLayout(new BorderLayout(0, 0));
        tf_JbxbUa = new JTextField();
        panel_110.add(tf_JbxbUa);
        tf_JbxbUa.setColumns(10);
        JPanel panel_111 = new JPanel();
        panel_111.setBorder(new TitledBorder(null, "基波谐波电压B", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_111);
        panel_111.setLayout(new BorderLayout(0, 0));
        tf_JbxbUb = new JTextField();
        panel_111.add(tf_JbxbUb);
        tf_JbxbUb.setColumns(10);
        JPanel panel_112 = new JPanel();
        panel_112.setBorder(new TitledBorder(null, "基波谐波电压C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_112);
        panel_112.setLayout(new BorderLayout(0, 0));
        tf_JbxbUc = new JTextField();
        panel_112.add(tf_JbxbUc);
        tf_JbxbUc.setColumns(10);
        JPanel panel_113 = new JPanel();
        panel_113.setBorder(new TitledBorder(null, "有功功率", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_113.setLayout(new BorderLayout(0, 0));
        tf_P = new JTextField();
        panel_113.add(tf_P);
        tf_P.setColumns(10);
        JPanel panel_114 = new JPanel();
        panel_114.setBorder(new TitledBorder(null, "基波谐波电流A", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_114);
        panel_114.setLayout(new BorderLayout(0, 0));
        tf_JbxbIa = new JTextField();
        panel_114.add(tf_JbxbIa);
        tf_JbxbIa.setColumns(10);
        JPanel panel_115 = new JPanel();
        panel_115.setBorder(new TitledBorder(null, "基波谐波电流B", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_115);
        panel_115.setLayout(new BorderLayout(0, 0));
        tf_JbxbIb = new JTextField();
        panel_115.add(tf_JbxbIb);
        tf_JbxbIb.setColumns(10);
        JPanel panel_116 = new JPanel();
        panel_116.setBorder(new TitledBorder(null, "基波谐波电流C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_100.add(panel_116);
        panel_116.setLayout(new BorderLayout(0, 0));
        tf_JbxbIc = new JTextField();
        panel_116.add(tf_JbxbIc);
        tf_JbxbIc.setColumns(10);
        JPanel panel_117 = new JPanel();
        panel_117.setBorder(new TitledBorder(null, "工作状态", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_117.setLayout(new BorderLayout(0, 0));
        tf_StateAlm = new JTextField();
        panel_117.add(tf_StateAlm);
        tf_StateAlm.setColumns(10);
        panel_100.add(panel_105);
        panel_100.add(panel_109);
        panel_100.add(panel_113);
        panel_100.add(panel_117);
        JPanel panel_130 = new JPanel();
        panel_130.setBorder(new TitledBorder(null, "设备参数", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_101.add(panel_130,BorderLayout.NORTH);
        panel_130.setLayout(new BorderLayout(0, 0));
        JPanel panel_131 = new JPanel();
        panel_130.add(panel_131,BorderLayout.CENTER);
        panel_131.setLayout(new GridLayout(3,3));
        JPanel panel_132 = new JPanel();
        panel_132.setBorder(new TitledBorder(null, "电流上限值", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_132);
        panel_132.setLayout(new BorderLayout(0, 0));
        tf_CurrHigh = new JTextField();
        panel_132.add(tf_CurrHigh);
        tf_CurrHigh.setColumns(10);
        JPanel panel_133 = new JPanel();
        panel_133.setBorder(new TitledBorder(null, "电压下限值", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_133);
        panel_133.setLayout(new BorderLayout(0, 0));
        tf_VolLow = new JTextField();
        panel_133.add(tf_VolLow);
        tf_VolLow.setColumns(10);
        JPanel panel_134 = new JPanel();
        panel_134.setBorder(new TitledBorder(null, "电压上限值", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_134);
        panel_134.setLayout(new BorderLayout(0, 0));
        tf_VolHigh = new JTextField();
        panel_134.add(tf_VolHigh);
        tf_VolHigh.setColumns(10);
        JPanel panel_135 = new JPanel();
        panel_135.setBorder(new TitledBorder(null, "功率", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_135);
        panel_135.setLayout(new BorderLayout(0, 0));
        tf_Power = new JTextField();
        panel_135.add(tf_Power);
        tf_Power.setColumns(10);
        JPanel panel_136 = new JPanel();
        panel_136.setBorder(new TitledBorder(null, "测试时间", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_136);
        panel_136.setLayout(new BorderLayout(0, 0));
        tf_TestTime = new JTextField();
        panel_136.add(tf_TestTime);
        tf_TestTime.setColumns(10);
        JPanel panel_137 = new JPanel();
        panel_137.setBorder(new TitledBorder(null, "稳态功率段数", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_137);
        panel_137.setLayout(new BorderLayout(0, 0));
        tf_WTPowerCount = new JTextField();
        panel_137.add(tf_WTPowerCount);
        tf_WTPowerCount.setColumns(10);
        JPanel panel_138 = new JPanel();
        panel_138.setBorder(new TitledBorder(null, "整定功率段数", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_138);
        panel_138.setLayout(new BorderLayout(0, 0));
        tf_ZDPowerCount = new JTextField();
        panel_138.add(tf_ZDPowerCount);
        tf_ZDPowerCount.setColumns(10);
        JPanel panel_139 = new JPanel();
        panel_139.setBorder(new TitledBorder(null, "整定测试间隔", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_131.add(panel_139);
        panel_139.setLayout(new BorderLayout(0, 0));
        tf_TimeCount = new JTextField();
        panel_139.add(tf_TimeCount);
        tf_TimeCount.setColumns(10);
        JPanel panel_140 = new JPanel();
        panel_130.add(panel_140,BorderLayout.SOUTH);
        panel_140.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
        btn_ica_read = new JButton("读取");
        btn_ica_read.setEnabled(false);
        btn_ica_read.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn_ica_read.setFont(new Font("宋体", Font.PLAIN, 12));
        panel_140.add(btn_ica_read);
        btn_ica_write = new JButton("设置");
        btn_ica_write.setEnabled(false);
        btn_ica_write.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn_ica_write.setFont(new Font("宋体", Font.PLAIN, 12));
        panel_140.add(btn_ica_write);
        JPanel panel_141 = new JPanel();
        panel_141.setBorder(new TitledBorder(null, "设备遥调遥控", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_101.add(panel_141,BorderLayout.CENTER);
        panel_141.setLayout(new GridLayout(3, 1, 40, 10));
        JPanel panel_142 = new JPanel();
        panel_142.setBorder(new TitledBorder(null, "设置测试类型", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_141.add(panel_142);
        panel_142.setLayout(new GridLayout(1, 2,10,20));
        cb_testtype= new JComboBox<String>();
        panel_142.add(cb_testtype);
        cb_testtype.setFont(new Font("Dialog", Font.PLAIN, 14));
        cb_testtype.setModel(new DefaultComboBoxModel<String>(new String[] {"稳态测试", "整定测试" , "瞬态测试" , "波动测试" , "谐波测试"}));
        cb_testtype.setSelectedIndex(0);
        btn_set_testtype = new JButton("设置");
        btn_set_testtype.setEnabled(false);
        btn_set_testtype.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn_set_testtype.setFont(new Font("宋体", Font.PLAIN, 12));
        panel_142.add(btn_set_testtype);
        JPanel panel_143 = new JPanel();
        panel_143.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_141.add(panel_143);
        panel_143.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
        btn_start_test = new JButton("启动测试");
        btn_start_test.setEnabled(false);
        btn_start_test.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn_start_test.setFont(new Font("宋体", Font.PLAIN, 12));
        btn_start_test.setPreferredSize(new Dimension(120, 40));
        panel_143.add(btn_start_test);
        btn_stop_test = new JButton("停止测试");
        btn_stop_test.setEnabled(false);
        btn_stop_test.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn_stop_test.setFont(new Font("宋体", Font.PLAIN, 12));
        btn_stop_test.setPreferredSize(new Dimension(120, 40));
        panel_143.add(btn_stop_test);
        btn_pause_test = new JButton("暂停测试");
        btn_pause_test.setEnabled(false);
        btn_pause_test.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn_pause_test.setFont(new Font("宋体", Font.PLAIN, 12));
        btn_pause_test.setPreferredSize(new Dimension(120, 40));
        panel_143.add(btn_pause_test);
        JPanel panel_144 = new JPanel();
        panel_144.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_141.add(panel_144);
        panel_144.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
        btn_close_windos = new JButton("关闭提示窗口");
        btn_close_windos.setEnabled(false);
        btn_close_windos.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn_close_windos.setFont(new Font("宋体", Font.PLAIN, 12));
        btn_close_windos.setPreferredSize(new Dimension(120, 40));
        panel_144.add(btn_close_windos);
        JPanel panel_190 = new JPanel();
        panel_190.setBorder(new TitledBorder(null, "操作结果", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        panel_baseinfo.add(panel_190,BorderLayout.SOUTH);
        panel_190.setLayout(new BorderLayout(0, 0));
        tf_op_inf = new JTextField();
        panel_190.add(tf_op_inf,BorderLayout.CENTER);
        /********************************************************************/
    }
    public boolean openCommPort(int comm_type, String spname_or_ipaddr,
                                int bitrate_or_ipport, int dev_addr, Logger log) {
        boolean res = false;
        Comm_ICA = new SPCommIAC_200KW(dev_addr, bitrate_or_ipport, panel_debug, log);
        if(true == Comm_ICA.OpenCommPort(comm_type, spname_or_ipaddr, bitrate_or_ipport)) {
            Thread spcommThread = new Thread(Comm_ICA);
            spcommThread.start();
            setButttonState(true);
            res = true;
        }
        return res;
    }
    public void closeCommPort() {
        if(null != Comm_ICA) {
            Comm_ICA.CloseCommPort();
            Comm_ICA = null;
            setButttonState(false);
        }
    }
    public void setButttonState(boolean state) {
        btn_ica_read.setEnabled(state);
        btn_ica_write.setEnabled(state);
        btn_set_testtype.setEnabled(state);                //设置
        btn_start_test.setEnabled(state);                //启动
        btn_stop_test.setEnabled(state);                //ֹͣ
        btn_pause_test.setEnabled(state);                //暂停
        btn_close_windos.setEnabled(state);                //暂停
    }
    /**
     *
     */
    public void updateData() {
        if(null != Comm_ICA) {
        }
    }
}
Device_Simulator_DTS_Tester/src/main/main_window_computer.java
@@ -62,6 +62,7 @@
import com.dev.simpower.power_page_base;
import com.dev.switchdev.SwitchDevice_page_base;
import com.ueky.ukeycfg_page_base;
import com.dev.ica_200kw.*;
import javax.swing.BorderFactory;
import javax.swing.Box;
@@ -99,6 +100,7 @@
    public static int  CommDevType_IEC61850 = -1;            //13    IEC61850
    public static int  CommDevType_UKEY = -1;                //14    UKEY
    public static int  CommDevType_SIMPOWER = -1;            //15    极简化电源
    public static int  CommDevType_ICA_200KW = -1;            //15    ICA_200KW
    
    public static final int  CommDevType_MAX = 17;
    
@@ -129,14 +131,16 @@
    public static final boolean APP_IEC61850_EN = true;                   //IEC61850
    public static final boolean APP_UKEY_EN = true;                       //UKEY
    public static final boolean APP_SIMPOWER_EN = true;                   //极简化电源
    public static final boolean APP_ICA_200KW_EN = true;               //ICA-200KW
    
    public int CommDevType = 2;                //默认显示tab选项卡
    public int CommDevType = 6;                //默认显示tab选项卡
    
    public static final int DebugMode_TYPE_Debug     = 0;    //调试模拟
    public static final int DebugMode_TYPE_Package     = 1;    //电脑打包模式
    public static final int DebugMode_TYPE_Screen     = 2;    //10寸屏模式
    
    public int DebugMode = DebugMode_TYPE_Screen;            //是否为调试模式true:调试模式     false:打包模式[会隐藏左侧选项卡]
    public int DebugMode = DebugMode_TYPE_Package;            //是否为调试模式true:调试模式     false:打包模式[会隐藏左侧选项卡]
    
    public boolean MonVol_Is_Adj = false;
    public boolean MonRes_Is_Test = false;
@@ -175,6 +179,7 @@
    private JPanel main_TabbedTopPane13;
    private JPanel main_TabbedTopPane14;
    private JPanel main_TabbedTopPane15;
    private JPanel main_TabbedTopPane16;
    
    private JPanel main_TabbedRightPane0;
    private JPanel main_TabbedRightPane1;
@@ -192,6 +197,7 @@
    private JPanel main_TabbedRightPane13;
    private JPanel main_TabbedRightPane14;
    private JPanel main_TabbedRightPane15;
    private JPanel main_TabbedRightPane16;
    
    
    private JButton btn_renew_commport;
@@ -230,6 +236,8 @@
    private ukeycfg_page_base panel_ueky_page_base;                        
    private power_page_base panel_power_page_base;                        //极简化电源
    private iac_200kw_page panel_ica_200kw_page;                                //ICA-200KW
    
    private List<JPanel> pre_panels = new ArrayList<>();                //前置面板空白面板
     
@@ -776,6 +784,8 @@
        main_TabbedTopPane14.setLayout(new BoxLayout(main_TabbedTopPane14, BoxLayout.X_AXIS));
        main_TabbedTopPane15 = new JPanel();
        main_TabbedTopPane15.setLayout(new BoxLayout(main_TabbedTopPane15, BoxLayout.X_AXIS));
        main_TabbedTopPane16 = new JPanel();
        main_TabbedTopPane16.setLayout(new BoxLayout(main_TabbedTopPane16, BoxLayout.X_AXIS));
        
        
        main_TabbedRightPane0 = new JPanel();
@@ -810,6 +820,8 @@
        main_TabbedRightPane14.setLayout(new BorderLayout());
        main_TabbedRightPane15 = new JPanel();
        main_TabbedRightPane15.setLayout(new BorderLayout());
        main_TabbedRightPane16 = new JPanel();
        main_TabbedRightPane16.setLayout(new BorderLayout());
        
        top_panel1 = new JPanel();
        top_panel1.setLayout(new BoxLayout(top_panel1, BoxLayout.X_AXIS));
@@ -1103,6 +1115,18 @@
                            int tcp_type = cb_tcp_udp.getSelectedIndex();
                            System.out.println("tcp_type:" + tcp_type);
                        }
                    } else if(main_window_computer.CommDevType_ICA_200KW == main_DevType) {
                        if(SPCommMon.COMM_PORT_TYPE_Serial == comm_type) {
                            //串口通信
                            int dev_addr = Integer.parseInt(tf_target_addr.getText().trim());
                            comm_open_res = panel_ica_200kw_page.openCommPort(comm_type, spname_or_ipaddr,
                                    bitrate_or_ipport, dev_addr, m_Log);
                        }else if(SPCommMon.COMM_PORT_TYPE_Socket == comm_type){
                            //客户端通信
                            int tcp_type = cb_tcp_udp.getSelectedIndex();
                            System.out.println("tcp_type:" + tcp_type);
                        }
                    }
                    
                    if(true == comm_open_res) {
@@ -1191,7 +1215,9 @@
                if(null != panel_power_page_base) {
                    panel_power_page_base.closeCommPort();
                }
                if(null != panel_ica_200kw_page) {
                    panel_ica_200kw_page.closeCommPort();
                }
                tf_target_addr.setEditable(true);
                btn_renew_commport.setEnabled(true);
                cb_commport.setEnabled(true);
@@ -1251,7 +1277,7 @@
            public void stateChanged(ChangeEvent arg0) {
                System.out.println("监听到软件切换:" + main_TabbedPane.getSelectedIndex() + " CommDevType:" + CommDevType);
                
                if (DebugMode_TYPE_Screen == DebugMode /* || DebugMode_TYPE_Package == DebugMode */ ) {
                if (DebugMode_TYPE_Screen == DebugMode /* || DebugMode_TYPE_Package == DebugMode */  ) {
                    //显示屏模式时会出现头部组件消失问题,提前结束
                    return;
                }
@@ -1789,6 +1815,36 @@
            pre_panels.add(new JPanel());
        } 
        
        if(APP_ICA_200KW_EN) {
            CommDevType_ICA_200KW = jtable_index++;
            String bybb_title = "ICA-200KW";
            panel_ica_200kw_page = new iac_200kw_page();
            if(DebugMode == DebugMode_TYPE_Screen) {
                main_TabbedPane.add(bybb_title, new JPanel());
            }else {
                main_TabbedPane.add(bybb_title, main_TabbedRightPane16);
                main_TabbedPane.setIconAt(CommDevType_ICA_200KW, new ImageIcon(main_window_computer.class.getResource("/png_16x16/layer_treansparent.png")));
            }
            main_TabbedRightPane16.add(main_TabbedTopPane16,BorderLayout.NORTH);
            main_TabbedRightPane16.add(panel_ica_200kw_page,BorderLayout.CENTER);
            tabbedTopPanes.add(main_TabbedTopPane16);
            tabbedRightPanes.add(main_TabbedRightPane16);
            if(CommDevType == CommDevType_ICA_200KW) {
                //当默认是ICA-200KW
                cb_comm_bitrate.setSelectedIndex(6);        //默认波特率9600
                tf_target_addr.setText("1");                //默认设备地址1
            }
        }else {
            pre_panels.add(new JPanel());
        }
        
        if(pre_panels.size() > 0) {
            for (JPanel jPanel : pre_panels) {
@@ -1804,14 +1860,14 @@
        //打包模式判断选项--隐藏左侧选卡并设置调试软件名称
        if(CommDevType >= CommDevType_MON && CommDevType <= CommDevType_MAX) {
            
            //System.out.println("CommDevType$$$$$$$$$$$--"+CommDevType);
            System.out.println("CommDevType$$$$$$$$$$$--"+CommDevType);
            
            //选中默认选项卡
            main_TabbedPane.setSelectedIndex(CommDevType);
            
            int tab_index = main_TabbedPane.getSelectedIndex();
            
            //System.out.println("tab_index$$$$$$$$$$$--"+tab_index);
            System.out.println("tab_index$$$$$$$$$$$--"+tab_index);
            
            if(DebugMode == DebugMode_TYPE_Package) {
                //打包模式时 会出现  main_TabbedPane.getSelectedIndex 与 CommDevType 不一致
@@ -1824,20 +1880,22 @@
                JPanel topPanel = tabbedTopPanes.get(tab_index);
                JPanel rightPanel = tabbedRightPanes.get(tab_index);
                
                System.out.println("66666666666"+main_TabbedPane.getSelectedIndex());
                //System.err.println(main_TabbedTopPane0+"==="+topPanel + "=="+ rightPanel);
                if(topPanel != null && rightPanel != null) {
                    
                    frmSerialport.getContentPane().removeAll();
                    
                    //System.out.println("333:"+main_TabbedPane.getSelectedIndex()+"\tCommDevType"+CommDevType);
                    System.out.println("333:"+main_TabbedPane.getSelectedIndex()+"\tCommDevType"+CommDevType);
                    
                    frmSerialport.getContentPane().add(topPanel, BorderLayout.NORTH);
                    frmSerialport.getContentPane().add(rightPanel, BorderLayout.CENTER);
                    System.out.println("777:"+main_TabbedPane.getSelectedIndex()+"\tCommDevType"+CommDevType);
                    frmSerialport.setMinimumSize(new Dimension(1030, 640));
                    
                    //System.out.println("222:"+main_TabbedPane.getSelectedIndex()+"\tCommDevType"+CommDevType);
                    System.out.println("222:"+main_TabbedPane.getSelectedIndex()+"\tCommDevType"+CommDevType);
                }
                if(CommDevType_MON == CommDevType){                        
                        //frmSerialport.getContentPane().add(panel_mon_base, BorderLayout.CENTER);
@@ -1889,8 +1947,10 @@
                                        
                }else if(CommDevType_IEC61850 == CommDevType) {
                    frmSerialport.getContentPane().remove(topPanel);
                }else if(CommDevType_ICA_200KW == CommDevType) {
                    frmSerialport.getContentPane().add(top_panel1, BorderLayout.NORTH);
                    mTitle = "ICA-200KW调试工具";
                }
            } else if(DebugMode == DebugMode_TYPE_Screen){
                //btn_back = null;    
                
@@ -1901,7 +1961,7 @@
                top_panel1.remove(panel_10);
            }
        }
        //System.out.println("444:"+main_TabbedPane.getSelectedIndex()+"\tCommDevType"+CommDevType);
        System.out.println("444:"+main_TabbedPane.getSelectedIndex()+"\tCommDevType"+CommDevType);
        
        
        frmSerialport.setTitle(mTitle+ mVerSioin + "     " + Com.get_DTF(new Date(), Com.DTF_YMDhms));
@@ -2007,7 +2067,12 @@
                tf_rxcnt.setText(String.format("RX:%d", panel_power_page_base.Comm_POWER.comm_rx_cnt));
                
                panel_power_page_base.updateData();
            }
            } else if(CommDevType_ICA_200KW == main_DevType) {
                tf_txcnt.setText(String.format("TX:%d", panel_ica_200kw_page.Comm_ICA.comm_tx_cnt));
                tf_rxcnt.setText(String.format("RX:%d", panel_ica_200kw_page.Comm_ICA.comm_rx_cnt));
                panel_ica_200kw_page.updateData();
            }
        } catch (Exception e) {
            m_Log.error(e.toString(), e);
        }