whyclj
2020-09-19 30a313e8a229770ec5c4eef49c6e4f57220deca3
添加设备通讯状态更新功能
6个文件已修改
64 ■■■■■ 已修改文件
src/com/data/PowerArk_Task_SQL.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/dev/base/data/Dynamicload_SocketClient_Thread.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/modbus/data/MyModbusMaster.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/modbus/data/MyModbusUtils.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/sql/Sql_Mysql.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/main_MonitorServer_Dynamicload.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/data/PowerArk_Task_SQL.java
@@ -11,6 +11,7 @@
import com.dev.base.data.Dynamicload_control;
import com.dev.base.data.Dynamicload_inf;
import com.dev.base.data.Dynamicload_state;
import com.modbus.data.MyModbusMaster;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
@@ -466,4 +467,38 @@
            sql.close_con();
        }
    }
    /**
     *     插入或更新当前设备的连接状态
     * @param pool
     * @param dev_id
     * @param master
     */
    public static void insertOrUpdateDeviceConnectState(MysqlConnPool pool,int dev_id,MyModbusMaster master) {
        String sql_str_sel = " SELECT * FROM "+Sql_Mysql.Tb_Device_ConnectState+" WHERE dev_id = " + dev_id;
        String sql_str_ins = " INSERT INTO "+Sql_Mysql.Tb_Device_ConnectState+"(dev_id,connect_en,record_time) values("+dev_id+","+master.getConnectState()+",'"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"');";
        String sql_str_upd = " UPDATE "+Sql_Mysql.Tb_Device_ConnectState+" SET connect_en = "+master.getConnectState()+",record_time='"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"' WHERE dev_id = " + dev_id;
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str_sel);
            if(res.next()) {
                sql.sqlMysqlExecute(sql_str_upd);
            }else {
                sql.sqlMysqlExecute(sql_str_ins);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                sql.close_con();
            }
        }
    }
}
src/com/dev/base/data/Dynamicload_SocketClient_Thread.java
@@ -60,6 +60,7 @@
                //System.err.println(dinf.dev_id + "=====" + ((new Date()).getTime() - last.getTime()));
                last = new Date();
                PowerArk_Task_SQL.insertOrUpdateDeviceConnectState(conn_pool, dinf.dev_id, master);
                if (runCount % 10 == 0) {
                    // 更新当前设备ip
                    master.setTarget_ip(dinf.dev_ip);
src/com/modbus/data/MyModbusMaster.java
@@ -1,8 +1,5 @@
package com.modbus.data;
import java.text.NumberFormat;
import com.base.ComBase;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.ip.IpParameters;
@@ -10,9 +7,11 @@
    public final static int SLAVEID_DEFAULT = 2;
    
    public final static int MAX_ERROR_COUNT = 2;        //最大连续错误计数
    public final static int LOSE_CONNECT_COUNT = 20;    //通讯中断最大计数
    private ModbusMaster master;
    private int errcount;                                //错误计数    错误连续超过三个时重新获取master
    private int totalerr;                                //总的错误计数            //用于判别设备是否掉线
    private int totalerr = 31;                            //总的错误计数[默认失去连接]    用于判别设备是否掉线
    private String target_ip;                            //目标ip
    private int slaveId;                                //设备ID
    
@@ -42,6 +41,7 @@
    }
    
    public void reConnect() {
        System.out.println(target_ip);
        IpParameters params = new IpParameters();
        params.setHost(target_ip);
        if(this.master != null) {
@@ -85,6 +85,13 @@
        
    }
    
    public int getConnectState() {
        if(this.totalerr < LOSE_CONNECT_COUNT) {
            return 1;
        }
        return 0;
    }
    public int getTotalerr() {
        return totalerr;
    }
src/com/modbus/data/MyModbusUtils.java
@@ -147,10 +147,18 @@
 
    public static BatchResults<Integer> readMutilRegisters(BatchRead<Integer> batch,MyModbusMaster master){
        batch.setContiguousRequests(false);
        boolean isSuccess = true;
        try {
            return master.getMaster().send(batch);
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
            isSuccess = false;
        } finally {
            if(isSuccess) {
                master.clearError();
            }else{
                master.addErrorCount();
            }
        }
        return null;
    }
src/com/sql/Sql_Mysql.java
@@ -31,6 +31,8 @@
    final public static String DB_Equip_Alarm = "`db_equip_alarm`";
    
    final public static String DB_DynamicSystem = "`db_dynamicsystem`";
    final public static String DB_Electric2MWSystem = "`db_electric2mwsystem`";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_HardDevSmsState = "tb_hard_dev_sms_state";
    //--------------------------------------------------------------------------------------------//
@@ -159,6 +161,7 @@
    public final static String Tb_Dynamicload_Button_Rt = DB_DynamicSystem +".tb_dynamicload_button_rt";    //按钮反馈表
    public final static String Tb_Dynamicload_Control = DB_DynamicSystem + ".tb_dynamicload_control";        //电源柜控制表
    
    public final static String Tb_Device_ConnectState = DB_Electric2MWSystem+".tb_device_connectstate";        //设备通讯状态表
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    
src/main/main_MonitorServer_Dynamicload.java
@@ -22,7 +22,7 @@
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 1.101;
    public final static double m_VersionNum = 1.201;
    public final static String m_Version = "Welcome To Use main_MonitorServer_Dynamicload V" 
                                            + m_VersionNum ;
    /**************************************************************************/