doum
昨天 6c12dd77bc481aeabec568bfed3dd68e81b80f8b
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;
    }
}