From 6c12dd77bc481aeabec568bfed3dd68e81b80f8b Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期一, 20 十月 2025 08:56:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao --- keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java | 141 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 141 insertions(+), 0 deletions(-) diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java index 54fcdac..fcac3d4 100644 --- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java +++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java @@ -8,6 +8,8 @@ import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.hardware.Camera; +import android.hardware.usb.UsbDevice; +import android.hardware.usb.UsbManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -75,6 +77,9 @@ import com.doumee.keyCabinet.utils.face.ImportFileManager; import com.doumee.keyCabinet.utils.face.RegisterConfigUtils; import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig; +import com.doumee.keyCabinet.utils.i485.SerialPortModel; +import com.doumee.keyCabinet.utils.i485.SerialPortReadObserver; +import com.doumee.keyCabinet.utils.i485.SportUtils; import com.doumee.keyCabinet.utils.update.PermissionUtils; import com.doumee.keyCabinet.utils.update.PermissiondDialog; import com.doumee.keyCabinet.utils.update.UpdateUtil; @@ -101,6 +106,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Random; import java.util.Timer; @@ -182,6 +188,7 @@ startService(intent2); getPermission(); Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId()); + initPort(); } private void initM(){ @@ -388,6 +395,8 @@ handler = null; faceHandler.removeCallbacksAndMessages(null); faceHandler = null; + portHandler.removeCallbacksAndMessages(null); + portHandler = null; } private void restartApp(){ @@ -1042,4 +1051,136 @@ } } + private SerialPortModel gridPort; + private SerialPortReadObserver gridReadObserver = new SerialPortReadObserver() { + @Override + public void onResult(String result) { + + } + + @Override + public void onResultBytes(byte[] bytes) { + if(gridPort!=null && !gridPort.isOk()){ + gridPort.setOk(true); + } + } + }; + private SerialPortModel keyPort; + private SerialPortReadObserver keyReadObserver = new SerialPortReadObserver() { + @Override + public void onResult(String result) { + + } + + @Override + public void onResultBytes(byte[] bytes) { + if(keyPort!=null && !keyPort.isOk()){ + keyPort.setOk(true); + } + } + }; + private SerialPortModel jiuPort; + private SerialPortReadObserver jiuReadObserver = new SerialPortReadObserver() { + @Override + public void onResult(String result) { + + } + + @Override + public void onResultBytes(byte[] bytes) { + if(jiuPort!=null && !jiuPort.isOk()){ + jiuPort.setOk(true); + } + } + }; + + List<String> ports; + private int index = 0; + private Handler portHandler = new Handler(){ + @Override + public void handleMessage(@NonNull Message msg) { + switch (msg.what){ + case 0: + if(index>=1&&!checkEnd()){ + index--; + chosePort(ports.get(index)); + } + break; + default: + break; + } + } + }; + //鍒濆鍖栦覆鍙� + private void initPort(){ + ports = SportUtils.getSerialPortPaths(this); + if(ports.size()>0){ + index = ports.size()-1; + chosePort(ports.get(ports.size()-1)); + } + } + + private void chosePort(String path){ + if(gridPort==null||!gridPort.isOk()){ + closePort(gridPort); + gridPort = new SerialPortModel(path,9600 ,8 + ,1 , 0); + boolean isSucc = gridPort.open(); + if(isSucc) { + String msg = isSucc ? "鎴愬姛" : "澶辫触"; + //getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg); + gridPort.startRead(gridReadObserver); + //todo 鍙戦�佹煖鏍兼牎楠屼俊鎭� + } + } + if(keyPort==null||!keyPort.isOk()){ + closePort(keyPort); + keyPort = new SerialPortModel(path,115200 ,8 + ,1 , 0); + boolean isSucc = keyPort.open(); + if(isSucc) { + String msg = isSucc ? "鎴愬姛" : "澶辫触"; + //getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg); + keyPort.startRead(keyReadObserver); + //todo 鍙戦�侀挜鍖欐牎楠屼俊鎭� + } + } + if(jiuPort==null||!jiuPort.isOk()){ + closePort(jiuPort); + jiuPort = new SerialPortModel(path,9600 ,8 + ,1 , 0); + boolean isSucc = jiuPort.open(); + if(isSucc) { + String msg = isSucc ? "鎴愬姛" : "澶辫触"; + //getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg); + jiuPort.startRead(jiuReadObserver); + //todo 鍙戦�侀厭绮炬牎楠屼俊鎭� + } + } + + portHandler.sendEmptyMessageDelayed(0,2000); + } + + private void closePort(SerialPortModel port){ + if(port==null){ + return; + } + port.startRead(null); + port.stopRead(); + port.close(); + port = null; + } + + private boolean checkEnd(){ + if(gridPort==null||!gridPort.isOk()){ + return false; + } + if(keyPort==null||!keyPort.isOk()){ + return false; + } + if(jiuPort==null||!jiuPort.isOk()){ + return false; + } + return true; + } } -- Gitblit v1.9.3