From a3bc6aa4fa3bad787c9fc366d6904f60265eec3b Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期三, 04 九月 2024 15:44:14 +0800 Subject: [PATCH] 登录、用户取餐 --- app/src/main/java/com/lotaai/canguiayw/device/service/CanGuiService.java | 96 ++++++++++++++++++++++++++++++++---------------- 1 files changed, 64 insertions(+), 32 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 5802933..373fd32 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 @@ -1,7 +1,10 @@ + package com.lotaai.canguiayw.device.service; +import android.app.Application; import android.app.Service; import android.content.Intent; +import android.os.Handler; import android.os.IBinder; import androidx.annotation.Nullable; @@ -10,6 +13,7 @@ import com.blankj.utilcode.util.ConvertUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ThreadUtils; +import com.lotaai.canguiayw.CThreadPoolExecutor; import com.lotaai.canguiayw.common.SettingConfig; import com.lotaai.canguiayw.device.CanGuiCommand; import com.lotaai.canguiayw.device.CanguiStatus; @@ -18,6 +22,7 @@ import com.lotaai.canguiayw.device.MessageType; import com.lotaai.canguiayw.sqllitedb.GridModel; import com.lotaai.canguiayw.sqllitedb.SqlliteDbManage; +import com.pranavpandey.android.dynamic.toasts.DynamicToast; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -38,9 +43,10 @@ */ public class CanGuiService extends Service { + private List<byte[]> commandQueue = new LinkedList<byte[]>(); SerialPortUtils serialPortUtils = new SerialPortUtils(); - private HashMap<String,List<GridModel>> gridStatus = new HashMap<>(); + private HashMap<String, List<GridModel>> gridStatus = new HashMap<>(); @Nullable @Override @@ -52,15 +58,26 @@ public void onCreate() { super.onCreate(); // serialPortUtils.openSerialPort("/dev/ttyS4",4800); - String str = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Tty); - if (str == null || "".equals(str)){ - return; + + try { + String str = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Tty); + if (str == null || "".equals(str)) { + return; + } + LogUtils.i("串口号" + str); + serialPortUtils.openSerialPort(str, 4800); + registerListener(); + SettingConfig.getInstance().getExecutor().execute(selectRunnable); + SettingConfig.getInstance().getExecutor().execute(sendRunnable); + EventBus.getDefault().register(CanGuiService.this); + } catch (Exception e) { + /* CThreadPoolExecutor.runOnMainThread(new Runnable() { + @Override + public void run() { + DynamicToast.makeSuccess(getApplicationContext(), "捕获到错误:" + e.getMessage(), 3).show(); + } + });*/ } - serialPortUtils.openSerialPort(str,4800); - registerListener(); - SettingConfig.getInstance().getExecutor().execute(selectRunnable); - SettingConfig.getInstance().getExecutor().execute(sendRunnable); - EventBus.getDefault().register(CanGuiService.this); } //查询柜子的状态 @@ -68,7 +85,7 @@ @Override public void run() { //开始之前先查询是不是已经有了 - for (int i = 0; i<20;i++) { + 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); @@ -79,15 +96,15 @@ e.printStackTrace(); } } - while(true){ + while (true) { try { Thread.sleep(2000); //查询指令 - byte[] command = CanGuiCommand.getInstance().selectStatusCommand(0,0,0,0,0,0,0,0); + byte[] command = CanGuiCommand.getInstance().selectStatusCommand(0, 0, 0, 0, 0, 0, 0, 0); commandQueue.add(command); } catch (InterruptedException e) { LogUtils.e(e); - }catch (Exception e){ + } catch (Exception e) { LogUtils.e(e); } } @@ -99,40 +116,49 @@ Runnable sendRunnable = new Runnable() { @Override public void run() { - while(true){ + while (true) { try { Thread.sleep(200); //发送指令 - if (!commandQueue.isEmpty() && commandQueue.size()>0) { - byte[] cc= commandQueue.get(0); - if (cc!=null) { + if (!commandQueue.isEmpty() && commandQueue.size() > 0) { + byte[] cc = commandQueue.get(0); + if (cc != null) { serialPortUtils.sendSerialPort(cc); } commandQueue.remove(0); } - } catch (InterruptedException e) { - LogUtils.e(e); - }catch (Exception e){ + } catch (Exception e) { + /* CThreadPoolExecutor.runOnMainThread(new Runnable() { + @Override + public void run() { + DynamicToast.makeSuccess(getApplicationContext(), "捕获到错误2:" + e.getMessage(), 3).show(); + } + });*/ LogUtils.e(e); } } } }; - public void registerListener(){ + public void registerListener() { serialPortUtils.setOnDataReceiveListener(new SerialPortUtils.OnDataReceiveListener() { @Override public void onDataReceive(byte[] buffer, int size) { - if (size >3){ - List<CanguiStatus> statuses = CanGuiCommand.getInstance().analysisRecvByte(buffer); + if (size > 3) { + List<CanguiStatus> statuses = CanGuiCommand.getInstance().analysisRecvByte(buffer); + + boolean isHas = false; int gui = -1; - if (statuses!=null &&statuses.size()>0){ - if (gridStatus.containsKey(Integer.toString(statuses.get(0).getGuiHao()))){ + 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++){ + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < statuses.size(); i++) { CanguiStatus s = statuses.get(i); + sb.append("柜子号" + s.getGuiHao() + " 格子号" + s.getGridNo()); SettingConfig.getInstance().addStatusInList(s); if (!isHas) { GridModel model = new GridModel(); @@ -145,11 +171,16 @@ // LogUtils.i("柜:" + s.getGuiHao(),"格:" + s.getGridNo(),"温度:" + s.getWendu(), //// "门:"+s.isDoorIsOpen(),"加热:"+s.isJiareIsOpen(),"灯光:" + s.isDengGuangIsOpen(),"消毒:" + s.isXiaoDuIsOpen()); } - if (gui > -1 && !isHas){ + + + + + if (gui > -1 && !isHas) { List<GridModel> lists = SqlliteDbManage.getInstance().selectGridByGui(gui); - if (lists!=null && lists.size()>0){ - gridStatus.put(Integer.toString(gui),lists); + if (lists != null && lists.size() > 0) { + gridStatus.put(Integer.toString(gui), lists); } + } } } @@ -158,18 +189,19 @@ } @Subscribe(threadMode = ThreadMode.ASYNC) - public void recvCommand(DeviceMessage mssage){ + public void recvCommand(DeviceMessage mssage) { LogUtils.i("开门命令接收"); try { - if (mssage.getMessageType() == MessageType.SENDMESSAGE.ordinal()){ + if (mssage.getMessageType() == MessageType.SENDMESSAGE.ordinal()) { if (mssage.getDeviceType() == DeviceType.CANGUI.ordinal()) { byte[] cc = mssage.getMessageByte(); if (cc != null) { commandQueue.add(cc); + } } } - }catch (Exception e){ + } catch (Exception e) { LogUtils.e(e); } } -- Gitblit v1.7.1