From cca5f79b3af36e5a908c5dfecbd30110febe3baa Mon Sep 17 00:00:00 2001 From: 陈力 <chenli@lotaai.com> Date: 星期五, 09 六月 2023 20:58:09 +0800 Subject: [PATCH] 增加mqtt --- app/src/main/java/com/lotaai/canguiayw/device/service/CanGuiService.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 46 insertions(+), 4 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 2bafe38..1fa533e 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; @@ -14,11 +15,15 @@ import com.lotaai.canguiayw.device.CanguiStatus; import com.lotaai.canguiayw.device.DeviceMessage; 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 +39,7 @@ private List<byte[]> commandQueue = new LinkedList<byte[]>(); SerialPortUtils serialPortUtils = new SerialPortUtils(); + private HashMap<String,List<GridModel>> gridStatus = new HashMap<>(); @Nullable @Override @@ -44,7 +50,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 +66,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 +124,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); - LogUtils.i("柜:" + s.getGuiHao(),"格:" + s.getGridNo(),"温度:" + s.getWendu(), - "门:"+s.isDoorIsOpen(),"加热:"+s.isJiareIsOpen(),"灯光:" + s.isDengGuangIsOpen(),"消毒:" + s.isXiaoDuIsOpen()); + 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()); + } + if (gui > -1 && !isHas){ + List<GridModel> lists = SqlliteDbManage.getInstance().selectGridByGui(gui); + if (lists!=null && lists.size()>0){ + gridStatus.put(Integer.toString(gui),lists); + } } } } -- Gitblit v1.7.1