whyclj
2020-09-19 02706f6f7a5962945c6eded9c0325aa02b93c7b6
添加设备通讯状态更新
6个文件已修改
64 ■■■■■ 已修改文件
WaterSystem_MonitorServer/src/com/modbus/data/MyModbusMaster.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/modbus/data/MyModbusUtils.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/sql/Sql_Mysql.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_Task_SQL.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/com/watersystem/monitor/Watersystem_SocketClient_Thread.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/src/main/main_WaterSystem_MonitorServer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WaterSystem_MonitorServer/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;
    }
WaterSystem_MonitorServer/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;
    }
WaterSystem_MonitorServer/src/com/sql/Sql_Mysql.java
@@ -38,6 +38,7 @@
    
    final public static String DB_Watersystem = "`db_watersystem`";
    
    final public static String DB_Electric2MWSystem = "`db_electric2mwsystem`";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_HardDevSmsState = "tb_hard_dev_sms_state";
    //--------------------------------------------------------------------------------------------//
@@ -190,6 +191,7 @@
    public final static String Tb_water_state = DB_Watersystem + ".tb_water_state";    //水冷系统实时状态                                
    public final static String Tb_water_alarm = DB_Watersystem + ".tb_water_alarm";    //水冷系统告警                            
    
    public final static String Tb_Device_ConnectState = DB_Electric2MWSystem+".tb_device_connectstate";                //设备通讯状态表
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    
WaterSystem_MonitorServer/src/com/watersystem/monitor/Water_Task_SQL.java
@@ -3,9 +3,11 @@
import java.security.interfaces.RSAKey;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.modbus.data.MyModbusMaster;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
@@ -336,4 +338,37 @@
        
    }
    /**
     *     插入或更新当前设备的连接状态
     * @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();
            }
        }
    }
}
WaterSystem_MonitorServer/src/com/watersystem/monitor/Watersystem_SocketClient_Thread.java
@@ -73,6 +73,8 @@
                    //Water_Task_SQL.insertOrUpdateWater_alarmTable(conn_pool, listAlarm);
                }
                
                Water_Task_SQL.insertOrUpdateDeviceConnectState(conn_pool, winf.water_id, master);
                if(runCount%10 == 0) {
                    //更新当前设备ip
                    master.setTarget_ip(winf.water_ip);
WaterSystem_MonitorServer/src/main/main_WaterSystem_MonitorServer.java
@@ -21,7 +21,7 @@
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;    
    public final static double m_VersionNum = 1.102;
    public final static double m_VersionNum = 1.202;
    public final static String m_Version = "Welcome To Use main_MonitorServer_Motor V" 
                                            + m_VersionNum ;
    /**************************************************************************/