From 32f1fab3ce19db6539030c5e574212552a3f3abc Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期五, 31 十月 2025 12:07:57 +0800
Subject: [PATCH] 钥匙柜
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java | 463 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 336 insertions(+), 127 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 0a253eb..2584140 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
@@ -6,9 +6,11 @@
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
+import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.hardware.Camera;
import android.opengl.Visibility;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -20,6 +22,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
@@ -49,6 +52,7 @@
import com.doumee.keyCabinet.databinding.MainActivityBinding;
import com.doumee.keyCabinet.event.CLGridEvent;
import com.doumee.keyCabinet.event.CLKeyEvent;
+import com.doumee.keyCabinet.event.CheckGridStatusEvent;
import com.doumee.keyCabinet.event.CloseGridOneResultEvent;
import com.doumee.keyCabinet.event.GetFacesEvent;
import com.doumee.keyCabinet.event.GetKeyStatusEvent;
@@ -59,6 +63,7 @@
import com.doumee.keyCabinet.event.KeyResultEvent;
import com.doumee.keyCabinet.event.ManageOpenGridResultEvent;
import com.doumee.keyCabinet.event.OpenAllGridEvent;
+import com.doumee.keyCabinet.event.OpenErrEvent;
import com.doumee.keyCabinet.event.OpenGridEvent;
import com.doumee.keyCabinet.event.OpenGridListEvent;
import com.doumee.keyCabinet.event.OpenGridOneResultEvent;
@@ -76,6 +81,7 @@
import com.doumee.keyCabinet.ui.face.UserManagerActivity;
import com.doumee.keyCabinet.ui.view.BannerViewImageHolder;
import com.doumee.keyCabinet.utils.BraceletLogUtils;
+import com.doumee.keyCabinet.utils.CircularQueue;
import com.doumee.keyCabinet.utils.CrashHandler;
import com.doumee.keyCabinet.utils.LMobileInfo;
import com.doumee.keyCabinet.utils.TimeUtils;
@@ -99,12 +105,15 @@
import com.doumee.lib_coremodel.http.utils.GsonTools;
import com.doumee.lib_coremodel.util.SpUtil;
import com.doumee.lib_coremodel.util.StringUtil;
+import com.doumee.lib_coremodel.view.ToastView;
import com.example.datalibrary.api.FaceApi;
import com.example.datalibrary.listener.DBLoadListener;
import com.example.datalibrary.listener.SdkInitListener;
import com.example.datalibrary.model.ImportFeatureResult;
import com.example.datalibrary.model.User;
+import com.example.datalibrary.utils.ToastUtils;
import com.example.datalibrary.view.PreviewTexture;
+import com.innohi.YNHAPI;
import com.yanzhenjie.permission.runtime.Permission;
import org.greenrobot.eventbus.EventBus;
@@ -167,8 +176,21 @@
getVM().getFaceLD();
}
getVM().upBraceletLog();*/
+ case 1:
+ if(isShowing) {
+ EventBus.getDefault().post(new OpenGridEvent((String) msg.obj));
+ handler.sendEmptyMessageDelayed(1, 1000);
+ }
+ break;
case 2:
-
+ if(isShowing){
+ //閲嶆柊鍙戦�侀挜鍖欐煡璇�
+ //鍙戦�佹煡璇㈤挜鍖欏彿
+ EventBus.getDefault().post(new GetKeyStatusEvent());
+ handler.sendEmptyMessageDelayed(2,1200);
+ }
+ break;
+ default:
break;
}
}
@@ -189,12 +211,12 @@
getDB().setModel(getVM());
initRGBCheck();
handler.sendEmptyMessageDelayed(0, 1000);
- //鍚姩蹇冭烦
+ /*//鍚姩蹇冭烦
Intent intent = new Intent(MainActivity.this, HeartbeatService.class);
startService(intent);
//鍚姩鏇存柊浜鸿劯
Intent intent2 = new Intent(MainActivity.this, FaceUpdateService.class);
- startService(intent2);
+ startService(intent2);*/
getPermission();
Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId());
}
@@ -208,10 +230,10 @@
long availableMemory = memoryInfo.availMem/(1024*1024);
long usedMemory = totalMemory - availableMemory;
//getDB().tvM.setText("鎬诲唴瀛橈細"+totalMemory+",浣跨敤鍐呭瓨锛�"+usedMemory+",鍙敤鍐呭瓨锛�"+availableMemory);
- if((availableMemory<400&&showTime!=null&&(System.currentTimeMillis()-showTime>5000))||
+ if((availableMemory<100&&showTime!=null&&(System.currentTimeMillis()-showTime>5000))||
("02:00:00".equals(StringUtil.getHM()))){
//鍙敤鍐呭瓨灏忎簬400M,鎴栬�呮瘡澶╁噷鏅�2鐐癸紝閲嶅惎app
- //restartApp();
+ restartApp();
}
}
@@ -266,7 +288,7 @@
lastDownTime1 = System.currentTimeMillis();
downCount1++;
System.out.println();
- Timber.tag("==>").d(""+downCount1);
+ //Timber.tag("==>").d(""+downCount1);
if(downCount1>4) {
downCount1=0;
lastDownTime1=null;
@@ -277,7 +299,6 @@
getDB().tvId.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- startActivity(ManageLoginActivity.class);
//鏇存敼url
if(lastDownTime2!=null){
if(System.currentTimeMillis()-lastDownTime2>1000){
@@ -293,24 +314,18 @@
}
}
});
- getDB().tvVersion.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //todo 涓存椂浠g爜
- //setJiuConfig();
- SpUtil.saveString("rbgCameraId","0");
- }
- });
+
getDB().imgLeft.setOnClickListener(new View.OnClickListener() {
@Override
- public void onClick(View v) {
+ public void onClick(View v1) {
//todo 涓存椂浠g爜
if (getDB().nsv.getVisibility()== View.VISIBLE) {
getDB().nsv.setVisibility(View.GONE);
}else {
getDB().nsv.setVisibility(View.VISIBLE);
}
-
+ YNHAPI mAPI = YNHAPI.getInstance();
+ mAPI.setNavigationBarVisibility(YNHAPI.NavigationBarVisibility.VISIBLE);
}
});
upErrInfo();
@@ -455,6 +470,9 @@
protected void onResume() {
super.onResume();
isShowing = true;
+ YNHAPI mAPI = YNHAPI.getInstance();
+ mAPI.setNavigationBarVisibility(YNHAPI.NavigationBarVisibility.ALWAYS_INVISIBLE);
+ mAPI.setBootLaunchApk("com.doumee.keyCabinet", true);
showTime = System.currentTimeMillis();
if(!isFaceOk) {
initLicense();
@@ -469,7 +487,9 @@
}else {
getDB().banner.stopTurning();
}
- unCloseGrid();
+ //妫�鏌ユ墍鏈夋煖鏍奸棬銆侀挜鍖欑姸鎬�
+ checkKeyStatus(0);
+ checkGridStatus(900);
}
private void unCloseGrid(){
@@ -768,7 +788,63 @@
waitBeans.clear();
selectBeans.addAll(userBeans);
finishCount=0;
- faceHandler.sendEmptyMessage(0);
+ /*//鍒犻櫎鍏ㄩ儴
+ FaceApi.getInstance().userClean();
+ faceHandler.sendEmptyMessage(0);*/
+
+ HashMap<String,String> uMap = new HashMap<>();
+ for(FaceUserBean d:selectBeans){
+ String key = d.getMemberId().toString()+"_"+d.getGroupId();
+ uMap.put(key,"");
+ }
+ //鍒犻櫎涓嶅瓨鍦ㄧ敤鎴�
+ List<User> users = FaceApi.getInstance().getAllUserList();
+ List<User> dels = new ArrayList<>();
+ for(User u:users){
+ String key = u.getUserId()+"_"+u.getGroupId();
+ if(!uMap.containsKey(key)){
+ dels.add(u);
+ }
+ }
+ if(dels.size()>0){
+ UserInfoManager.getInstance().deleteUserListInfo(dels,
+ "", new UserInfoManager.UserInfoListener() {
+ @Override
+ public void userListDeleteSuccess() {
+ // 鐢ㄦ埛鍒楄〃鍒犻櫎鎴愬姛
+ faceHandler.sendEmptyMessage(0);
+ }
+
+ @Override
+ public void userListDeleteFailure(String message) {
+ // 鐢ㄦ埛鍒楄〃鍒犻櫎澶辫触
+ faceHandler.sendEmptyMessage(0);
+ }
+ },
+ new DBLoadListener() {
+ @Override
+ public void onStart(int successCount) {
+
+ }
+
+ @Override
+ public void onLoad(int finishCount, int successCount, float progress) {
+
+ }
+
+ @Override
+ public void onComplete(List<User> features, int successCount) {
+
+ }
+
+ @Override
+ public void onFail(int finishCount, int successCount, List<User> features) {
+
+ }
+ });
+ }else {
+ faceHandler.sendEmptyMessage(0);
+ }
}
}
@@ -951,10 +1027,7 @@
}
private void initRGBCheck(){
- String index = SpUtil.getString("rbgCameraId");
- if(!"1".equals(index)){
- index = "0";
- }
+ String index = SpUtil.getString("rbgCameraId","0");
setRgbCameraId(Integer.parseInt(index));
/*if (isSetCameraId()){
setRgbCameraId(SingleBaseConfig.getBaseConfig().getRBGCameraId());
@@ -1039,14 +1112,21 @@
}
}
+ private UpdateUtil updateUtil;
private void checkUpdate(){
//鐗堟湰鏇存柊
- new UpdateUtil(this).setShowToast(false).getServerVerCode(new UpdateUtil.VersionCallBack() {
- @Override
- public void isNeedUpdate(boolean isUpdate) {
- isUpdateVersion = isUpdate;
- }
- });
+ if(updateUtil==null){
+ updateUtil = new UpdateUtil(this);
+ updateUtil.setShowToast(false);
+ }
+ if(!updateUtil.isShowing()){
+ updateUtil.getServerVerCode(new UpdateUtil.VersionCallBack() {
+ @Override
+ public void isNeedUpdate(boolean isUpdate) {
+ isUpdateVersion = isUpdate;
+ }
+ });
+ }
}
private PermissiondDialog permissiondDialog;
@@ -1078,16 +1158,29 @@
}
private int tipDownCount = 10;
+ private int loopDownCount = 60;
private boolean isShowTip;
@Subscribe
public void TimeClockEvent(TimeClockEvent e){
- if(isShowTip){
- if(tipDownCount==0){
- isShowTip = false;
- getDB().clTip.setVisibility(View.GONE);
+ if(!isFinishing()) {
+ if(isShowTip){
+ if(tipDownCount==0){
+ isShowTip = false;
+ getDB().clTip.setVisibility(View.GONE);
+ }else {
+ tipDownCount--;
+ getDB().tvDjs.setText(tipDownCount+"s");
+ }
+ }
+ if(loopDownCount==0){
+ loopDownCount = SpUtil.getInt("loop_time",60);
+ //瀹氭椂鎷夊彇鍩烘湰淇℃伅
+ getVM().devLogin();
+ getPermission();
+ getVM().devHeart();
+ EventBus.getDefault().post(new GetFacesEvent());
}else {
- tipDownCount--;
- getDB().tvDjs.setText(tipDownCount+"s");
+ loopDownCount--;
}
}
}
@@ -1100,8 +1193,12 @@
public void OpenGridEvent(OpenGridEvent e){
if(!isFinishing()){
//寮�鍚煖闂�
- String code = "8A"+SportUtils.intToHex(Integer.parseInt(e.getBoardCode()))
- +SportUtils.intToHex(Integer.parseInt(e.getChannelCode()))+"11";
+ String key = e.getKey();
+ if(TextUtils.isEmpty(key)) {
+ key = SportUtils.intToHex(Integer.parseInt(e.getBoardCode()))
+ + SportUtils.intToHex(Integer.parseInt(e.getChannelCode()));
+ }
+ String code = "8A" + key + "11";
code += SportUtils.getBCC(code);
send485(0,code);
}
@@ -1164,38 +1261,6 @@
}
}
-
- @Subscribe
- public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
- if(!isFinishing()&&isShowing){
- //鍦ㄩ椤碉紝鏍¢獙鍏抽棬鐨勯挜鍖欐槸鍚﹀尮閰�
- if (e.getIsOpen() == 0) {
- //鍏抽棬鎴愬姛
- //鏌ヨ閽ュ寵鍙�
- CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(e.getKey());
- if (gridDo != null) {
- getVM().addInfo("姣旇緝閽ュ寵锛氬綋鍓嶏細"+gridDo.getCurKeyCode()+", 鍏宠仈閽ュ寵锛�"+gridDo.getKeyCode());
- if(!TextUtils.isEmpty(gridDo.getCurKeyCode())&&
- !TextUtils.isEmpty(gridDo.getKeyCode())&&
- !gridDo.getCurKeyCode().equals(gridDo.getKeyCode())){
- //閽ュ寵涓嶄竴鏍凤紝寮�闂�
- Toast.makeText(mContext, "閽ュ寵瀛樻斁浣嶇疆閿欒", Toast.LENGTH_SHORT).show();
- EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
- Integer.parseInt(e.getKey().substring(0,2), 16)+""));
- }else {
- if(isShowTip){
- doRegister(5,null);
- }
- if(isShowing){
- //鍦ㄩ椤靛叧闂ㄦ垚鍔燂紝闇�璋冪敤鍏抽棬鏂规硶
- getVM().closeGrid(gridDo);
- }
- }
- }
- }
- }
- }
-
private SerialPortModel gridPort;
private SerialPortReadObserver gridReadObserver = new SerialPortReadObserver() {
@Override
@@ -1252,23 +1317,21 @@
});*/
String key = bh+tdh;
CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
- if(gridDo==null){
- //鏂板
- gridDo = new CabinetGridDo();
- gridDo.setIsOpen("00".equals(open)?1:0);
- gridDo.setGridKey(key);
- gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
- DaoManager.getCabinetGridDao().insert(gridDo);
- }else {
+ if(gridDo!=null){
gridDo.setIsOpen("00".equals(open)?1:0);
gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
+
DaoManager.getCabinetGridDao().update(gridDo);
- }
- //寮�闂ㄨ繑鍥�
- EventBus.getDefault().post(new OpenGridOneResultEvent(key,gridDo.getIsOpen()));
- if(!portHandler.hasMessages(1)){
EventBus.getDefault().post(new ManageOpenGridResultEvent());
+ if(gridDo.getIsOpen()==0) {
+ //寮�闂ㄥけ璐�
+ EventBus.getDefault().post(new OpenErrEvent(key));
+ }else {
+ //寮�闂ㄨ繑鍥�
+ EventBus.getDefault().post(new OpenGridOneResultEvent(key,"00".equals(open)?1:0));
+ }
}
+
}else if(data.length()==16){
//鎵归噺
//8A 02 00 00 00 00 11 99
@@ -1281,12 +1344,7 @@
for(CabinetGridDo d:gridDos){
oldMap.put(d.getGridKey(),d);
}
- List<CabinetGridDo> addList = new ArrayList<>();
List<CabinetGridDo> updateList = new ArrayList<>();
- String finalDm = dm;
- /*runOnUiThread(() -> {
- getVM().addInfo("鎵归噺鏌ヨ杩斿洖锛�" +bh+","+ finalDm+",鎬绘暟鎹細"+oldMap.size());
- });*/
try {
for(int i=1;i<=dm.length();i++){
String key = bh+SportUtils.intToHex(i);
@@ -1295,22 +1353,11 @@
gridDo.setIsOpen("1".equals(dm.substring(i-1,i))?0:1);
gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
updateList.add(gridDo);
- }/*else {
- getVM().addInfo("鏂板key锛�" +key);
- CabinetGridDo gridDo = new CabinetGridDo();
- gridDo.setGridKey(key);
- gridDo.setIsOpen("1".equals(dm.substring(i-1,i))?0:1);
- gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
- addList.add(gridDo);
- }*/
+ }
}
- runOnUiThread(() -> {
- getVM().addInfo("鎵归噺寮�闂ㄦ洿鏂板簱鏁版嵁:鐗堝彿锛�" +bh+","+ addList.size()+","+updateList.size());
- });
+
getVM().updateGrids(updateList);
- if(!portHandler.hasMessages(1)){
- EventBus.getDefault().post(new ManageOpenGridResultEvent());
- }
+ EventBus.getDefault().post(new ManageOpenGridResultEvent());
}catch (Exception exception){
runOnUiThread(() -> {
getVM().addInfo("鎵归噺寮�闂ㄦ姤閿欙細" +exception.getMessage());
@@ -1324,23 +1371,16 @@
String open = data.substring(6,8);
String key = bh+tdh;
CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
- if(gridDo==null){
- //鏂板
- gridDo = new CabinetGridDo();
- gridDo.setIsOpen("00".equals(open)?1:0);
- gridDo.setGridKey(key);
- gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
- DaoManager.getCabinetGridDao().insert(gridDo);
- }else {
+ if(gridDo!=null){
gridDo.setIsOpen("00".equals(open)?1:0);
gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
DaoManager.getCabinetGridDao().update(gridDo);
}
//鍏抽棬杩斿洖
- EventBus.getDefault().post(new CloseGridOneResultEvent(key,gridDo.getIsOpen()));
+ EventBus.getDefault().post(new CloseGridOneResultEvent(key,"00".equals(open)?1:0));
if(isShowing&&isShowTip){
//淇敼鏄剧ず鎻愰啋
- doRegister(5,null);
+ getVM().doAction(5);
}
}else if(data.startsWith("80")){
//鏌ヨ鎵�鏈夐棬鐘舵��
@@ -1383,7 +1423,11 @@
runOnUiThread(() -> {
getVM().addInfo("鏇存柊搴撴暟鎹�:鐗堝彿锛�" +bh+","+ addList.size()+","+updateList.size());
});
+
getVM().updateGrids(updateList);
+ if(isShowing){
+ unCloseGrid();
+ }
}catch (Exception exception){
runOnUiThread(() -> {
getVM().addInfo("鎶ラ敊锛�" +exception.getMessage());
@@ -1440,7 +1484,15 @@
String data2 = keyPreviousData+data;
runOnUiThread(() -> {
getVM().addInfo("鑾峰彇鍒伴挜鍖欐暟鎹�:" + data2);
- jxKey(data2);
+ if(data2.contains("CC01")&&data2.contains("CC02")){
+ String[] sp = data2.split("CC02");
+ if(sp.length==2){
+ jxKey(sp[0]);
+ jxKey("CC02"+sp[1]);
+ }
+ }else {
+ jxKey(data2);
+ }
});
keyPreviousData = null;
}
@@ -1483,11 +1535,16 @@
}else {
gridDo.setCurKeyCode("");
}
+ if("0101".equals(key)) {
+ getVM().addInfo(key+" , "+isHaveKey+" "+keyCode);
+ getVM().addInfo(key + "璁剧疆閽ュ寵锛�" + gridDo.getCurKeyCode());
+ }
gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
updateList.add(gridDo);
}
}
}
+
getVM().updateGrids(updateList);
EventBus.getDefault().post(new KeyResultEvent());
}
@@ -1516,9 +1573,6 @@
getVM().addInfo("鑾峰彇鍒伴厭绮炬娴嬫暟鎹�:"+StringUtil.DateToStrSS(new Date())+" " + new String(bytes));
});
String data = new String(bytes);
- runOnUiThread(() -> {
- getVM().addInfo("鑾峰彇鍒伴厭绮炬娴嬫槸鍚︽娴嬪け璐�:" + (data.contains("blow fail")));
- });
if(data.contains("blow fail")){
//妫�娴嬪け璐�
EventBus.getDefault().post(new JiujinResultEvent(false,null));
@@ -1633,6 +1687,13 @@
}
};
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void CheckGridStatusEvent(CheckGridStatusEvent e){
+ if(!isFinishing()){
+ checkGridStatus(0);
+ }
+ }
+
//妫�鏌ユ墍鏈夐棬鐘舵��
private void checkGridStatus(long time){
sendPortHandlerMsg(1,"80010033B2",time+100);
@@ -1645,18 +1706,35 @@
sendPortHandlerMsg(2,"A002010000000003",time+400);
}
+ private String jiu_blow;
+ private String jiu_mic_ad;
+ private String jiu_alarm;
+ private String jiu_unit;
private void setJiuConfig(long time){
CabinetConfigDataBean config = MApplication.getConfigBean().getCabinetConfigDataVO();
- //璁剧疆鍚规皵鏃堕棿
- sendPortHandlerMsg(3,"blow:"+config.getBlowTime(),time+100);
- //鍘嬪姏鍊�
- sendPortHandlerMsg(3,"mic_ad:"+config.getPressure(),time+300);
- //娴撳害闃堝��
- sendPortHandlerMsg(3,"alarm:"+config.getConcentration(),time+600);
- //娴撳害闃堝�煎崟浣� (1=mg/100ml;2=mg/L;3=%BAC)
- sendPortHandlerMsg(3,"unit:"+config.getThreshold(),time+900);
-
- sendPortHandlerMsg(3,"read"+config.getThreshold(),time+1200);
+ if(!config.getBlowTime().equals(jiu_blow)) {
+ //璁剧疆鍚规皵鏃堕棿
+ jiu_blow = config.getBlowTime();
+ sendPortHandlerMsg(3, "blow:" + config.getBlowTime(), time += 100);
+ }
+ if(!config.getPressure().equals(jiu_mic_ad)) {
+ //鍘嬪姏鍊�
+ jiu_mic_ad = config.getPressure();
+ sendPortHandlerMsg(3, "mic_ad:" + config.getPressure(), time += 300);
+ }
+ if(!config.getConcentration().equals(jiu_alarm)) {
+ //娴撳害闃堝��
+ jiu_alarm = config.getConcentration();
+ sendPortHandlerMsg(3, "alarm:" + config.getConcentration(), time += 300);
+ }
+ if("3".equals(config.getThreshold())){
+ config.setThreshold("0");
+ }
+ if(!config.getThreshold().equals(jiu_unit)) {
+ //娴撳害闃堝�煎崟浣� (1=mg/100ml;2=mg/L;3=%BAC)
+ jiu_unit = config.getThreshold();
+ sendPortHandlerMsg(3, "unit:" + config.getThreshold(), time += 300);
+ }
}
private void sendPortHandlerMsg(int what,String obj,long time){
@@ -1666,11 +1744,12 @@
portHandler.sendMessageDelayed(mc,time);
}
+ private boolean isInitPort;
//鍒濆鍖栦覆鍙�
private void initPort(){
- SpUtil.setString("port_grid","/dev/ttyS7");
- SpUtil.setString("port_key","/dev/ttyS1");
- SpUtil.setString("port_jiu","/dev/ttyS2");
+ //SpUtil.setString("port_grid","/dev/ttyS7");
+ //SpUtil.setString("port_key","/dev/ttyS1");
+ //SpUtil.setString("port_jiu","/dev/ttyS2");
gridPath = SpUtil.getString("port_grid");
getVM().addInfo("闂ㄤ覆鍙i摼鎺ワ細"+gridPath);
keyPath = SpUtil.getString("port_key");
@@ -1680,6 +1759,9 @@
if(!TextUtils.isEmpty(SpUtil.getString("port_grid"))&&
!TextUtils.isEmpty(SpUtil.getString("port_key"))&&
!TextUtils.isEmpty(SpUtil.getString("port_jiu"))){
+ if(isInitPort){
+ return;
+ }
xhCount=0;
closePort(chosePort);
if(!TextUtils.isEmpty(SpUtil.getString("port_grid"))){
@@ -1690,6 +1772,7 @@
,1 , 0,gridReadObserver);
boolean isSucc = gridPort.open();
if(isSucc) {
+ isInitPort = true;
getVM().addInfo("闂ㄤ覆鍙i摼鎺ユ垚鍔燂細"+path);
String msg = isSucc ? "鎴愬姛" : "澶辫触";
//getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg);
@@ -1707,6 +1790,7 @@
,1 , 0,keyReadObserver);
boolean isSucc = keyPort.open();
if(isSucc) {
+ isInitPort = true;
getVM().addInfo("閽ュ寵涓插彛閾炬帴鎴愬姛锛�"+path);
String msg = isSucc ? "鎴愬姛" : "澶辫触";
//getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg);
@@ -1723,6 +1807,7 @@
,1 , 0,jiuReadObserver);
boolean isSucc = jiuPort.open();
if(isSucc) {
+ isInitPort = true;
getVM().addInfo("閰掔簿涓插彛閾炬帴鎴愬姛锛�"+path);
String msg = isSucc ? "鎴愬姛" : "澶辫触";
//getVM().append("涓插彛 "+ settingBean.getDevicePath() + " -杩炴帴"+msg);
@@ -1809,6 +1894,7 @@
portHandler.sendEmptyMessageDelayed(0,0);
}
+ private CircularQueue openGridQueue = new CircularQueue();
private void send485(int type,String code){
runOnUiThread(new Runnable() {
@Override
@@ -1818,6 +1904,9 @@
});
if(type==0){
if(gridPort!=null){
+ if(code.startsWith("8A")){
+ openGridQueue.enqueue(code);
+ }
byte[] sendByte = SportUtils.hexToByteArray(code);
gridPort.write(sendByte);
}
@@ -1876,4 +1965,124 @@
getVM().addInfo("涓插彛鍏ㄩ儴閾炬帴鎴愬姛锛�");
return true;
}
+
+ //寮�闂�
+ @Subscribe
+ public void OpenGridOneResultEvent(OpenGridOneResultEvent e){
+ if(!isFinishing()&&isShowing){
+ //寮�闂ㄦ垚鍔燂紝绉婚櫎寮�闂�
+ if(handler.hasMessages(1)){
+ handler.removeMessages(1);
+ getVM().addInfo("==绉婚櫎寮�闂ㄤ换鍔�");
+ }
+ }
+ }
+
+ private Long keyTime;
+ private HashMap<String,String> closeMap = new HashMap<>();
+ /**
+ * 鍏抽棬
+ * @param e
+ */
+ @Subscribe(threadMode= ThreadMode.MAIN)
+ public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
+ if(!isFinishing()&&isShowing){
+ //鍏抽棬鎴愬姛锛岀Щ闄ゅ紑闂�
+ if(handler.hasMessages(1)){
+ handler.removeMessages(1);
+ getVM().addInfo("==绉婚櫎寮�闂ㄤ换鍔�");
+ }
+ closeMap.put(e.getKey(),"");
+ //鍙戦�佹煡璇㈤挜鍖欏彿
+ EventBus.getDefault().post(new GetKeyStatusEvent());
+ keyTime = new Date().getTime()+500;
+ if(handler.hasMessages(2)){
+ handler.removeMessages(2);
+ }
+ handler.sendEmptyMessageDelayed(2,1200);
+ }
+ }
+
+ @Subscribe(threadMode= ThreadMode.MAIN)
+ public void OpenErrEvent(OpenErrEvent e){
+ //寮�闂ㄥけ璐�
+ if(!isFinishing()&&isShowing){
+ //寮�闂�
+ if(handler.hasMessages(1)){
+ handler.removeMessages(1);
+ getVM().addInfo("==绉婚櫎寮�闂ㄤ换鍔�");
+ }
+ EventBus.getDefault().post(new OpenGridEvent(e.getKey()));
+ Message msg = Message.obtain();
+ msg.what=1;
+ msg.obj = e.getKey();
+ handler.sendMessageDelayed(msg,1000);
+ }
+ }
+
+ @Subscribe
+ public void KeyResultEvent(KeyResultEvent e){
+ if(!isFinishing()&&isShowing){
+ //鏍¢獙鏃堕棿
+ if(keyTime==null){
+ return;
+ }
+ if(keyTime!=null&&keyTime>System.currentTimeMillis()){
+ //鏍¢獙杩斿洖鏃堕棿<鍛戒护鏃堕棿
+ return;
+ }
+ if(handler.hasMessages(2)){
+ handler.removeMessages(2);
+ }
+
+ HashMap<String,String> copyMap = new HashMap<>();
+ copyMap.putAll(closeMap);
+ closeMap.clear();
+ //鏍¢獙鍗″彿涓嶅鐨勶紝鐩存帴寮瑰嚭
+ List<CabinetGridDo> gridDos = DaoManager.getCabinetGridDao().loadAll();
+ List<String> keys = new ArrayList<>();
+ StringBuilder sb = new StringBuilder();
+ for(CabinetGridDo gridDo:gridDos){
+ //瑕佸湪鑼冨洿鍐�
+ if(copyMap.containsKey(gridDo.getGridKey())){
+ boolean isFail = false;
+ if(TextUtils.isEmpty(gridDo.getGridKey())){
+ if(!TextUtils.isEmpty(gridDo.getCurKeyCode())&&gridDo.getIsOpen()==0){
+ //鏈粦瀹氱殑瀛樻斁浜嗛挜鍖�
+ keys.add(gridDo.getGridKey());
+ if(sb.length()>0){
+ sb.append("銆�");
+ }
+ sb.append(gridDo.getCabinetName());
+ isFail = true;
+ }
+ }else {
+ if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
+ if(!gridDo.getCurKeyCode().equals(gridDo.getKeyCode())&&gridDo.getIsOpen()==0){
+ //閽ュ寵涓嶅尮閰�
+ keys.add(gridDo.getGridKey());
+ if(sb.length()>0){
+ sb.append("銆�");
+ }
+ sb.append(gridDo.getCabinetName());
+ isFail = true;
+ }
+ }
+ }
+ if(!isFail){
+ //鍏抽棬鎴愬姛
+ EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date())+"闂ㄥ叧闂垚鍔�***************************>鐩爣锛�"+gridDo.getKeyCode()+",褰撳墠锛�"+gridDo.getCurKeyCode()));
+ getVM().closeGrid(gridDo);
+ }
+ }
+ }
+ if(sb.length()>0){
+ ToastView.show(MApplication.mContext, sb.toString() + "閽ュ寵瀛樻斁浣嶇疆閿欒");
+ }
+ if(keys.size()>0){
+ //寮�闂�
+ EventBus.getDefault().post(new OpenGridListEvent(keys));
+ }
+ }
+ }
}
--
Gitblit v1.9.3