From 1af31e38c6a2cd072ed310149c656780610fe57b Mon Sep 17 00:00:00 2001 From: DELL <1525436766@qq.com> Date: 星期一, 21 四月 2025 08:42:54 +0800 Subject: [PATCH] 2.修复锁具开启之后记录bug --- ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java | 340 ++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 204 insertions(+), 136 deletions(-) diff --git a/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java b/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java index 5cf1850..4e6daa4 100644 --- a/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java +++ b/ElectLock_Monitor/src/com/dev/lock/comm/Lock_SocketClient_Thread.java @@ -31,8 +31,7 @@ private Logger logger; private AppConfig config; - private ElectLock_State mLock_State; - + private ElectLock_State[] mLock_State = new ElectLock_State[ElectLock_ComBase.Lock_MaxLineCount]; private ElectLock_State mLock_param; private String client_ip; //瀹㈡埛绔疘P鍦板潃 @@ -41,7 +40,7 @@ private MyModBusRtu mRtu_Tx; //鍙戦�佹暟鎹� private MyModBusRtu mRtu_Rx; //杩斿洖鏁版嵁 - private ElectLock_Inf ele_lock = null; + private ElectLock_Inf[] ele_lock = new ElectLock_Inf[ElectLock_ComBase.Lock_MaxLineCount]; private ElectLock_Array GB_Lock_Array; @@ -50,6 +49,11 @@ private boolean S_thread_run_flag = true; private int plat_model; + + private int MaxLockCount; + private int NowLockIdx = 0; //褰撳墠璇诲彇鐘舵�佺殑閿佸叿绱㈠紩 + + private int ErrorCount = 0; //杩炵画閿欒璁℃暟,杩炴帴閿欒璁℃暟 public Lock_SocketClient_Thread(MysqlConnPool pool,ElectLock_Array GB_Lock_Array ,AppConfig config,Socket tmp_socket) { this.pool = pool; @@ -61,8 +65,9 @@ this.logger = LogManager.getLogger(this); this.mRtu_Tx = new MyModBusRtu(); this.mRtu_Rx = new MyModBusRtu(); - this.mLock_State = new ElectLock_State(); - this.mLock_param = new ElectLock_State(); + + mLock_param = new ElectLock_State(); + } @Override @@ -71,10 +76,10 @@ int runCount = 0; try { - if(S_thread_run_flag) { - mLock_State.setLock_online(1); - Lock_Task_SQL.insertLock_Rt_Table(pool, client_id, mLock_State); - } +// if(S_thread_run_flag) { +// mLock_State.setLock_online(1); +// Lock_Task_SQL.insertLock_Rt_Table(pool, client_id, mLock_State); +// } while(S_thread_run_flag) { Lock_Task_SQL.queryElectLockControlCmd(pool,client_id,mLock_param); @@ -83,39 +88,39 @@ ElectLock_Ctl_Log tmp_log = null; if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_ClearIdCard) { - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_CLEAR_AUTH_ADDR, ElectLock_ComBase.RegCount_Sigle); + mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_CLEAR_AUTH_ADDR, ElectLock_ComBase.RegCount_Sigle); if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Control_Value))) { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_ClearIdCard_Ack); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_ClearIdCard, true,0,mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_ClearIdCard, true,0,mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } else { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_ClearIdCard, false,0,mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_ClearIdCard, false,0,mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_REMOTE_OPEN_Lock) { - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_REMOTE_OPEN_ADDR, ElectLock_ComBase.RegCount_Sigle); + mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_REMOTE_OPEN_ADDR, ElectLock_ComBase.RegCount_Sigle); if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Control_Value))) { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_REMOTE_OPEN_Lock_Ack); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, true,0,mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, true,0,mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } else { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, false,0,mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_OPEN_Lock, false,0,mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); //杩滅▼寮�閿佸け璐ユ椂锛岃褰曚竴绗斿紑閿佸け璐ュ憡璀� - Lock_Task_SQL.insertRemoteOpenFailAlarm(pool, client_id); + Lock_Task_SQL.insertRemoteOpenFailAlarm(pool, mLock_param.getLock_id()); } }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_REMOTE_ReStart) { - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_RESTART_ADDR, ElectLock_ComBase.RegCount_Sigle); + mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_YC, ElectLock_ComBase.LOCK_RESTART_ADDR, ElectLock_ComBase.RegCount_Sigle); if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Control_Value))) { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_REMOTE_ReStart_Ack); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_ReStart, true,0,mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_ReStart, true,0,mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } else { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_REMOTE_ReStart, false,0,mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_REMOTE_ReStart, false,0,mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_SetLockAddr) { @@ -132,28 +137,53 @@ // } }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_AddIdCard) { //娣诲姞ID鍗℃巿鏉� - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); + mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); System.out.println("mLock_param.getId_card_set():"+mLock_param.getId_card_set()); if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(mLock_param.getId_card_set()))) { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_AddIdCard_Ack); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_AddIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } else { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_AddIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_RemoveIdCard) { //鍙栨秷ID鍗℃巿鏉� - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); + mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(mLock_param.getId_card_set()))) { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_RemoveIdCard_Ack); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_RemoveIdCard, true,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } else { mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail); - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); + tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_RemoveIdCard, false,mLock_param.getId_card_set(),mLock_param.getCtl_uname()); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); + } + }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_OpenBluetooth) { + //寮�鍚摑鐗� + mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Bluetooth_ADDR, ElectLock_ComBase.RegCount_Sigle); + System.out.println("mLock_param.getId_card_set():"+mLock_param.getId_card_set()); + if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Lock_Bluetooth_Open))) { + mLock_param.setOp_cmd(ElectLock_ComBase.CMD_OpenBluetooth_Ack); + //tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothOpen, true,0,mLock_param.getCtl_uname()); + //Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); + } else { + mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail); + //tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothOpen, false,0,mLock_param.getCtl_uname()); + //Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); + } + }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_CloseBluetooth) { + //鍏抽棴钃濈墮 + mRtu_Tx.mkBusRtu((mLock_param.getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Bluetooth_ADDR, ElectLock_ComBase.RegCount_Sigle); + if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(ElectLock_ComBase.Lock_Bluetooth_Close))) { + mLock_param.setOp_cmd(ElectLock_ComBase.CMD_CloseBluetooth_Ack); + //tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothClose, true,0,mLock_param.getCtl_uname()); + //Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); + } else { + mLock_param.setOp_cmd(ElectLock_ComBase.CMD_Fail); + //tmp_log = new ElectLock_Ctl_Log(mLock_param.getLock_id(), ElectLock_ComBase.CtlType_BluetoothClose, false,0,mLock_param.getCtl_uname()); + //Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); } } @@ -162,31 +192,32 @@ } - if((runCount%16) == 0) { + if((runCount%(16/MaxLockCount)) == 0) { //璇诲彇閿佸叿鐨勫疄鏃剁姸鎬� - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_READ_INPUT, ElectLock_ComBase.LOCK_REAL_ADDR, ElectLock_State.Reg_Count_Real); + mRtu_Tx.mkBusRtu((mLock_State[NowLockIdx].getLockAddr()%255),MyModBusRtu.CMD_TYPE_READ_INPUT, ElectLock_ComBase.LOCK_REAL_ADDR, ElectLock_State.Reg_Count_Real); if(SocketComm(mRtu_Tx, ByteBuffer.allocate(0))) { - Lock_Task_SQL.updateLock_Rt_Table(pool,client_id,mLock_State); + Lock_Task_SQL.updateLock_Rt_Table(pool,ele_lock[NowLockIdx].getLock_id(),mLock_State[NowLockIdx]); - Lock_Task_SQL.updateLock_Inf_Table(pool,ele_lock,mLock_State); + Lock_Task_SQL.updateLock_Inf_Table(pool,ele_lock[NowLockIdx],mLock_State[NowLockIdx]); //鏇存柊閿佸叿鐘舵�� - ele_lock.lockRecordState.setLockState(mLock_State); + ele_lock[NowLockIdx].lockRecordState.setLockState(mLock_State[NowLockIdx]); - if(mLock_State.isIDOpen()) { - String ctl_uname = Lock_Task_SQL.queryKeyInfByKeyNumberTable(pool,mLock_State.getLast_unlock_id()); - ElectLock_Ctl_Log tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_IDCardOpen, true,mLock_State.getLast_unlock_id(),ctl_uname); + if(mLock_State[NowLockIdx].isIDOpen()) { +// String ctl_uname = Lock_Task_SQL.queryKeyInfByKeyNumberTable(pool,mLock_State[NowLockIdx].getLast_unlock_id()); + String ctl_uname = ""; + ElectLock_Ctl_Log tmp_log = new ElectLock_Ctl_Log(mLock_State[NowLockIdx].getLock_id(), ElectLock_ComBase.CtlType_IDCardOpen, true,mLock_State[NowLockIdx].getLast_unlock_id(),ctl_uname); Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); - mLock_State.setIDOpen(false); + mLock_State[NowLockIdx].setIDOpen(false); tmp_log = null; } plat_model = Lock_Task_SQL.querySystemLockMode(pool); if(plat_model != ElectLock_ComBase.CMD_Fail) { - if(plat_model != mLock_State.getWorkmodel()) { - logger.info("LockID:"+client_id + " Start change Model :"); + if(plat_model != mLock_State[NowLockIdx].getWorkmodel()) { + logger.info("LockID:"+mLock_State[NowLockIdx].getLock_id() + " Start change Model :"); - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Model_ADDR, ElectLock_ComBase.RegCount_Sigle); + mRtu_Tx.mkBusRtu((mLock_State[NowLockIdx].getLockAddr()%255),MyModBusRtu.CMD_TYPE_WRITE_STD, ElectLock_ComBase.LOCK_SET_Model_ADDR, ElectLock_ComBase.RegCount_Sigle); if(SocketComm(mRtu_Tx, ComBase.mkUInt16Buffer(plat_model))) { //杩滅▼璁剧疆閿佸叿鍦ㄧ绾挎ā寮忓悗鏈�澶氶噸鍚澶�3娆� for(int k = 0 ;k < 3;k++) { @@ -201,64 +232,69 @@ } } } + + NowLockIdx ++; + if(NowLockIdx >= MaxLockCount) { + NowLockIdx = 0; + } } - List<ElectLock_AuthIdcard> batch_auth = Lock_Task_SQL.queryAuth_Idcard_Table(pool,client_id); - if(batch_auth.size() > 0) { - logger.info("寮�濮嬫壒閲忔巿鏉僆D鍗�,ID鏁伴噺锛�" + batch_auth.size()); - for(int k = 0; k < batch_auth.size() ; k++) { - ElectLock_AuthIdcard tmp_auth = batch_auth.get(k); - ElectLock_Ctl_Log tmp_log = null; - try { - int keyNumber = Integer.parseInt(tmp_auth.key_number.trim()); - if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_ReMove) { - //鍙栨秷ID鍗℃巿鏉� - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); - if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) { - tmp_auth.auth_result = ElectLock_ComBase.Auth_Success; - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, true,keyNumber,tmp_auth.ctl_uname); - Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); - } else { - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, false,keyNumber,tmp_auth.ctl_uname); - Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); - } - }else if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_Add) { - //娣诲姞鎺堟潈 - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); - if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) { - tmp_auth.auth_result = ElectLock_ComBase.Auth_Success; - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, true,keyNumber,tmp_auth.ctl_uname); - Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); - } else { - tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, false,keyNumber,tmp_auth.ctl_uname); - Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); - } - } - } catch (Exception e) { - tmp_auth.auth_result = ElectLock_ComBase.Auth_Fail; - } finally { - tmp_log = null; - } - Lock_Task_SQL.moveAuth_Idcard_Table(pool, tmp_auth); - } - - } - batch_auth = null; +// List<ElectLock_AuthIdcard> batch_auth = Lock_Task_SQL.queryAuth_Idcard_Table(pool,client_id); +// if(batch_auth.size() > 0) { +// logger.info("寮�濮嬫壒閲忔巿鏉僆D鍗�,ID鏁伴噺锛�" + batch_auth.size()); +// for(int k = 0; k < batch_auth.size() ; k++) { +// ElectLock_AuthIdcard tmp_auth = batch_auth.get(k); +// ElectLock_Ctl_Log tmp_log = null; +// try { +// int keyNumber = Integer.parseInt(tmp_auth.key_number.trim()); +// if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_ReMove) { +// //鍙栨秷ID鍗℃巿鏉� +// mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Clear_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); +// if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) { +// tmp_auth.auth_result = ElectLock_ComBase.Auth_Success; +// tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, true,keyNumber,tmp_auth.ctl_uname); +// Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); +// } else { +// tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_RemoveIdCard, false,keyNumber,tmp_auth.ctl_uname); +// Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); +// } +// }else if(tmp_auth.state == ElectLock_AuthIdcard.AuthType_Add) { +// //娣诲姞鎺堟潈 +// mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_WRITE_MULTY, ElectLock_ComBase.LOCK_Add_ID_AUTH_ADDR, ElectLock_ComBase.RegCount_Double); +// if(SocketComm(mRtu_Tx, ComBase.mkInt32Buffer(keyNumber))) { +// tmp_auth.auth_result = ElectLock_ComBase.Auth_Success; +// tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, true,keyNumber,tmp_auth.ctl_uname); +// Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); +// } else { +// tmp_log = new ElectLock_Ctl_Log(client_id, ElectLock_ComBase.CtlType_AddIdCard, false,keyNumber,tmp_auth.ctl_uname); +// Lock_Task_SQL.insertLock_Ctl_Log_Table(pool, tmp_log); +// } +// } +// } catch (Exception e) { +// tmp_auth.auth_result = ElectLock_ComBase.Auth_Fail; +// } finally { +// tmp_log = null; +// } +// Lock_Task_SQL.moveAuth_Idcard_Table(pool, tmp_auth); +// } +// +// } +// batch_auth = null; + runCount ++; if(runCount > 99999900) { runCount = 0; } - Thread.sleep(200); + Thread.sleep(100); } } catch (Exception e) { e.printStackTrace(); } finally { - logger.info("璁惧鏂紑杩炴帴锛欴evIp:" + client_ip + " DevId:" + mLock_State.getLockDevId()); - mLock_State.setLock_online(0); + logger.info("璁惧鏂紑杩炴帴锛欴evIp:" + client_ip + " DevId:" + client_id/10000 + "XXXX"); //閲嶇疆mac鍦板潃浼氬奖鍝峚pp寮�濮嬶紝寰呭畾閫昏緫 //mLock_State.resetLockMacAddr(); - Lock_Task_SQL.updateLock_Inf_Table(pool,ele_lock,mLock_State); + Lock_Task_SQL.updateLock_OffLineTable(pool,client_id); } if(null != tmp_socket) { @@ -283,6 +319,8 @@ case ElectLock_ComBase.CMD_SetLockAddr: //璁剧疆閿佸叿鍦板潃 case ElectLock_ComBase.CMD_AddIdCard: //娣诲姞鎺堟潈鍗D case ElectLock_ComBase.CMD_RemoveIdCard: //绉婚櫎鎺堟潈鍗D + case ElectLock_ComBase.CMD_OpenBluetooth: //寮�鍚摑鐗� + case ElectLock_ComBase.CMD_CloseBluetooth: //鍏抽棴钃濈墮 isCheckOk = true;break; default : isCheckOk = false;break; @@ -297,51 +335,35 @@ private boolean checkDevceType() { boolean isCheckOk = false; logger.info("DevIp: " + client_ip + " Check Lock Type:" + config.getCommType()); - for(int k = 0 ;k < 3;k++) { - try { - if(config.getCommType().toUpperCase().equals("IP")) { - //閫氳繃IP鍦板潃璇嗗埆閿佸叿 - for(int m = 0; m < GB_Lock_Array.getIteamCount();m++) { - ElectLock_Inf tmp_lock = GB_Lock_Array.getIteam(m); - if(tmp_lock.getLock_ip().equals(client_ip)) { - ele_lock = tmp_lock; - mLock_State = ele_lock.lockState; - client_id = ele_lock.getLock_id(); - mLock_State.setClient_ip(client_ip); - isCheckOk = true; + MaxLockCount = 0 ; //杩炴帴閿佸叿鏁伴噺 + try { + //閫氳繃IP鍦板潃璇嗗埆閿佸叿 + for(int m = 0; m < GB_Lock_Array.getIteamCount();m++) { + ElectLock_Inf tmp_lock = GB_Lock_Array.getIteam(m); + if(tmp_lock.getLock_ip().equals(client_ip)) { + if(client_id == 0) { + client_id = tmp_lock.getLock_id(); + isCheckOk = true; + }else { + if((client_id/10000) != (tmp_lock.getLock_id()/10000)) { + continue; } - } - }else { - //閫氳繃ID鍙疯瘑鍒攣鍏� - mRtu_Tx.mkBusRtu(MyModBusRtu.CMD_TYPE_READ_INPUT, ElectLock_ComBase.LOCK_REAL_ADDR, ElectLock_State.Reg_Count_Real); - if(SocketComm(mRtu_Tx, ByteBuffer.allocate(0))){ - //System.err.println(mLock_State); - //System.out.println("mLock_State.getLockDevId():"+mLock_State.getLockDevId()); - - for(int m = 0; m < GB_Lock_Array.getIteamCount();m++) { - ElectLock_Inf tmp_lock = GB_Lock_Array.getIteam(m); - if(tmp_lock.getLock_id() == mLock_State.getLockDevId()) { - - ele_lock = tmp_lock; - mLock_State = ele_lock.lockState; - client_id = ele_lock.getLock_id(); - mLock_State.setClient_ip(client_ip); - isCheckOk = true; - } - } - } + } + ele_lock[MaxLockCount] = tmp_lock; + mLock_State[MaxLockCount] = ele_lock[MaxLockCount].lockState; + mLock_State[MaxLockCount].setClient_ip(client_ip); + MaxLockCount ++; } - if(isCheckOk) { - break; - } - - Thread.sleep(20); - } catch (InterruptedException e) { - logger.error(e.toString(),e); } + + } catch (Exception e) { + logger.error(e.toString(),e); } if(isCheckOk) { - logger.info("DevIp: " + client_ip + "璇嗗埆鎴愬姛锛汱ockId:" + client_id); + logger.info("DevIp: " + client_ip + "璇嗗埆鎴愬姛锛汱ockId:" + client_id + "\t 閿佸叿鏁伴噺锛�" + MaxLockCount); + if(MaxLockCount == 0) { + isCheckOk = false; + } }else { logger.info("DevIp: " + client_ip + "璇嗗埆澶辫触 锛侊紒锛�"); } @@ -408,11 +430,11 @@ //bytebuffer_for_socket_RX.put((byte)in.read()); } else { rx_read_time_out++; - if(/*(bytebuffer_for_socket_RX.position() >= 20) && */(rx_read_time_out>100)){ + if((bytebuffer_for_socket_RX.position() >= 8) && (rx_read_time_out>10)){ // res = true; break; } - if(rx_read_time_out > 800) { + if(rx_read_time_out > 20) { break; } } @@ -445,24 +467,27 @@ if(cipher_buf.length > MyModBusRtu.BYTE_LEN && true == getDataFromCommBuf(cipher_buf,rtu)) { res_t = true; - mLock_State.addCommCount(); - mLock_State.clearErrorCount(); + mLock_State[NowLockIdx].addCommCount(); + mLock_State[NowLockIdx].clearErrorCount(); + clearErrorCount(); } else { //System.err.println("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"); res_t = false; - mLock_State.addErrorCount(); + mLock_State[NowLockIdx].addErrorCount(); + addErrorCount(); } } else { //System.out.println(this.getName() + "-------socket 寮傚父鍏抽棴-------" + Com.getNowTimeWithAt()); S_thread_run_flag = false; } } catch (IOException | InterruptedException e) { - this.mLock_State.addErrorCount(); + this.mLock_State[NowLockIdx].addErrorCount(); + addErrorCount(); } finally { - if(this.mLock_State.getErr_count() > 4) { - logger.info("璁惧锛欴evIp:" + client_ip + " DevId:" + client_id + "閫氫俊瓒呮椂鍗冲皢鏂紑杩炴帴..."); + if(getErrorCount() > 6) { + logger.info("璁惧锛欴evIp:" + client_ip + " DevId:" + client_id/10000 + "XXXX 閫氫俊瓒呮椂鍗冲皢鏂紑杩炴帴..."); S_thread_run_flag = false; } } @@ -481,7 +506,7 @@ if(MyModBusRtu.CMD_TYPE_READ_INPUT == mRtu_Rx.Cmd) { if(ElectLock_ComBase.LOCK_REAL_ADDR == rtu.reg_addr) { //璇诲彇瀹炴椂鏁版嵁 - if(mLock_State.putByteBuffer(buff)) { + if(mLock_State[NowLockIdx].putByteBuffer(buff)) { isSuccess = true; } } @@ -490,19 +515,19 @@ //娓呯┖鎵�鏈夋巿鏉冨崱 if(ElectLock_ComBase.Control_Value == mRtu_Rx.result) { isSuccess = true; - logger.info("LockId:" + client_id + " LockIp:"+client_ip + "娓呯┖鎵�鏈夋巿鏉冨崱鎴愬姛"); + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + "娓呯┖鎵�鏈夋巿鏉冨崱鎴愬姛"); } }else if(ElectLock_ComBase.LOCK_REMOTE_OPEN_ADDR == mRtu_Rx.reg_addr) { //杩滅▼寮�閿� if(ElectLock_ComBase.Control_Value == mRtu_Rx.result) { isSuccess = true; - logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 杩滅▼寮�閿佹垚鍔�"); + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 杩滅▼寮�閿佹垚鍔�"); } }else if(ElectLock_ComBase.LOCK_RESTART_ADDR == mRtu_Rx.reg_addr) { //杩滅▼閲嶅惎 if(ElectLock_ComBase.Control_Value == mRtu_Rx.result) { isSuccess = true; - logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 杩滅▼閲嶅惎閿佸叿鎴愬姛"); + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 杩滅▼閲嶅惎閿佸叿鎴愬姛"); } } }else if(MyModBusRtu.CMD_TYPE_WRITE_STD == mRtu_Rx.Cmd) { @@ -510,14 +535,35 @@ //璁剧疆閿佸叿鍦板潃 if(mLock_param.getLock_addr_set() == mRtu_Rx.result) { isSuccess = true; - logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 璁剧疆閿佸叿鍦板潃锛�" + mLock_param.getLock_addr_set() + "鎴愬姛"); + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿鍦板潃锛�" + mLock_param.getLock_addr_set() + "鎴愬姛"); } }else if(ElectLock_ComBase.LOCK_SET_Model_ADDR == mRtu_Rx.reg_addr) { //璁剧疆閿佸叿宸ヤ綔妯″紡 if(plat_model == mRtu_Rx.result) { isSuccess = true; - logger.info("LockId:" + client_id + " LockIp:"+client_ip + " 璁剧疆閿佸叿妯″紡锛�" + plat_model + "鎴愬姛"); + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿妯″紡锛�" + plat_model + "鎴愬姛"); } + }else if(ElectLock_ComBase.LOCK_SET_Model_ADDR == mRtu_Rx.reg_addr) { + //璁剧疆閿佸叿宸ヤ綔妯″紡 + if(plat_model == mRtu_Rx.result) { + isSuccess = true; + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿妯″紡锛�" + plat_model + "鎴愬姛"); + } + }else if(ElectLock_ComBase.LOCK_SET_Bluetooth_ADDR == mRtu_Rx.reg_addr) { + //璁剧疆閿佸叿钃濈墮鐘舵�� + if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_OpenBluetooth) { + if(mRtu_Rx.result == ElectLock_ComBase.Lock_Bluetooth_Open) { + isSuccess = true; + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆寮�鍚攣鍏疯摑鐗欐垚鍔�"); + } + }else if(mLock_param.getOp_cmd() == ElectLock_ComBase.CMD_CloseBluetooth) { + if(mRtu_Rx.result == ElectLock_ComBase.Lock_Bluetooth_Close) { + isSuccess = true; + logger.info("LockId:" + mLock_param.getLock_id() + " LockIp:"+client_ip + " 璁剧疆閿佸叿鍏抽棴钃濈墮鎴愬姛"); + } + } + + } @@ -552,4 +598,26 @@ buffer.flip(); return buffer.array(); } + + /** + * 绱姞閿欒璁℃暟 + */ + public void addErrorCount() { + ErrorCount ++; + } + + public void clearErrorCount() { + ErrorCount = 0; + } + + public int getErrorCount() { + return ErrorCount; + } + + public static void main(String[] args) { + for(int k = 1;k<1000;k++) { + System.out.println(k%(16/k)); + } + } + } -- Gitblit v1.9.1