whyclj
2020-07-22 e98a7d02128e745fbbdd1e114878a1762a5e5849
修改通讯
7个文件已修改
52 ■■■■ 已修改文件
src/com/data/PowerArk_ServerSocket_Thread_SQL.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/data/PowerArk_SocketClient_Thread_SQL.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/data/PowerArk_SocketCliet_Thread.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/dev/base/data/Dynamicload_control.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/dev/base/data/Dynamicload_inf.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/modbus/util/BaseData.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/modbus/util/Modbus_ComBase.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/data/PowerArk_ServerSocket_Thread_SQL.java
@@ -193,6 +193,7 @@
                + ",central_control = " + control.getCentral_control()
                + ",inter_volume_M200 = " + control.getInter_volume_M200()
                + ",fan_button = " + control.getFan_button()
                + ",interval_time = " + control.interval_time
                + ",set_power = " + control.set_power
                + " WHERE dev_id = " + control.dev_id;
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
src/com/data/PowerArk_SocketClient_Thread_SQL.java
@@ -50,6 +50,7 @@
                control.fan_button = res.getInt("fan_button");                    //风机按钮
                //control.fan_output = res.getInt("fan_output");                    //风机输出
                control.set_power = res.getFloat("set_power");                    //设定功率
                control.interval_time = res.getInt("interval_time");            //间隔时间
            }
        } catch (Exception e) {
            e.printStackTrace();
src/com/data/PowerArk_SocketCliet_Thread.java
@@ -100,7 +100,7 @@
                    
                    if(run_count % 2 ==0 ) {
                        //读取V区各个按钮状态  02-18
                        basedata = new BaseData(Modbus_ComBase.READ_HOLDING_REGISTER, Modbus_ComBase.LocalControl_Start_Addr, 17);
                        basedata = new BaseData(Modbus_ComBase.READ_HOLDING_REGISTER, Modbus_ComBase.ActualSetPower_Start_Addr, 17);
                        if(SocketComm(basedata.createReadData(), socket)) {
                            //读取V区状态成功 
                        }
@@ -441,9 +441,19 @@
                    
                    if(control.set_power >= CMD_Start) {
                        //设定功率
                        basedata = new BaseData(Modbus_ComBase.WRITE_MULTIPLE_REGISTER, Modbus_ComBase.SetPower_Start_Addr, 1);
                        basedata = new BaseData(Modbus_ComBase.WRITE_MULTIPLE_REGISTER, Modbus_ComBase.SetPower_Start_Addr, 2);
                        if(SocketComm(basedata.createWiriteData(BaseData.createFloatByte(control.set_power)), socket)) {
                            control.set_power = CMD_SUCCESS;
                        }
                        control.set_power = CMD_FAIL;
                        SocketComm(basedata.createWiriteData(BaseData.createFloatByte(control.set_power)), socket);
                    }
                    if(control.interval_time >= CMD_Start) {
                        //间隔时间
                        basedata = new BaseData(Modbus_ComBase.WRITE_MULTIPLE_REGISTER, Modbus_ComBase.InterTime_Start_Addr, 1);
                        if(SocketComm(basedata.createWiriteData(BaseData.createIntByte(control.interval_time)), socket)) {
                            control.interval_time = CMD_SUCCESS;
                        }
                        control.interval_time = CMD_FAIL;
                    }
                    //System.out.println(control);
                    PowerArk_ServerSocket_Thread_SQL.updateDynamicload_ControlTable(conn_pool, control);                    
@@ -575,7 +585,7 @@
                //读取线圈数据成功[4013-4030]
                if(baseData.addrstart == Modbus_ComBase.OverTmp_Start_Addr) {
                    if(dyna_inf.putReadIBackByteBuffer(bf)) {
                        System.out.println("读取I区数据成功4013-4030");
                        //System.out.println("读取I区数据成功4013-4030");
                        issuccess = true;
                    }             
                }
@@ -583,7 +593,7 @@
                //读取M区状态成功[01 - 12]
                if(baseData.addrstart == Modbus_ComBase.AutoProcess1_Start_Addr) {
                    if(dyna_inf.putReadMBackByteBuffer(bf)) {
                        System.out.println("读取M区数据成功01-12");
                        //System.out.println("读取M区数据成功01-12");
                        issuccess = true;
                    } 
                }
@@ -592,7 +602,7 @@
                if(baseData.addrstart == Modbus_ComBase.ButtonOutPut_Start_Addr) {
                    //System.out.println("%%%%%%%%%%%%%%%%%%%%");
                    if(dyna_inf.putReadQBackByteBuffer(bf)) {
                        System.out.println("读取Q区数据成功8000-8013");
                        //System.out.println("读取Q区数据成功8000-8013");
                        issuccess = true;
                    } 
                }
@@ -600,7 +610,7 @@
                //读取M区各个控制的状态[0040-0160]
                if(baseData.addrstart == Modbus_ComBase.LocalControl_Start_Addr) {
                    if(dyna_inf.putReadMControlStateByteBuffer(bf)) {
                        System.out.println("读取M区数据成功0040-0160");
                        //System.out.println("读取M区数据成功0040-0160");
                        issuccess = true;
                    } 
                }
src/com/dev/base/data/Dynamicload_control.java
@@ -28,8 +28,9 @@
    public int central_control;            //中间控制
    public int inter_volume_M200;        //中间量M200
    public int fan_button;                //风机按钮
    //public int fan_output;                //风机输出
    //public int fan_output;            //风机输出
    public float set_power;                //设定功率
    public int interval_time;            //间隔时间
    public String note;
    
    public Dynamicload_control(int dev_id) {
src/com/dev/base/data/Dynamicload_inf.java
@@ -155,11 +155,12 @@
    public boolean putReadVBackByteBuffer(ByteBuffer bf) {
        ByteBuffer tmpbf = bf;
        int datacount = ComBase.changeByteToInt(bf.get());
        System.out.println("读取功率"+datacount);
        //System.out.println("读取功率"+datacount);
        if(datacount < 34) {
            return false;
        }
        state.actual_set_power = bf.getFloat();                        //设定功率    0002
        //System.out.println("设定功率:"+state.actual_set_power);
        state.output_power = bf.getFloat();                            //已输出功率    0004
        float value = bf.getFloat();                                //备用        0006
        state.set_power = bf.getFloat();                            //设定功率    0008
src/com/modbus/util/BaseData.java
@@ -127,6 +127,22 @@
        bf.flip();
        byte[] b = new byte[4];
        bf.get(b);
        System.out.println(ComFn.bytesToHexString(b, b.length)+value);
        return b;
    }
    /**
     * 构造写入多个寄存器数据
     * @param value
     * @return
     */
    public static byte[] createIntByte(int value) {
        ByteBuffer bf = ByteBuffer.allocate(2);
        bf.order(ByteOrder.BIG_ENDIAN);
        bf.putShort(ComBase.changeIntToShort(value));
        bf.flip();
        byte[] b = new byte[2];
        bf.get(b);
        return b;
    }
    
src/com/modbus/util/Modbus_ComBase.java
@@ -9,8 +9,8 @@
    public static final int READ_INPUT_REGISTER         = 0x04;            //读输入寄存器            单/多
    public static final int WRITE_SINGLE_COIL             = 0x05;            //写线圈状态            单
    public static final int WRITE_SINGLE_REGISTER         = 0x06;            //写单个保持寄存器        单
    public static final int WRITE_MULTIPLE_COIL         = 0x15;            //写多个线圈            多
    public static final int WRITE_MULTIPLE_REGISTER     = 0x16;            //写多个保持寄存器        多
    public static final int WRITE_MULTIPLE_COIL         = 0x0F;            //写多个线圈            多
    public static final int WRITE_MULTIPLE_REGISTER     = 0x10;            //写多个保持寄存器        多