From eb746715527db9b42740db84bb576735185e21cd Mon Sep 17 00:00:00 2001
From: DELL <1525436766@qq.com>
Date: 星期一, 28 四月 2025 15:30:27 +0800
Subject: [PATCH] 11111

---
 ElectLock_Monitor/src/com/dev/lock/data/ElectLock_State.java |  244 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 236 insertions(+), 8 deletions(-)

diff --git a/ElectLock_Monitor/src/com/dev/lock/data/ElectLock_State.java b/ElectLock_Monitor/src/com/dev/lock/data/ElectLock_State.java
index 179c764..9e2c0e5 100644
--- a/ElectLock_Monitor/src/com/dev/lock/data/ElectLock_State.java
+++ b/ElectLock_Monitor/src/com/dev/lock/data/ElectLock_State.java
@@ -7,9 +7,23 @@
 import com.base.ComBase;
 
 public class ElectLock_State {
-	public static int Reg_Count_Real = 8;		//瀵勫瓨鍣ㄦ暟閲�
+	public static final int Unlock_Type_485 		= 0;	//485
+	public static final int Unlock_Type_ID 			= 1;	//ID鍗�
+	public static final int Unlock_Type_Bluetooth 	= 2;	//钃濈墮
+	public static final int Unlock_Type_DI 			= 3;	//DI
 	
-	private Date record_time;			//'鏇存柊鏃堕棿',
+	
+//	public static int Reg_Count_Real = 8;		//瀵勫瓨鍣ㄦ暟閲�
+//	public static int Reg_Count_Real = 11;		//瀵勫瓨鍣ㄦ暟閲�
+//	public static int Reg_Count_Real = 12;		//瀵勫瓨鍣ㄦ暟閲�
+	public static int Reg_Count_Real = 14;		//瀵勫瓨鍣ㄦ暟閲�
+
+	
+	public static int Reg_Count_Card = 100;		//璇诲彇宸叉巿鏉冪數姹犲崱瀵勫瓨鍣ㄦ暟閲�
+	
+	
+	private int lock_id;				//閿佸叿ID[褰撳墠闇�瑕佹搷浣滅殑閿佸叿ID鍙穄
+	private Date record_time = new Date(0);			//'鏇存柊鏃堕棿',
 	private String gprs_sn;				//'gprs妯″潡SN鐮�',
 	private String client_ip;			//'璁惧IP鍦板潃',
 	private int already_id_count;		//'褰撳墠閿佸凡鎺堟潈鍗℃暟閲�',
@@ -23,8 +37,30 @@
 	private int err_tol_count;			//'鎬婚敊璇鏁�',
 	private int err_count;				//'杩炵画閿欒璁℃暟',
 	private int op_cmd;					//'鎺у埗鍛戒护',
-	private int id_card_set;			//'鎺堟潈ID鍗″彿',
+	private long id_card_set;			//'鎺堟潈ID鍗″彿',
 	private int lock_addr_set;			//'璁剧疆璁惧鍦板潃[鎱庣敤]',
+	private int workmodel;				//宸ヤ綔妯″紡銆�0-绂荤嚎妯″紡   1-鍦ㄧ嚎妯″紡銆�
+	
+	private int lock_online;			//閿佸叿鍦ㄧ嚎鐘舵�乕0-绂荤嚎  1-鍦ㄧ嚎]
+	
+    private boolean isIDOpen = false;	//鏄惁鏄疘D寮�閿�
+	private int last_unlock_type;		//'涓婁竴娆″紑閿佹柟寮廩0-485寮�閿� 1-鍒峰崱寮�閿� 2-钃濈墮寮�閿� 3-DI寮�閿乚',
+	private int last_unlock_id;			//'涓婁竴娆″埛寮�寮�閿佸崱鍙穂浠呭埛寮�寮�閿佹椂鏈夋晥]',
+	
+	private int[] mac_addr = new int[6]; //閿佸叿钃濈墮MAC鍦板潃
+
+	private String ctl_uname = "";		//鎿嶄綔鐢ㄦ埛鍚�
+	
+	private int bluetooth_st_state;		//钃濈墮寮�鍏筹細0-鍏抽棴钃濈墮  1-寮�鍚摑鐗�
+	private int bluetooth_state;		//钃濈墮鐘舵�侊細0锛氳摑鐗欏凡鍏抽棴锛�1锛氳摑鐗欏凡寮�鍚�
+	
+	
+	private int lock_open_count;	//'閿佸叿鎬诲紑鍚鏁�'
+	private Date last_update_time = new Date(0);	//涓婁竴娆¢攣鍏峰紑鍚垨鍏抽棴鏃堕棿
+	
+	private long[] id_cards = new long[ElectLock_ComBase.Lock_MaxCardCount];
+	
+	private int readCount = 0;				//璇诲彇鏁版嵁娆℃暟锛岀敤浜庤鍙栧凡鎺堟潈鍗″彿
 	
 	public ElectLock_State() {
 		
@@ -42,17 +78,118 @@
 		
 		this.already_id_count = ComBase.changeShortToInt(buffer.getShort());		//'褰撳墠閿佸凡鎺堟潈鍗℃暟閲�',
 		this.max_id_count = ComBase.changeShortToInt(buffer.getShort());			//'鎺堟潈鍗℃暟閲忓瓨鍌ㄤ笂闄�',
+		int tmp_lock_state = lock_state;
 		this.lock_state = ComBase.changeShortToInt(buffer.getShort());				//'鐢靛瓙閿佺姸鎬乕0-鍏� 1-寮�]',
 		int ver = ComBase.changeShortToInt(buffer.getShort());
 		this.lock_version = " V"+ ver;												//'杞欢鐗堟湰鍙�',
+		
+		
 		this.unlock_type = ComBase.changeShortToInt(buffer.getShort());				//'涓婁竴娆″紑閿佹柟寮廩0-485寮�閿� 1-鍒峰崱寮�閿� 2-钃濈墮寮�閿� 3-DI寮�閿乚',
-		this.unlock_id = (buffer.getInt()&0xFFFFFFFF);											//'涓婁竴娆″埛寮�寮�閿佸崱鍙穂浠呭埛寮�寮�閿佹椂鏈夋晥]',
+		this.unlock_id = (buffer.getInt()&0xFFFFFFFF);								//'涓婁竴娆″埛寮�寮�閿佸崱鍙穂浠呭埛寮�寮�閿佹椂鏈夋晥]',
 		this.lock_addr = ComBase.changeShortToInt(buffer.getShort());				//'璁惧鍦板潃',
 		
-		//System.out.println(this);
+		for(int k =0;k<mac_addr.length;k++) {
+			mac_addr[k] = ComBase.changeByteToInt(buffer.get());
+		}
+		workmodel  = ComBase.changeShortToInt(buffer.getShort());
 		
+		bluetooth_st_state  = ComBase.changeShortToInt(buffer.getShort()); 
+		bluetooth_state  = ComBase.changeShortToInt(buffer.getShort()); 
+		
+//		System.out.println("宸ヤ綔妯″紡锛�" + workmodel);
+//		System.out.println("BlutoothMAC:" + getLockMacAddr());
+//		System.out.println("bluetooth_st_state:" + getBluetooth_st_state());
+//		System.out.println("bluetooth_state:" + getBluetooth_state());
+//		System.out.println("BlutoothMAC:" + getLockMacAddr());
+		
+		//System.out.println("this.lock_state:"+tmp_lock_state+"********lock_state:"+lock_state);
+		if(this.lock_state != tmp_lock_state) {
+			if(this.lock_state == 1) {				
+				//閿佸叿鐘舵�佸彉鍖�;閿佷粠鍏抽棴鍙樹负鎵撳紑
+				if(this.unlock_type == Unlock_Type_ID) {
+					//ID鏈�杩慖D鍗″紑閿�
+					isIDOpen = true;
+					last_unlock_type = unlock_type;		//'涓婁竴娆″紑閿佹柟寮廩0-485寮�閿� 1-鍒峰崱寮�閿� 2-钃濈墮寮�閿� 3-DI寮�閿乚',
+					last_unlock_id = unlock_id;			//'涓婁竴娆″埛寮�寮�閿佸崱鍙穂浠呭埛寮�寮�閿佹椂鏈夋晥]',
+				}
+				this.lock_open_count ++;
+			}
+			//閿佸叿鐘舵�佸彉鍖�
+			this.last_update_time = new Date();
+		}
+		record_time = new Date();
+		readCount ++;
+		if(readCount >= 999998) {
+			readCount = 0;
+		}
 		buffer.compact();
 		return true;
+	}
+	
+	
+	public boolean putCardByteBuffer(ByteBuffer buffer,int idx) {
+		if(buffer.limit() < (Reg_Count_Card*2)) {
+			System.out.println("瀹炴椂淇℃伅杩斿洖闀垮害閿欒" + buffer.limit());
+			return false;
+		}
+		
+		buffer.order(ByteOrder.BIG_ENDIAN);
+		buffer.position(0);
+		for(int k = idx;k<(idx+50) && k < ElectLock_ComBase.Lock_MaxCardCount;k++) {
+			id_cards[k] = (buffer.getInt()&0xFFFFFFFF);
+		}
+		return true;
+	}
+	
+	public String getLockMacAddr() {
+		return String.format("%02x:%02x:%02x:%02x:%02x:%02x", mac_addr[0],mac_addr[1],mac_addr[2],mac_addr[3],mac_addr[4],mac_addr[5]).toUpperCase();
+	}
+	
+	public void resetLockMacAddr() {
+		for(int n=0;n<mac_addr.length;n++) {
+			mac_addr[n] = 0xFF;
+		}
+	}
+	
+	
+	
+	public int getReadCount() {
+		return readCount;
+	}
+
+
+	public long[] getId_cards() {
+		return id_cards;
+	}
+
+
+	public void setId_cards(long[] id_cards) {
+		this.id_cards = id_cards;
+	}
+
+
+	public int getBluetooth_st_state() {
+		return bluetooth_st_state;
+	}
+
+
+	public int getBluetooth_state() {
+		return bluetooth_state;
+	}
+
+
+	public void setBluetooth_st_state(int bluetooth_st_state) {
+		this.bluetooth_st_state = bluetooth_st_state;
+	}
+
+
+	public void setBluetooth_state(int bluetooth_state) {
+		this.bluetooth_state = bluetooth_state;
+	}
+
+
+	public int getLockDevId() {
+		return 10000000 + this.lock_addr;
 	}
 	
 	public Date getRecord_time() {
@@ -70,6 +207,40 @@
 	public int getAlready_id_count() {
 		return already_id_count;
 	}
+
+	public String getCtl_uname() {
+		return ctl_uname;
+	}
+	public int getLock_open_count() {
+		return lock_open_count;
+	}
+
+	public Date getLast_update_time() {
+		return last_update_time;
+	}
+
+	public void setLock_open_count(int lock_open_count) {
+		this.lock_open_count = lock_open_count;
+	}
+
+	public void setLast_update_time(Date last_update_time) {
+		this.last_update_time = last_update_time;
+	}
+
+	public void setCtl_uname(String ctl_uname) {
+		this.ctl_uname = ctl_uname;
+	}
+
+
+	public int getWorkmodel() {
+		return workmodel;
+	}
+
+
+	public void setWorkmodel(int workmodel) {
+		this.workmodel = workmodel;
+	}
+
 
 	public int getMax_id_count() {
 		return max_id_count;
@@ -107,11 +278,21 @@
 		return err_count;
 	}
 
+	public int getLock_online() {
+		return lock_online;
+	}
+
+
+	public void setLock_online(int lock_online) {
+		this.lock_online = lock_online;
+	}
+
+
 	public int getOp_cmd() {
 		return op_cmd;
 	}
 
-	public int getId_card_set() {
+	public long getId_card_set() {
 		return id_card_set;
 	}
 
@@ -175,13 +356,56 @@
 		this.op_cmd = op_cmd;
 	}
 
-	public void setId_card_set(int id_card_set) {
+	public void setId_card_set(long id_card_set) {
 		this.id_card_set = id_card_set;
 	}
 
 	public void setLock_addr_set(int lock_addr_set) {
 		this.lock_addr_set = lock_addr_set;
 	}
+
+	public boolean isIDOpen() {
+		return isIDOpen;
+	}
+
+
+	public int getLast_unlock_type() {
+		return last_unlock_type;
+	}
+
+
+	public int getLast_unlock_id() {
+		return last_unlock_id;
+	}
+
+
+	public void setIDOpen(boolean isIDOpen) {
+		this.isIDOpen = isIDOpen;
+	}
+
+
+	public void setLast_unlock_type(int last_unlock_type) {
+		this.last_unlock_type = last_unlock_type;
+	}
+
+
+	public void setLast_unlock_id(int last_unlock_id) {
+		this.last_unlock_id = last_unlock_id;
+	}
+
+
+	public int getLock_id() {
+		return lock_id;
+	}
+
+	public int getLockAddr() {
+		return lock_id%1000;
+	}
+
+	public void setLock_id(int lock_id) {
+		this.lock_id = lock_id;
+	}
+
 
 	public void addCommCount() {
 		this.comm_count ++ ;
@@ -202,7 +426,6 @@
 		err_count++;
 	}
 
-
 	@Override
 	public String toString() {
 		return "ElectLock_State [record_time=" + record_time + ", gprs_sn=" + gprs_sn + ", client_ip=" + client_ip
@@ -213,4 +436,9 @@
 				+ ", lock_addr_set=" + lock_addr_set + "]";
 	}
 	
+	
+	public static void main(String[] args) {
+		int[] ss = new int[] {1,58,65,21,54,23};
+		System.out.println(String.format("%02x:%02x:%02x:%02x:%02x:%02x", ss[0],ss[1],ss[2],ss[3],ss[4],ss[5]).toUpperCase());
+	}
 }

--
Gitblit v1.9.1