From 0fbbf8c20ece1586a119fd4accc962fe73b5b268 Mon Sep 17 00:00:00 2001
From: 陈力 <chenli@lotaai.com>
Date: 星期三, 14 六月 2023 19:31:46 +0800
Subject: [PATCH] bug

---
 app/src/main/java/com/lotaai/canguiayw/device/service/CanGuiService.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 52 insertions(+), 6 deletions(-)

diff --git a/app/src/main/java/com/lotaai/canguiayw/device/service/CanGuiService.java b/app/src/main/java/com/lotaai/canguiayw/device/service/CanGuiService.java
index dfaaed0..5802933 100644
--- a/app/src/main/java/com/lotaai/canguiayw/device/service/CanGuiService.java
+++ b/app/src/main/java/com/lotaai/canguiayw/device/service/CanGuiService.java
@@ -6,6 +6,7 @@
 
 import androidx.annotation.Nullable;
 
+import com.blankj.utilcode.util.CacheDiskUtils;
 import com.blankj.utilcode.util.ConvertUtils;
 import com.blankj.utilcode.util.LogUtils;
 import com.blankj.utilcode.util.ThreadUtils;
@@ -13,12 +14,17 @@
 import com.lotaai.canguiayw.device.CanGuiCommand;
 import com.lotaai.canguiayw.device.CanguiStatus;
 import com.lotaai.canguiayw.device.DeviceMessage;
+import com.lotaai.canguiayw.device.DeviceType;
 import com.lotaai.canguiayw.device.MessageType;
+import com.lotaai.canguiayw.sqllitedb.GridModel;
+import com.lotaai.canguiayw.sqllitedb.SqlliteDbManage;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Queue;
@@ -34,6 +40,7 @@
 
     private List<byte[]> commandQueue = new LinkedList<byte[]>();
     SerialPortUtils serialPortUtils = new SerialPortUtils();
+    private HashMap<String,List<GridModel>> gridStatus = new HashMap<>();
 
     @Nullable
     @Override
@@ -44,7 +51,12 @@
     @Override
     public void onCreate() {
         super.onCreate();
-        serialPortUtils.openSerialPort("/dev/ttyS4",4800);
+//        serialPortUtils.openSerialPort("/dev/ttyS4",4800);
+        String str = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Tty);
+        if (str == null || "".equals(str)){
+            return;
+        }
+        serialPortUtils.openSerialPort(str,4800);
         registerListener();
         SettingConfig.getInstance().getExecutor().execute(selectRunnable);
         SettingConfig.getInstance().getExecutor().execute(sendRunnable);
@@ -55,6 +67,18 @@
     Runnable selectRunnable = new Runnable() {
         @Override
         public void run() {
+            //开始之前先查询是不是已经有了
+            for (int i = 0; i<20;i++) {
+                List<GridModel> lists = SqlliteDbManage.getInstance().selectGridByGui(i);
+                if (lists != null && lists.size() > 0) {
+                    gridStatus.put(Integer.toString(i), lists);
+                }
+                try {
+                    Thread.sleep(100);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
             while(true){
                 try {
                     Thread.sleep(2000);
@@ -101,12 +125,31 @@
             public void onDataReceive(byte[] buffer, int size) {
                 if (size >3){
                     List<CanguiStatus> statuses =  CanGuiCommand.getInstance().analysisRecvByte(buffer);
-                    if (statuses!=null){
+                    boolean isHas = false;
+                    int gui = -1;
+                    if (statuses!=null &&statuses.size()>0){
+                        if (gridStatus.containsKey(Integer.toString(statuses.get(0).getGuiHao()))){
+                            isHas = true;
+                        }
                         for (int i = 0; i < statuses.size(); i++){
                             CanguiStatus s = statuses.get(i);
                             SettingConfig.getInstance().addStatusInList(s);
+                            if (!isHas) {
+                                GridModel model = new GridModel();
+                                model.setGuiHao(s.getGuiHao());
+                                model.setGridNo(s.getGridNo());
+                                model.setState(0);
+                                SqlliteDbManage.getInstance().addGrid(model);
+                                gui = s.getGuiHao();
+                            }
 //                            LogUtils.i("柜:" + s.getGuiHao(),"格:" + s.getGridNo(),"温度:" + s.getWendu(),
-//                                    "门:"+s.isDoorIsOpen(),"加热:"+s.isJiareIsOpen(),"灯光:" + s.isDengGuangIsOpen(),"消毒:" + s.isXiaoDuIsOpen());
+////                                    "门:"+s.isDoorIsOpen(),"加热:"+s.isJiareIsOpen(),"灯光:" + s.isDengGuangIsOpen(),"消毒:" + s.isXiaoDuIsOpen());
+                        }
+                        if (gui > -1 && !isHas){
+                            List<GridModel> lists = SqlliteDbManage.getInstance().selectGridByGui(gui);
+                            if (lists!=null && lists.size()>0){
+                                gridStatus.put(Integer.toString(gui),lists);
+                            }
                         }
                     }
                 }
@@ -116,11 +159,14 @@
 
     @Subscribe(threadMode = ThreadMode.ASYNC)
     public void recvCommand(DeviceMessage mssage){
+        LogUtils.i("开门命令接收");
         try {
             if (mssage.getMessageType() == MessageType.SENDMESSAGE.ordinal()){
-                byte[] cc = mssage.getMessageByte();
-                if (cc!=null) {
-                    commandQueue.add(cc);
+                if (mssage.getDeviceType() == DeviceType.CANGUI.ordinal()) {
+                    byte[] cc = mssage.getMessageByte();
+                    if (cc != null) {
+                        commandQueue.add(cc);
+                    }
                 }
             }
         }catch (Exception e){

--
Gitblit v1.7.1