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