Browse Source

1.多厕所清洗优化
2.增加进阶参数
3.增加xy信号

Administrator 4 years ago
parent
commit
9397f7693b
75 changed files with 922 additions and 471 deletions
  1. 6 4
      app/src/main/AndroidManifest.xml
  2. 10 6
      app/src/main/java/com/sunzee/adapter/AdvanceParameterAdapter.java
  3. 13 2
      app/src/main/java/com/sunzee/adapter/DebugParameterAdapter.java
  4. 9 7
      app/src/main/java/com/sunzee/base/BaseApplication.java
  5. 5 0
      app/src/main/java/com/sunzee/model/Global.java
  6. 2 0
      app/src/main/java/com/sunzee/model/domain/Name.java
  7. 54 39
      app/src/main/java/com/sunzee/mvp/advanceparameter/AdvanceParameterPresenter.java
  8. 32 40
      app/src/main/java/com/sunzee/mvp/advertising/AdvertisingPresenter.java
  9. 2 0
      app/src/main/java/com/sunzee/mvp/debug/DebugPresenter.java
  10. 5 0
      app/src/main/java/com/sunzee/mvp/passwordreset/PasswordResetPresenter.java
  11. 260 111
      app/src/main/java/com/sunzee/service/MyService.java
  12. 10 47
      app/src/main/java/com/sunzee/thread/advanceparameter/AdvanceParameterTask.java
  13. 1 0
      app/src/main/java/com/sunzee/thread/advanceparameter/AdvanceParameterThreadType.java
  14. 16 84
      app/src/main/java/com/sunzee/thread/advanceparameter/ThreadPoolAdvanceParameter.java
  15. 0 1
      app/src/main/java/com/sunzee/thread/debugparameter/DebugParameterTask.java
  16. 2 1
      app/src/main/java/com/sunzee/thread/debugparameter/DebugParameterThreadType.java
  17. 28 7
      app/src/main/java/com/sunzee/thread/debugparameter/ThreadPoolDebugParameter.java
  18. 9 0
      app/src/main/java/com/sunzee/thread/myservice/MyserviceTask.java
  19. 1 0
      app/src/main/java/com/sunzee/thread/myservice/MyserviceThreadType.java
  20. 12 2
      app/src/main/java/com/sunzee/thread/myservice/ThreadPoolMyservice.java
  21. 14 0
      app/src/main/java/com/sunzee/ui/activity/HomeActivity.java
  22. 2 2
      app/src/main/java/com/sunzee/ui/dialog/CheckUpdatesDialog.java
  23. 2 2
      app/src/main/java/com/sunzee/ui/dialog/ShutdownDialog.java
  24. 1 1
      app/src/main/java/com/sunzee/ui/fragment/AdvanceParameterFragment.java
  25. 3 1
      app/src/main/java/com/sunzee/ui/fragment/DebugFragment.java
  26. 67 10
      app/src/main/java/com/sunzee/ui/fragment/LanguageSetFragment.java
  27. 16 0
      app/src/main/java/com/sunzee/ui/fragment/OtherFragment.java
  28. 13 0
      app/src/main/java/com/sunzee/ui/fragment/StatisticsFragment.java
  29. 29 0
      app/src/main/java/com/sunzee/utils/LanguageUtils.java
  30. 35 0
      app/src/main/java/com/sunzee/utils/TimerUtil.java
  31. 1 1
      app/src/main/res/layout/activity_login.xml
  32. 4 1
      app/src/main/res/layout/fragment_change_password.xml
  33. 37 33
      app/src/main/res/layout/fragment_debug.xml
  34. 6 5
      app/src/main/res/layout/fragment_language.xml
  35. 30 29
      app/src/main/res/layout/fragment_statistics.xml
  36. 10 0
      app/src/main/res/layout/spinner_text.xml
  37. 12 10
      app/src/main/res/menu/my_navigation_items.xml
  38. 28 8
      app/src/main/res/values-en/strings.xml
  39. 10 0
      app/src/main/res/values/arrays.xml
  40. 40 17
      app/src/main/res/values/strings.xml
  41. 2 0
      app/src/test/java/com/sunzee/ExampleUnitTest.java
  42. BIN
      serialportlib/.cxx/cmake/debug/arm64-v8a/.ninja_deps
  43. 3 0
      serialportlib/.cxx/cmake/debug/arm64-v8a/.ninja_log
  44. 8 0
      serialportlib/.cxx/cmake/debug/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.command.txt
  45. 0 0
      serialportlib/.cxx/cmake/debug/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stderr.txt
  46. 1 0
      serialportlib/.cxx/cmake/debug/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stdout.txt
  47. BIN
      serialportlib/.cxx/cmake/debug/x86_64/.ninja_deps
  48. 3 0
      serialportlib/.cxx/cmake/debug/x86_64/.ninja_log
  49. 8 0
      serialportlib/.cxx/cmake/debug/x86_64/android_gradle_build_hboxs_serial_port_x86_64.command.txt
  50. 0 0
      serialportlib/.cxx/cmake/debug/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stderr.txt
  51. 1 0
      serialportlib/.cxx/cmake/debug/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stdout.txt
  52. BIN
      serialportlib/.cxx/cmake/release/arm64-v8a/.ninja_deps
  53. 5 0
      serialportlib/.cxx/cmake/release/arm64-v8a/.ninja_log
  54. BIN
      serialportlib/.cxx/cmake/release/arm64-v8a/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o
  55. 8 0
      serialportlib/.cxx/cmake/release/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.command.txt
  56. 0 0
      serialportlib/.cxx/cmake/release/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stderr.txt
  57. 2 0
      serialportlib/.cxx/cmake/release/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stdout.txt
  58. BIN
      serialportlib/.cxx/cmake/release/armeabi-v7a/.ninja_deps
  59. 5 0
      serialportlib/.cxx/cmake/release/armeabi-v7a/.ninja_log
  60. BIN
      serialportlib/.cxx/cmake/release/armeabi-v7a/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o
  61. 8 0
      serialportlib/.cxx/cmake/release/armeabi-v7a/android_gradle_build_hboxs_serial_port_armeabi-v7a.command.txt
  62. 0 0
      serialportlib/.cxx/cmake/release/armeabi-v7a/android_gradle_build_hboxs_serial_port_armeabi-v7a.stderr.txt
  63. 1 0
      serialportlib/.cxx/cmake/release/armeabi-v7a/android_gradle_build_hboxs_serial_port_armeabi-v7a.stdout.txt
  64. BIN
      serialportlib/.cxx/cmake/release/x86/.ninja_deps
  65. 5 0
      serialportlib/.cxx/cmake/release/x86/.ninja_log
  66. BIN
      serialportlib/.cxx/cmake/release/x86/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o
  67. 8 0
      serialportlib/.cxx/cmake/release/x86/android_gradle_build_hboxs_serial_port_x86.command.txt
  68. 0 0
      serialportlib/.cxx/cmake/release/x86/android_gradle_build_hboxs_serial_port_x86.stderr.txt
  69. 2 0
      serialportlib/.cxx/cmake/release/x86/android_gradle_build_hboxs_serial_port_x86.stdout.txt
  70. BIN
      serialportlib/.cxx/cmake/release/x86_64/.ninja_deps
  71. 5 0
      serialportlib/.cxx/cmake/release/x86_64/.ninja_log
  72. BIN
      serialportlib/.cxx/cmake/release/x86_64/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o
  73. 8 0
      serialportlib/.cxx/cmake/release/x86_64/android_gradle_build_hboxs_serial_port_x86_64.command.txt
  74. 0 0
      serialportlib/.cxx/cmake/release/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stderr.txt
  75. 2 0
      serialportlib/.cxx/cmake/release/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stdout.txt

+ 6 - 4
app/src/main/AndroidManifest.xml

@@ -38,10 +38,7 @@
 
         <activity
             android:name=".ui.activity.HomeActivity"
-            android:windowSoftInputMode="stateHidden|adjustPan"></activity>
-
-        <activity android:name=".ui.activity.LoginActivity" />
-        <activity android:name=".ui.activity.AdvertisingActivity">
+            android:windowSoftInputMode="stateHidden|adjustPan">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -49,6 +46,11 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".ui.activity.LoginActivity" />
+        <activity android:name=".ui.activity.AdvertisingActivity">
+
+        </activity>
+
         <service
             android:name=".service.MyPushService"
             android:exported="true"

+ 10 - 6
app/src/main/java/com/sunzee/adapter/AdvanceParameterAdapter.java

@@ -26,10 +26,11 @@ import java.util.HashMap;
  */
 public class AdvanceParameterAdapter extends RecyclerView.Adapter<AdvanceParameterAdapter.ViewHolder> {
 
-    private final int[] paraName = {
-            R.string.advance_parameter_7, R.string.advance_parameter_8,
-            R.string.advance_parameter_9, R.string.advance_parameter_10,
-            R.string.advance_parameter_11, R.string.advance_parameter_12,
+    public final static int[] paraName = {
+            R.string.advance_parameter_1,R.string.advance_parameter_2,R.string.advance_parameter_3,R.string.advance_parameter_4,
+            R.string.advance_parameter_5,R.string.advance_parameter_6,R.string.advance_parameter_7,R.string.advance_parameter_8,
+            R.string.advance_parameter_9, R.string.advance_parameter_10,R.string.advance_parameter_11, R.string.advance_parameter_12,
+            R.string.advance_parameter_13, R.string.advance_parameter_14,R.string.advance_parameter_15, R.string.advance_parameter_16
     };
 
     private ArrayList<ParameterBean> parameterBeans = new ArrayList<>();
@@ -43,8 +44,11 @@ public class AdvanceParameterAdapter extends RecyclerView.Adapter<AdvanceParamet
     }
 
     private final String[] paraAddress = {
+            "D420", "D421", "D422", "D423",
+            "D424", "D425", "D418", "D419",
             "D426", "D427", "D428", "D429",
-            "D430", "D431"};
+            "D430", "D431", "D432", "D433"};
+
     //保存editText的值
     public HashMap<Integer, String> contents = new HashMap<>();
 
@@ -66,7 +70,7 @@ public class AdvanceParameterAdapter extends RecyclerView.Adapter<AdvanceParamet
     }
 
     //地址具体数值
-    private String[] values = new String[6];
+    private String[] values = new String[paraAddress.length];
 
     @NonNull
     @Override

+ 13 - 2
app/src/main/java/com/sunzee/adapter/DebugParameterAdapter.java

@@ -31,13 +31,24 @@ public class DebugParameterAdapter extends RecyclerView.Adapter<DebugParameterAd
             R.string.debug_7, R.string.hole_lamp1,
             R.string.hole_lamp2, R.string.hole_lamp3,
             R.string.hole_lamp4, R.string.hole_lamp5,
-            R.string.hole_lamp6
+            R.string.hole_lamp6,R.string.x_add,
+            R.string.x_subtract,R.string.y_add,
+            R.string.y_subtract,R.string.z_top,
+            R.string.z_bottom,R.string.e_add,
+            R.string.e_subtract,R.string.a_top,
+            R.string.a_bottom,R.string.x_back_zero,
+            R.string.y_back_zero,R.string.z_back_zero,
+            R.string.e_back_zero,R.string.a_back_zero
+
     };
     private final String[] paraAddress = {
             "M1411", "M1412", "M313", "M315",
             "M316", "M317", "M318", "M320",
             "M321", "M322", "M323", "M324",
-            "M325"};
+            "M325","M1002","M1003","M1102",
+            "M1103","M1203","M1202","M1302",
+            "M1303","M1403","M1402","M1010",
+            "M1110","M1210","M1310","M1410"};
 
     public DebugParameterAdapter() {
 

+ 9 - 7
app/src/main/java/com/sunzee/base/BaseApplication.java

@@ -20,6 +20,7 @@ import com.sunzee.model.Heartbeat;
 import com.sunzee.model.domain.Name;
 import com.sunzee.service.MyService;
 import com.sunzee.utils.FileUtil;
+import com.sunzee.utils.LanguageUtils;
 import com.sunzee.utils.SharedPreferencesUtils;
 import com.umeng.commonsdk.UMConfigure;
 import com.umeng.commonsdk.UMConfigureImpl;
@@ -55,15 +56,16 @@ public class BaseApplication extends Application {
         firstHeartbeat();
         setDatabase();
         getScreenWidthHeight();
-        Log.d(TAG, "onCreate: "+Heartbeat.deviceId);
-        String deviceId ="";
+        Log.d(TAG, "onCreate: " + Heartbeat.deviceId);
+        String deviceId = "";
         if (Heartbeat.deviceId != null && Heartbeat.deviceId.length() > 7) {
-            deviceId =  Heartbeat.deviceId.substring(Heartbeat.deviceId.length() - 6);
-        }else{
-            deviceId="zengwenlong";
+            deviceId = Heartbeat.deviceId.substring(Heartbeat.deviceId.length() - 6);
+        } else {
+            deviceId = "zengwenlong";
         }
-        UMConfigure.init(this, "5ee80e9fdbc2ec076dd49301",deviceId, UMConfigure.DEVICE_TYPE_PHONE, "");
-//        UMConfigure.setLogEnabled(true);
+        UMConfigure.init(this, "5ee80e9fdbc2ec076dd49301", deviceId, UMConfigure.DEVICE_TYPE_PHONE, "");
+        String ch = (String)SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, "ch");
+        LanguageUtils.set(ch);
     }
 
     //获取屏幕高和宽:不包含虚拟按键部分的高和宽。

+ 5 - 0
app/src/main/java/com/sunzee/model/Global.java

@@ -1,5 +1,10 @@
 package com.sunzee.model;
 
 public class Global {
+    /**
+     * 定时闹钟的个数
+     */
     public static int alarmNumber = 0;
+
+    public static final double num = 177.778;
 }

+ 2 - 0
app/src/main/java/com/sunzee/model/domain/Name.java

@@ -42,4 +42,6 @@ public interface Name {
      * 开始清洗
      */
     String STARTCLEAN = "startClean";
+
+
 }

+ 54 - 39
app/src/main/java/com/sunzee/mvp/advanceparameter/AdvanceParameterPresenter.java

@@ -4,11 +4,13 @@ import android.util.Log;
 
 import com.google.gson.Gson;
 import com.sunzee.base.BasePresenter;
+import com.sunzee.model.Global;
 import com.sunzee.model.Heartbeat;
 import com.sunzee.model.HttpResult;
 import com.sunzee.model.domain.ParameterBean;
 import com.sunzee.retrofit.ApiCallback;
 import com.sunzee.thread.advanceparameter.ThreadPoolAdvanceParameter;
+import com.sunzee.utils.AdvacedUtil;
 import com.sunzee.utils.HexadecimalUtil;
 import java.util.ArrayList;
 import okhttp3.RequestBody;
@@ -24,54 +26,42 @@ public class AdvanceParameterPresenter extends BasePresenter<AdvanceParameterVie
     private static final String TAG = "AdvanceParameterPresent";
 
     public void setAdvanced(String name, ArrayList<String> results, ThreadPoolAdvanceParameter threadGetParameter1) {
-        if (name.equals("D426")) {
-            if (!threadGetParameter1.isReceive1()) {
-                threadGetParameter1.setReceive1(true);
-                threadGetParameter1.stopReadD426();
-                threadGetParameter1.getValues()[0] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D427")) {
+        if (name.equals("D418")) {
             if (!threadGetParameter1.isReceive2()) {
                 threadGetParameter1.setReceive2(true);
-                threadGetParameter1.stopReadD427();
-                threadGetParameter1.getValues()[1] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
+                threadGetParameter1.stopReadD418();
+                threadGetParameter1.getValues()[6] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(0))));
+                threadGetParameter1.getValues()[7] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(1))));
+                threadGetParameter1.getValues()[0] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(2))));
+                threadGetParameter1.getValues()[1] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(3))));
+                threadGetParameter1.getValues()[2] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(4))));
+                threadGetParameter1.getValues()[3] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(5))));
+                threadGetParameter1.getValues()[4] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(6))));
+                threadGetParameter1.getValues()[5] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(7))));
 
-        } else if (name.equals("D428")) {
-            if (!threadGetParameter1.isReceive3()) {
-                threadGetParameter1.setReceive3(true);
-                threadGetParameter1.stopReadD428();
-                threadGetParameter1.getValues()[2] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+                Log.d(TAG, "D418setAdvanced: "+results.size());
             }
-
-        } else if (name.equals("D429")) {
-            if (!threadGetParameter1.isReceive4()) {
-                threadGetParameter1.setReceive4(true);
-                //参数23 D278
-                threadGetParameter1.stopReadD429();
-                threadGetParameter1.getValues()[3] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D430")) {
-            if (!threadGetParameter1.isReceive5()) {
-                threadGetParameter1.setReceive5(true);
-                threadGetParameter1.stopReadD430();
-                threadGetParameter1.getValues()[4] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D431")) {
-            if (!threadGetParameter1.isReceive6()) {
-                threadGetParameter1.setReceive6(true);
-                threadGetParameter1.stopReadD431();
-                threadGetParameter1.getValues()[5] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+        } else if (name.equals("D426")) {
+            if (!threadGetParameter1.isReceive1()) {
+                threadGetParameter1.setReceive1(true);
+                threadGetParameter1.stopReadD426();
+                threadGetParameter1.getValues()[7] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+                threadGetParameter1.getValues()[8] = String.valueOf(HexadecimalUtil.hex2dec(results.get(1)));
+                threadGetParameter1.getValues()[9] = String.valueOf(HexadecimalUtil.hex2dec(results.get(2)));
+                threadGetParameter1.getValues()[10] = String.valueOf(HexadecimalUtil.hex2dec(results.get(3)));
+                threadGetParameter1.getValues()[11] = String.valueOf(HexadecimalUtil.hex2dec(results.get(4)));
+                threadGetParameter1.getValues()[12] = String.valueOf(HexadecimalUtil.hex2dec(results.get(5)));
+                threadGetParameter1.getValues()[13] = String.valueOf(HexadecimalUtil.hex2dec(results.get(6)));
+                threadGetParameter1.getValues()[14] = String.valueOf(HexadecimalUtil.hex2dec(results.get(7)));
+                threadGetParameter1.getValues()[15] = String.valueOf(HexadecimalUtil.hex2dec(results.get(8)));
+                Log.d(TAG, "D426setAdvanced: "+results.size());
             }
         }
-        if (threadGetParameter1.isReceive1() && threadGetParameter1.isReceive2() && threadGetParameter1.isReceive3() && threadGetParameter1.isReceive4() && threadGetParameter1.isReceive5() && threadGetParameter1.isReceive6()) {
+        if (threadGetParameter1.isReceive1() &&
+                threadGetParameter1.isReceive2()) {
             mvpView.getDataSuccess();
             threadGetParameter1.setReceive1(false);
             threadGetParameter1.setReceive2(false);
-            threadGetParameter1.setReceive3(false);
-            threadGetParameter1.setReceive4(false);
-            threadGetParameter1.setReceive5(false);
-            threadGetParameter1.setReceive6(false);
         }
     }
 
@@ -97,4 +87,29 @@ public class AdvanceParameterPresenter extends BasePresenter<AdvanceParameterVie
             }
         });
     }
+
+    // 获取真正的精度
+    public String getLD436RealValue(ArrayList<String> results, int position) {
+        //10进制
+        String s = String.valueOf(HexadecimalUtil.hex2dec(results.get(position)));
+        long l = HexadecimalUtil.hex2dec(results.get(position));
+        Integer integer = Integer.valueOf(s);
+        //2进制
+        String s1 = Integer.toBinaryString(integer);
+        if (s1.length() < 16) {
+            //正数 四舍五入
+            String s3 = get177Data(l);
+            return s3;
+        }else {
+            //负数
+            String realData = AdvacedUtil.getRealData(s1);
+            return realData;
+        }
+
+
+    }
+
+    private String get177Data(long l) {
+        return String.valueOf(Math.round((l/ Global.num)*10));
+    }
 }

+ 32 - 40
app/src/main/java/com/sunzee/mvp/advertising/AdvertisingPresenter.java

@@ -336,57 +336,49 @@ public class AdvertisingPresenter extends BasePresenter<AdvertisingView> {
 
     //---------------------------------------------------------------------请求是否已经付费了。 end---------------------------------------------
     public void setAdvanced(String name, ArrayList<String> results, ThreadPoolAdvanceParameter threadGetParameter1) {
-        if (name.equals("D426")) {
-            if (!threadGetParameter1.isReceive1()) {
-                threadGetParameter1.setReceive1(true);
-                threadGetParameter1.stopReadD426();
-                threadGetParameter1.getValues()[0] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D427")) {
+        if (name.equals("D418")) {
             if (!threadGetParameter1.isReceive2()) {
                 threadGetParameter1.setReceive2(true);
-                threadGetParameter1.stopReadD427();
-                threadGetParameter1.getValues()[1] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-
-        } else if (name.equals("D428")) {
-            if (!threadGetParameter1.isReceive3()) {
-                threadGetParameter1.setReceive3(true);
-                threadGetParameter1.stopReadD428();
-                threadGetParameter1.getValues()[2] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-
-        } else if (name.equals("D429")) {
-            if (!threadGetParameter1.isReceive4()) {
-                threadGetParameter1.setReceive4(true);
-                //参数23 D278
-                threadGetParameter1.stopReadD429();
-                threadGetParameter1.getValues()[3] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D430")) {
-            if (!threadGetParameter1.isReceive5()) {
-                threadGetParameter1.setReceive5(true);
-                threadGetParameter1.stopReadD430();
-                threadGetParameter1.getValues()[4] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+                threadGetParameter1.stopReadD418();
+                threadGetParameter1.getValues()[6] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(0))));
+                threadGetParameter1.getValues()[7] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(1))));
+                threadGetParameter1.getValues()[0] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(2))));
+                threadGetParameter1.getValues()[1] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(3))));
+                threadGetParameter1.getValues()[2] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(4))));
+                threadGetParameter1.getValues()[3] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(5))));
+                threadGetParameter1.getValues()[4] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(6))));
+                threadGetParameter1.getValues()[5] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(7))));
+
+                Log.d(TAG, "D418setAdvanced: "+results.size());
             }
-        } else if (name.equals("D431")) {
-            if (!threadGetParameter1.isReceive6()) {
-                threadGetParameter1.setReceive6(true);
-                threadGetParameter1.stopReadD431();
-                threadGetParameter1.getValues()[5] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+        } else if (name.equals("D426")) {
+            if (!threadGetParameter1.isReceive1()) {
+                threadGetParameter1.setReceive1(true);
+                threadGetParameter1.stopReadD426();
+                threadGetParameter1.getValues()[7] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+                threadGetParameter1.getValues()[8] = String.valueOf(HexadecimalUtil.hex2dec(results.get(1)));
+                threadGetParameter1.getValues()[9] = String.valueOf(HexadecimalUtil.hex2dec(results.get(2)));
+                threadGetParameter1.getValues()[10] = String.valueOf(HexadecimalUtil.hex2dec(results.get(3)));
+                threadGetParameter1.getValues()[11] = String.valueOf(HexadecimalUtil.hex2dec(results.get(4)));
+                threadGetParameter1.getValues()[12] = String.valueOf(HexadecimalUtil.hex2dec(results.get(5)));
+                threadGetParameter1.getValues()[13] = String.valueOf(HexadecimalUtil.hex2dec(results.get(6)));
+                threadGetParameter1.getValues()[14] = String.valueOf(HexadecimalUtil.hex2dec(results.get(7)));
+                threadGetParameter1.getValues()[15] = String.valueOf(HexadecimalUtil.hex2dec(results.get(8)));
+                Log.d(TAG, "D426setAdvanced: "+results.size());
             }
         }
-        if (threadGetParameter1.isReceive1() && threadGetParameter1.isReceive2() && threadGetParameter1.isReceive3() && threadGetParameter1.isReceive4() && threadGetParameter1.isReceive5() && threadGetParameter1.isReceive6()) {
+        if (threadGetParameter1.isReceive1() &&
+                threadGetParameter1.isReceive2()) {
             mvpView.getDataSuccess();
             threadGetParameter1.setReceive1(false);
             threadGetParameter1.setReceive2(false);
-            threadGetParameter1.setReceive3(false);
-            threadGetParameter1.setReceive4(false);
-            threadGetParameter1.setReceive5(false);
-            threadGetParameter1.setReceive6(false);
         }
     }
 
+    private String get177Data(long l) {
+        return String.valueOf(Math.round((l/ Global.num)*10));
+    }
+
     public void updateAdvanced(ArrayList<ParameterBean> parameterBeans) {
 
         String url = "/api/app_equipment/index/updateParam/1/" + Heartbeat.deviceId + ".htm";

+ 2 - 0
app/src/main/java/com/sunzee/mvp/debug/DebugPresenter.java

@@ -11,6 +11,8 @@ import com.wuxiaolong.androidutils.library.LogUtil;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**

+ 5 - 0
app/src/main/java/com/sunzee/mvp/passwordreset/PasswordResetPresenter.java

@@ -71,6 +71,11 @@ public class PasswordResetPresenter extends BasePresenter<PasswordResetView> {
         addSubscription(apiStores.updatePaw(params), new ApiCallback<HttpResult<String>>() {
             @Override
             public void onSuccess(HttpResult<String> model) {
+                if (model.getData() == null) {
+
+                    ToastUtil.showToast("更新密码失败,请先连接服务器");
+                    return;
+                }
                 Log.d(TAG, "onSuccess: " + model);
                 if (model.getData().equals("更新密码成功")) {
                     mvpView.showResult(true);

+ 260 - 111
app/src/main/java/com/sunzee/service/MyService.java

@@ -1,6 +1,5 @@
 package com.sunzee.service;
 
-import android.annotation.SuppressLint;
 import android.app.AlarmManager;
 import android.app.Notification;
 import android.app.NotificationManager;
@@ -16,8 +15,6 @@ import android.os.IBinder;
 import android.os.SystemClock;
 import android.support.annotation.Nullable;
 import android.support.annotation.RequiresApi;
-import android.telephony.TelephonyManager;
-import android.telephony.gsm.GsmCellLocation;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.WindowManager;
@@ -33,11 +30,10 @@ import com.orhanobut.hawk.Hawk;
 import com.sunzee.R;
 import com.sunzee.base.BaseApplication;
 import com.sunzee.db.WarringBeanDao;
+import com.sunzee.model.Global;
 import com.sunzee.model.Heartbeat;
 import com.sunzee.model.HoleInformation;
 import com.sunzee.model.HttpResult;
-import com.sunzee.model.StateToilet;
-import com.sunzee.model.ToiletState;
 import com.sunzee.model.domain.AddAlarmRecordBean;
 import com.sunzee.model.domain.ErrorBean;
 import com.sunzee.model.domain.GetAdBean;
@@ -60,6 +56,7 @@ import com.sunzee.utils.HexadecimalUtil;
 import com.sunzee.utils.PreventSpeedClickUtil;
 import com.sunzee.utils.SharedPreferencesUtils;
 import com.sunzee.utils.TimeUtil;
+import com.sunzee.utils.TimerUtil;
 import com.sunzee.utils.ToastUtil;
 import com.sunzee.utils.UiUtil;
 import com.wuxiaolong.androidutils.library.LogUtil;
@@ -75,7 +72,6 @@ import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -96,15 +92,14 @@ public class MyService extends Service {
     private boolean isRead = true;
     private boolean isRegularCleaning = false;
     private ThreadPoolAdvanceParameter mPoolAdvanceParameter = new ThreadPoolAdvanceParameter();
-    private final static int TOTAL_SUM = 6;
+    public final static int TOTAL_SUM = 6;
 
     //存储两个数据:是否上过厕所,一开始上厕所的时间是什么时候
     //CopyOnWriteArrayList并不是完全意义上的线程安全,如果涉及到remove操作,一定要谨慎处理。
     //写操作是加锁,读操作是不加锁的。多读少写时使用
-    private static List<HoleInformation> sHoleInformationList = new LinkedList<>();
-    private static LinkedList<Integer> sCleaningLocationList = new LinkedList<>();//存储要清洗的位置。
+    public static final List<HoleInformation> sHoleInformationList = new LinkedList<>();
+    public static final LinkedList<Integer> sCleaningLocationList = new LinkedList<>();//存储要清洗的位置。
 
-    private static List<Integer> sToiletList = new CopyOnWriteArrayList<>();//存储是否上过厕所 0表示上过,1表示没有。2表示没有状态。
     private static volatile boolean isCleanOK = false;
 
     @Nullable
@@ -119,9 +114,12 @@ public class MyService extends Service {
         Log.d(TAG, "MyServiceonCreate: ");
         EventBus.getDefault().register(this);
         for (int i = 0; i < TOTAL_SUM; i++) {
-            sHoleInformationList.add(i, new HoleInformation(2, 0));//初始化
+            sHoleInformationList.add(new HoleInformation(2, 0));//初始化
+
+
             // sToiletList.add(i, 1);//初始化,一开始都是没上过厕所的。
         }
+        startRefreshime();
     }
 
     @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@@ -916,7 +914,9 @@ public class MyService extends Service {
         getApplicationContext().startService(downloadApkIntent);
 
     }
+
     //------------------------------------------------------------------------广告 end---------------------------------
+    private boolean isAwait = true;
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void event(Message messageEvent) {
@@ -934,11 +934,13 @@ public class MyService extends Service {
                     mThreadPoolMyservice.stopWriteD120();
                     mThreadPoolMyservice.stopSetM8();
                     mThreadPoolMyservice.startSetM8();
+
                 } else if (messageEvent.getName().equals("DD120")) {
                     mThreadPoolMyservice.stopWriteDD120();
                     Log.d(TAG, "addCleanTime120event: 廁所位置寫入成功");
                     mThreadPoolMyservice.stopSetM8();
                     mThreadPoolMyservice.startSetM8();
+                    Log.d(TAG, "cleanPositionNumX20: "+"D120执行了。");
                 } else if (messageEvent.getName().equals("M17")) {
                     mThreadPoolMyservice.stopSetM17();
                     if (isRegularCleaning) {
@@ -950,7 +952,13 @@ public class MyService extends Service {
                     isCleanOK = true;
                     mThreadPoolMyservice.stopSetM8();
                     Log.d(TAG, "addCleanTime120event: 開始清洗");
+                } else if (messageEvent.getName().equals("MM3")) {
+                    mThreadPoolMyservice.stopWriteMM3();
+                    cleanCount = 0;
+                    Log.d(TAG, "addCleanTime120event: 開始复位");
+
                 }
+
                 mPoolAdvanceParameter.stopAll();
                 mPoolAdvanceParameter.startALLRead();
                 break;
@@ -996,31 +1004,95 @@ public class MyService extends Service {
                         List<String> lis = Arrays.asList(s1.split(""));//第0位会是空字符串
                         ArrayList<String> result = new ArrayList(lis);//
                         result.remove(0);
-                        if ("0".equals(result.get(0))) {
-                            //是否加入清洗
-                            synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
-                                isClean(0);
-                            }
-                        } else if ("1".equals(result.get(0))) {
-                            //记录
-                            synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
-                                addCleanTime(0);
-                            }
-                        }
+                        Log.d(TAG, "result event: " + result.get(0) + result.get(1));
+
+                        //todo 是否监听
+                        //监控1号厕所
+                     /*   monitoring(result.get(0), 1);
+                        //监控2号厕所
+                        monitoring(result.get(1), 2);
+                        //监控3号厕所
+                        monitoring(result.get(2), 3);
+                        //监控4号厕所
+                        monitoring(result.get(3), 4);
+                        //监控5号厕所
+                        monitoring(result.get(4), 5);
+                        //监控6号厕所
+                        monitoring(result.get(5), 6);*/
                     } else if (name.equals("D2")) {
                         String data = String.valueOf(HexadecimalUtil.hex2dec(HexadecimalUtil.flipString(AsciiUtils.asciiByteArray2HexStr(responseFrame.getData())).get(0)));
-                        Log.d(TAG, "addCleanTimeD2event: "+data);
+                        Log.d(TAG, "addCleanTimeD2event: " + data);
                         switch (data) {
-                            case "1": //清洗完毕----清洗過程中還是清洗完畢
-                                /*if (isCleanOK) {
-                                    synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
+                            case "0"://复位中
+                                if (!isAwait) {
+                                    isAwait = true;
+                                }
+                                break;
+                            case "1": //第一次待机中
+                                //复位了,那么就需要判断是否还需要清洗
+                                //todo 这里的代码会一直执行,如果不等于0,那么这里会一直执行。
+                                synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
+                                    if (isAwait) {
+                                        isAwait = false;
+                                        if (sCleaningLocationList.size() != 0) {
+                                            while (sCleaningLocationList.size() > 0) {
+                                                Integer first = sCleaningLocationList.getFirst();
+                                                Log.d(TAG, "first: "+first+",state:"+sHoleInformationList.get(first - 1).getState());
+                                                Log.d(TAG, "event: first"+(sHoleInformationList.get(first - 1).getState() != 0 && sHoleInformationList.get(first - 1).getState() != 2));
+
+                                                if (sHoleInformationList.get(first - 1).getState() != 0 && sHoleInformationList.get(first - 1).getState() != 2) {
+                                                    sCleaningLocationList.removeFirst();
+                                                }else{
+                                                    cleanPositionNumX20(first);
+                                                    cleanCount++;
+                                                    return;
+                                                }
+
+                                            }
+                                        }
+                                    }
+
+                                }
+                                break;
+                            case "3"://清洗完毕----清洗過程中還是清洗完畢
+                                synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
+                                    Log.d(TAG, "为零event: " + isCleanOK);
+                                    if (isCleanOK) {
                                         isCleanOK = false;
-                                        sCleaningLocationList.removeFirst();
+                                        Log.d(TAG, "为零sCleaningLocationListevent: " + sCleaningLocationList.size());
                                         if (sCleaningLocationList.size() != 0) {
-                                            cleanPositionNumX20(sCleaningLocationList.getFirst());
+                                            Integer first = null;
+                                            Integer integer = sCleaningLocationList.removeFirst();
+                                            //如果集合大于0,那么我就取出第一个位置,进行判断是否正在上厕所,如果是,那么就需要移除,继续下一个,
+                                            while (sCleaningLocationList.size() > 0) {
+                                                first = sCleaningLocationList.getFirst();
+//                                                if (sHoleInformationList.get(first-1).getState()==3) {
+                                               StringBuilder  sb = new StringBuilder();
+                                                for (Integer integer1 : sCleaningLocationList) {
+                                                    sb.append(integer1);
+                                                }
+                                                Log.d(TAG, "first: "+first+",state:"+sHoleInformationList.get(first - 1).getState()+",sb:"+sb);
+                                                Log.d(TAG, "event: first"+(sHoleInformationList.get(first - 1).getState() != 0 && sHoleInformationList.get(first - 1).getState() != 2));
+
+                                                if (sHoleInformationList.get(first - 1).getState() != 0 && sHoleInformationList.get(first - 1).getState() != 2) {
+                                                    sCleaningLocationList.removeFirst();
+                                                } else {
+                                                    Log.d(TAG, "integer: "+integer+",first: "+first+",sb:"+sb);
+                                                    if ((integer == 1 || integer == 2 || integer == 3) && (first == 4 || first == 5 || first == 6)) {
+                                                        mThreadPoolMyservice.stopWriteMM3();
+                                                        mThreadPoolMyservice.startWriteMM3("M3");
+                                                        return;
+                                                    }
+                                                    cleanPositionNumX20(first);
+                                                    cleanCount++;
+                                                    return;
+                                                }
+                                            }
+
                                         }
+
                                     }
-                                }*/
+                                }
                                 break;
                         }
 
@@ -1037,6 +1109,21 @@ public class MyService extends Service {
         }
     }
 
+
+    private void monitoring(String number, int position) {
+        Log.d(TAG, "monitoring: " + number + position);
+        synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
+            if ("0".equals(number)) {//
+                //是否加入清洗
+                isClean(position);
+            } else if ("1".equals(number)) {
+                //记录
+                addCleanTime(position);
+            }
+        }
+//        }
+    }
+
     private void addCleanTime(int number) {
         Log.d(TAG, "厕所有人开始上厕所了。 ");
         /**
@@ -1044,21 +1131,27 @@ public class MyService extends Service {
          *     将标志位变为0.,如果我为0 就不执行了。避免时间一直更新。
          *     存储当前的时间,到指定的集合中【标志位,0time】
          */
-        HoleInformation holeInformation = sHoleInformationList.get(number);
-        if (holeInformation.getState() != 1&&holeInformation.getState() != 3) {
+        Log.d(TAG, "addCleanTime: 为零isCleanaddCleanTime1");
+        HoleInformation holeInformation = sHoleInformationList.get(number - 1);
+        Log.d(TAG, "为零isCleanaddCleanTime11: " + sHoleInformationList.size() + holeInformation.getState());
+        Log.d(TAG, "为零isCleanaddCleanTime12: " + (number - 1));
+        if (holeInformation.getState() != 1 && holeInformation.getState() != 3) {
             holeInformation.setState(1);//上厕所
             holeInformation.setTimeDuration(System.currentTimeMillis());//存储他上厕所的时间
-        }else if(holeInformation.getState() == 1){
-            if (System.currentTimeMillis() - holeInformation.getTimeDuration() > 20000) {
+        } else if (holeInformation.getState() == 1) {
+            if (System.currentTimeMillis() - holeInformation.getTimeDuration() > 10000) {
                 //將其標誌位上過廁所。
                 holeInformation.setState(3);
                 Log.d(TAG, "addCleanTime: 上厕所超过20秒");
-            }else{
+            } else {
                 Log.d(TAG, "addCleanTime: 上厕所没超过20秒");
             }
         }
     }
 
+    //记录清洗次数
+    private int cleanCount = 0;
+
     private void isClean(int number) {
         /**
          * 0:
@@ -1072,51 +1165,74 @@ public class MyService extends Service {
          *     如果标志位为1,表示一直没上厕所
          *         什么都不做。
          */
-        HoleInformation holeInformation = sHoleInformationList.get(number);
-        Log.d(TAG, "x20event: " + holeInformation.toString());
+        HoleInformation holeInformation = sHoleInformationList.get(number - 1);
+        Log.d(TAG, "为零isCleanaddCleanTime23: " + sHoleInformationList.size() + holeInformation.getState());
+        Log.d(TAG, "为零isCleanaddCleanTime24: " + (number - 1));
         int state = holeInformation.getState();
-    //    if (state != 0) {
-            if (state == 3) {
-                holeInformation.setState(4);
-                holeInformation.setOutTimeDuration(System.currentTimeMillis());//存储他上厕所的时间
-            }else if(holeInformation.getState()==4){
-                Log.d(TAG, "厕所event: " + holeInformation.getTimeDuration());
-                Log.d(TAG, "厕所event: " + System.currentTimeMillis());
-                if (System.currentTimeMillis() - holeInformation.getTimeDuration() > 20000) {
-                    //上廁所超過20秒,那麼將狀態改為上廁所狀態。
-                    if (sCleaningLocationList.size() == 0) {
-                        //开始清洗厕所。[往尾部添加]
-                        if (!sCleaningLocationList.contains(number)) {
-                            sCleaningLocationList.addLast(number);//如果里面已经有了,那么就需要在加入,并且添加
-                            cleanPositionNumX20(number);
-                            Log.d(TAG, "addCleanTimeisClean: "+"開始清洗");
+        if (state == 3) {
+            holeInformation.setState(4);
+            holeInformation.setOutTimeDuration(System.currentTimeMillis());//存储他上厕所的时间
+        } else if (holeInformation.getState() == 4) {
+            if (System.currentTimeMillis() - holeInformation.getOutTimeDuration() > 5000) {
+                //上廁所超過20秒,那麼將狀態改為上廁所狀態。
+                Log.d(TAG, "为零isClean: " + sCleaningLocationList.size());
+                if (sCleaningLocationList.size() == 0) {
+                    //如果不包含,那么就走这里
+                    sCleaningLocationList.addLast(number);
+                    Log.d(TAG, "为零isCleannumber4: " + number);
+                    isCleanOK = true;
+                    if (cleanCount >= 10) {
+                        //如果为10,那么就需要复位,并且清零了。
+                        mThreadPoolMyservice.stopWriteMM3();
+                        mThreadPoolMyservice.startWriteMM3("M3");
+                        cleanCount = 0;
+                        Log.d(TAG, "厕所event复位1: " + cleanCount);
+                    } else {
+                        cleanCount++;//
+                        cleanPositionNumX20(number);
+                        Log.d(TAG, "isClean: " + number);
+                        Log.d(TAG, "addCleanTimeisClean: " + "開始清洗");
+                    }
+
+                } else {
+                    //todo 这里存在一个问题,就是如果刚好,没有清洗,并且长度大于0呢?存在多线程安全问题
+                    //那么我们就需要判断是否在清洗,通过一个标志位。清洗中,清洗完毕
+                    int index = 100;
+                    for (int i = 0; i < sCleaningLocationList.size(); i++) {
+                        Log.d(TAG, "isClean111: " + (sCleaningLocationList.get(i) == (number)) + "" + sCleaningLocationList.get(i) + (number));
+                        if (sCleaningLocationList.get(i) == (number)) {
+                            index = i;
+                            Log.d(TAG, "为零isCleannumber2: " + index);
+                            break;
                         }
+                    }
+                    if (index != 100) {
+                        sCleaningLocationList.remove(index);//如果移除后等于0,集合大小等于0,那么开始清洗。
+                        sCleaningLocationList.addLast(number);
+                        isCleanOK = true;
                     } else {
-                        //todo 这里存在一个问题,就是如果刚好,没有清洗,并且长度大于0呢?存在多线程安全问题
-                        //那么我们就需要判断是否在清洗,通过一个标志位。清洗中,清洗完毕
                         sCleaningLocationList.addLast(number);
-                        Log.d(TAG, "addCleanTime: 清洗集合個數大於0:");
+                        isCleanOK = true;
                     }
-                    holeInformation.setState(0);//改为2或者0都可以。
-                    Log.d(TAG, "addCleanTime: 出廁所使用超過5秒");
-                } else {
-                    Log.d(TAG, "addCleanTime出厕所没有超过5秒: ");
-                    //   holeInformation.setState(2);//为什么不是1,如果是1,那么
-                }
-            }else if (holeInformation.getState()==1){
-                if (holeInformation.getState()!=2) {
-                    holeInformation.setState(2);
-                    Log.d(TAG, "addCleanTime重置狀態");
+                    Log.d(TAG, "addCleanTime: 清洗集合個數大於0:");
                 }
+                holeInformation.setState(0);//改为2或者0都可以。
+            } else {
+                Log.d(TAG, "addCleanTime进厕所没超过20秒 ");
+                //   holeInformation.setState(2);//为什么不是1,如果是1,那么
             }
-      /*  }else{
-            Log.d(TAG, "isClean: 不清洗廁所!");
-        }*/
+        } else if (holeInformation.getState() == 1) {
+            if (holeInformation.getState() != 2) {
+                holeInformation.setState(2);
+                Log.d(TAG, "为零isCleanaddCleanTime1 addCleanTime重置狀態");
+            }
+        }
     }
 
     private void cleanPositionNumX20(int data) {
         mThreadPoolMyservice.stopWriteDD120();
         mThreadPoolMyservice.startWriteDD120("D120", "000" + data);
+        Log.d(TAG, "cleanPositionNumX20: "+"000" + data);
     }
 
     private boolean isOpenReadWarring = true;
@@ -1310,55 +1426,41 @@ public class MyService extends Service {
 
     //-----------------------------------------------------------------------报警 end---------------------------------
     public void setAdvanced(String name, ArrayList<String> results, ThreadPoolAdvanceParameter threadGetParameter1) {
-        if (name.equals("D426")) {
-            if (!threadGetParameter1.isReceive1()) {
-                threadGetParameter1.setReceive1(true);
-                threadGetParameter1.stopReadD426();
-                threadGetParameter1.getValues()[0] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D427")) {
+        if (name.equals("D418")) {
             if (!threadGetParameter1.isReceive2()) {
                 threadGetParameter1.setReceive2(true);
-                threadGetParameter1.stopReadD427();
-                threadGetParameter1.getValues()[1] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-
-        } else if (name.equals("D428")) {
-            if (!threadGetParameter1.isReceive3()) {
-                threadGetParameter1.setReceive3(true);
-                threadGetParameter1.stopReadD428();
-                threadGetParameter1.getValues()[2] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+                threadGetParameter1.stopReadD418();
+                threadGetParameter1.getValues()[6] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(0))));
+                threadGetParameter1.getValues()[7] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(1))));
+                threadGetParameter1.getValues()[0] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(2))));
+                threadGetParameter1.getValues()[1] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(3))));
+                threadGetParameter1.getValues()[2] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(4))));
+                threadGetParameter1.getValues()[3] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(5))));
+                threadGetParameter1.getValues()[4] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(6))));
+                threadGetParameter1.getValues()[5] = String.valueOf(get177Data(HexadecimalUtil.hex2dec(results.get(7))));
+
+                Log.d(TAG, "D418setAdvanced: "+results.size());
             }
-
-        } else if (name.equals("D429")) {
-            if (!threadGetParameter1.isReceive4()) {
-                threadGetParameter1.setReceive4(true);
-                //参数23 D278
-                threadGetParameter1.stopReadD429();
-                threadGetParameter1.getValues()[3] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D430")) {
-            if (!threadGetParameter1.isReceive5()) {
-                threadGetParameter1.setReceive5(true);
-                threadGetParameter1.stopReadD430();
-                threadGetParameter1.getValues()[4] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
-            }
-        } else if (name.equals("D431")) {
-            if (!threadGetParameter1.isReceive6()) {
-                threadGetParameter1.setReceive6(true);
-                threadGetParameter1.stopReadD431();
-                threadGetParameter1.getValues()[5] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+        } else if (name.equals("D426")) {
+            if (!threadGetParameter1.isReceive1()) {
+                threadGetParameter1.setReceive1(true);
+                threadGetParameter1.stopReadD426();
+                threadGetParameter1.getValues()[7] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
+                threadGetParameter1.getValues()[8] = String.valueOf(HexadecimalUtil.hex2dec(results.get(1)));
+                threadGetParameter1.getValues()[9] = String.valueOf(HexadecimalUtil.hex2dec(results.get(2)));
+                threadGetParameter1.getValues()[10] = String.valueOf(HexadecimalUtil.hex2dec(results.get(3)));
+                threadGetParameter1.getValues()[11] = String.valueOf(HexadecimalUtil.hex2dec(results.get(4)));
+                threadGetParameter1.getValues()[12] = String.valueOf(HexadecimalUtil.hex2dec(results.get(5)));
+                threadGetParameter1.getValues()[13] = String.valueOf(HexadecimalUtil.hex2dec(results.get(6)));
+                threadGetParameter1.getValues()[14] = String.valueOf(HexadecimalUtil.hex2dec(results.get(7)));
+                threadGetParameter1.getValues()[15] = String.valueOf(HexadecimalUtil.hex2dec(results.get(8)));
+                Log.d(TAG, "D426setAdvanced: "+results.size());
             }
         }
-        if (threadGetParameter1.isReceive1() && threadGetParameter1.isReceive2() && threadGetParameter1.isReceive3() && threadGetParameter1.isReceive4() && threadGetParameter1.isReceive5() && threadGetParameter1.isReceive6()) {
-            getDataSuccess();
-            threadGetParameter1.setReceive1(false);
-            threadGetParameter1.setReceive2(false);
-            threadGetParameter1.setReceive3(false);
-            threadGetParameter1.setReceive4(false);
-            threadGetParameter1.setReceive5(false);
-            threadGetParameter1.setReceive6(false);
-        }
+    }
+
+    private String get177Data(long l) {
+        return String.valueOf(Math.round((l/ Global.num)*10));
     }
 
     public void getDataSuccess() {
@@ -1393,4 +1495,51 @@ public class MyService extends Service {
             }
         });
     }
+
+    private Timer timerGetTime;
+    private TimerTask timerTaskGetTime;
+    private int resetTime = 60;
+    private boolean isReset = false;
+
+    private void startRefreshime() {
+        timerGetTime = new Timer();
+        timerTaskGetTime = new TimerTask() {
+            @Override
+            public void run() {
+                synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
+                    if (sCleaningLocationList.size() <= 0) {
+                        //如果复位了,清洗一个后,移除了。那么就为小于等于0,那么就会有一个没有复位。
+                        if (isReset) {//会导致不复位。
+                            if (resetTime <= 0) {
+                                //不能一直复位,因为如果一直厕所呢?所以我们复位后就需要停止继续执行这里面的内容,等到大于0的时候再进行里面的内容
+                                //在集合移除最后一个的时候我们来一个标志位来解决这个问题。
+                                isReset = false;
+                                //等于0 的时候我们就需要进行复位  todo 复位
+                                mThreadPoolMyservice.stopWriteMM3();
+                                mThreadPoolMyservice.startWriteMM3("M3");
+                                Log.d(TAG, "厕所event复位2: " + cleanCount);
+                                return;
+                            }
+                            resetTime--;
+                        }
+                    } else {
+                        //有清洗的时候就要走这里面。
+                        resetTime = 60;
+                        isReset = true;
+                    }
+                }
+            }
+        };
+        timerGetTime.schedule(timerTaskGetTime, 0, 1000);
+    }
+
+    private void stopRefreshTime() {
+        TimerUtil.stopTimerAndTimerTask(timerGetTime, timerTaskGetTime);
+    }
 }
+
+//todo 重启触摸屏后回出现问题:有的已经在清洗了,但是安卓屏幕不认。所以就会开始清洗。
+/**
+ * 如何优化呢?
+ * 1.就需要
+ */

+ 10 - 47
app/src/main/java/com/sunzee/thread/advanceparameter/AdvanceParameterTask.java

@@ -77,28 +77,22 @@ public class AdvanceParameterTask implements Runnable {
             case AdvanceParameterThreadType.runD426:
                 runReadD426();
                 break;
-            case AdvanceParameterThreadType.runD427:
-                runReadD427();
-                break;
-            case AdvanceParameterThreadType.runD428:
-                runReadD428();
-                break;
-            case AdvanceParameterThreadType.runD429:
-                runReadD429();
-                break;
-            case AdvanceParameterThreadType.runD430:
-                runReadD430();
-                break;
-            case AdvanceParameterThreadType.runD431:
-                runReadD431();
-                break;
             case AdvanceParameterThreadType.runWrite:
                 runWrite();
                 break;
             case AdvanceParameterThreadType.runD403:
                 runReadD403();
                 break;
+            case AdvanceParameterThreadType.runD418:
+                runReadD418();
+                break;
+
+        }
+    }
 
+    private void runReadD418() {
+        if (getIsRun()) {
+            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D418", 16), 18, "D418");
         }
     }
 
@@ -119,41 +113,10 @@ public class AdvanceParameterTask implements Runnable {
 
     private void runReadD426() {
         if (getIsRun()) {
-            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D426", 2), 17, "D426");
-        }
-    }
-
-    private void runReadD427() {
-        if (getIsRun()) {
-            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D427", 2), 17, "D427");
+            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D426", 18), 17, "D426");
         }
     }
 
-    private void runReadD428() {
-        if (getIsRun()) {
-            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D428", 2), 17, "D428");
-        }
-    }
-
-    private void runReadD429() {
-        if (getIsRun()) {
-            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D429", 2), 17, "D429");
-        }
-    }
-
-    private void runReadD430() {
-        if (getIsRun()) {
-            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D430", 2), 17, "D430");
-        }
-    }
-
-    private void runReadD431() {
-        if (getIsRun()) {
-            SerialPortSendQueue.sendCommand(new ReadCommandFrame("D431", 2), 17, "D431");
-        }
-    }
-
-
     public void setAddress(String address) {
         this.address = address;
     }

+ 1 - 0
app/src/main/java/com/sunzee/thread/advanceparameter/AdvanceParameterThreadType.java

@@ -10,4 +10,5 @@ public interface AdvanceParameterThreadType {
 
     int runWrite = 2;
     int runD403 = 403;
+    int runD418 = 418;
 }

+ 16 - 84
app/src/main/java/com/sunzee/thread/advanceparameter/ThreadPoolAdvanceParameter.java

@@ -1,5 +1,7 @@
 package com.sunzee.thread.advanceparameter;
 
+import com.sunzee.adapter.AdvanceParameterAdapter;
+
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -15,16 +17,13 @@ public class ThreadPoolAdvanceParameter {
         return values;
     }
 
-    private String[] values = new String[6];
+    private String[] values = new String[AdvanceParameterAdapter.paraName.length];
 
     private ScheduledFuture<?>
-            mScheduledFutureD426, mScheduledFutureD427, mScheduledFutureD428,
-            mScheduledFutureD429, mScheduledFutureD430, mScheduledFutureD431,
-            mScheduledFutureWrite, mScheduledFutureD403;
+            mScheduledFutureD426, mScheduledFutureWrite, mScheduledFutureD403, mScheduledFutureD418;
 
     private AdvanceParameterTask
-            mTaskRunD426, mTaskRunD427, mTaskRunD428, mTaskRunD429,
-            mTaskRunD430, mTaskRunD431, mTaskRunWrite, mTaskRunD403;
+            mTaskRunD426, mTaskRunWrite, mTaskRunD403, mTaskRunD418;
 
     public ThreadPoolAdvanceParameter() {
         scheduled = new ScheduledThreadPoolExecutor(6);
@@ -48,67 +47,17 @@ public class ThreadPoolAdvanceParameter {
         isReceive2 = receive2;
     }
 
-    public boolean isReceive3() {
-        return isReceive3;
-    }
-
-    public void setReceive3(boolean receive3) {
-        isReceive3 = receive3;
-    }
-
-    public boolean isReceive4() {
-        return isReceive4;
-    }
-
-    public void setReceive4(boolean receive4) {
-        isReceive4 = receive4;
-    }
-
-    public boolean isReceive5() {
-        return isReceive5;
-    }
-
-    public void setReceive5(boolean receive5) {
-        isReceive5 = receive5;
-    }
-
-    public boolean isReceive6() {
-        return isReceive6;
-    }
-
-    public void setReceive6(boolean receive6) {
-        isReceive6 = receive6;
-    }
-
     private boolean isReceive1 = false;
     private boolean isReceive2 = false;
-    private boolean isReceive3 = false;
-    private boolean isReceive4 = false;
-    private boolean isReceive5 = false;
-    private boolean isReceive6 = false;
 
     public void startALLRead() {
 
+        mTaskRunD418 = new AdvanceParameterTask(AdvanceParameterThreadType.runD418);
+        mScheduledFutureD418 = scheduled.scheduleAtFixedRate(mTaskRunD418, 10, 1000, TimeUnit.MILLISECONDS);
+
         mTaskRunD426 = new AdvanceParameterTask(AdvanceParameterThreadType.runD426);
         mScheduledFutureD426 = scheduled.scheduleAtFixedRate(mTaskRunD426, 10, 1000, TimeUnit.MILLISECONDS);
 
-        mTaskRunD427 = new AdvanceParameterTask(AdvanceParameterThreadType.runD427);
-        mScheduledFutureD427 = scheduled.scheduleAtFixedRate(mTaskRunD427, 10, 1000, TimeUnit.MILLISECONDS);
-
-        mTaskRunD428 = new AdvanceParameterTask(AdvanceParameterThreadType.runD428);
-        mScheduledFutureD428 = scheduled.scheduleAtFixedRate(mTaskRunD428, 10, 1000, TimeUnit.MILLISECONDS);
-
-        mTaskRunD429 = new AdvanceParameterTask(AdvanceParameterThreadType.runD429);
-        mScheduledFutureD429 = scheduled.scheduleAtFixedRate(mTaskRunD429, 10, 1000, TimeUnit.MILLISECONDS);
-
-        mTaskRunD430 = new AdvanceParameterTask(AdvanceParameterThreadType.runD430);
-        mScheduledFutureD430 = scheduled.scheduleAtFixedRate(mTaskRunD430, 10, 1000, TimeUnit.MILLISECONDS);
-
-        mTaskRunD431 = new AdvanceParameterTask(AdvanceParameterThreadType.runD431);
-        mScheduledFutureD431 = scheduled.scheduleAtFixedRate(mTaskRunD431, 10, 1000, TimeUnit.MILLISECONDS);
-
-
-
     }
 
     public void startReadD403(){
@@ -118,37 +67,17 @@ public class ThreadPoolAdvanceParameter {
 
     public void stopAll() {
         stopReadD426();
-        stopReadD427();
-        stopReadD428();
-        stopReadD429();
-        stopReadD430();
-        stopReadD431();
         stopWrite();
         stopReadD403();
+        stopReadD418();
     }
 
-    public void stopReadD426() {
-        stopRead(mTaskRunD426, mScheduledFutureD426);
-    }
-
-    public void stopReadD427() {
-        stopRead(mTaskRunD427, mScheduledFutureD427);
-    }
-
-    public void stopReadD428() {
-        stopRead(mTaskRunD428, mScheduledFutureD428);
-    }
-
-    public void stopReadD429() {
-        stopRead(mTaskRunD429, mScheduledFutureD429);
-    }
-
-    public void stopReadD430() {
-        stopRead(mTaskRunD430, mScheduledFutureD430);
+    public void stopReadD418() {
+        stopRead(mTaskRunD418, mScheduledFutureD418);
     }
 
-    public void stopReadD431() {
-        stopRead(mTaskRunD431, mScheduledFutureD431);
+    public void stopReadD426() {
+        stopRead(mTaskRunD426, mScheduledFutureD426);
     }
 
     public void stopReadD403() {
@@ -172,4 +101,7 @@ public class ThreadPoolAdvanceParameter {
     public void stopWrite() {
         stopRead(mTaskRunWrite, mScheduledFutureWrite);
     }
+
+
+
 }

+ 0 - 1
app/src/main/java/com/sunzee/thread/debugparameter/DebugParameterTask.java

@@ -98,7 +98,6 @@ public class DebugParameterTask implements Runnable {
             case runM320:
                 runReadM320();
                 break;
-
         }
     }
 

+ 2 - 1
app/src/main/java/com/sunzee/thread/debugparameter/DebugParameterThreadType.java

@@ -10,5 +10,6 @@ public interface DebugParameterThreadType {
     int runSet = 1;
     int runX = 2;
     int runY = 3;
-    
+
+    int runM10 = 10;
 }

+ 28 - 7
app/src/main/java/com/sunzee/thread/debugparameter/ThreadPoolDebugParameter.java

@@ -15,10 +15,10 @@ public class ThreadPoolDebugParameter {
 
     private ScheduledFuture<?>
             mScheduledFutureM1411, mScheduledFutureM311, mScheduledFutureRst, mScheduledFutureSet,
-            mScheduledFutureX, mScheduledFutureY;
+            mScheduledFutureX, mScheduledFutureY,mScheduledFutureM10;
     private DebugParameterTask
             mTaskRunM1411, mTaskRunM311, mTaskRunMRst, mTaskRunMSet,
-            mTaskRunX, mTaskRunY;
+            mTaskRunX, mTaskRunY,mTaskRunM10;
     private DebugParameterTask mTaskRunM320;
     private ScheduledFuture<?> mScheduledFutureM320;
 
@@ -28,7 +28,9 @@ public class ThreadPoolDebugParameter {
 
     private ArrayList<String> values = new ArrayList<>(Arrays.asList(
             "0", "0", "0", "0", "0", "0", "0",
-            "0", "0", "0", "0", "0", "0"));
+            "0", "0", "0", "0", "0", "0", "0",
+            "0", "0", "0", "0", "0", "0", "0",
+            "0", "0", "0", "0", "0", "0", "0"));
 
     public ThreadPoolDebugParameter() {
         scheduled = new ScheduledThreadPoolExecutor(7);
@@ -62,6 +64,9 @@ public class ThreadPoolDebugParameter {
         mScheduledFutureM320 = scheduled.scheduleAtFixedRate(mTaskRunM320, 50, 1000, TimeUnit.MILLISECONDS);
 
 
+        //读取喷水泵启动、气泵启动、清洁消毒喷水泵、清洗洁厕灵+水、消毒消毒液+水
+        mTaskRunM10 = new DebugParameterTask(DebugParameterThreadType.runM10);
+        mScheduledFutureM10 = scheduled.scheduleAtFixedRate(mTaskRunM10, 60, 1000, TimeUnit.MILLISECONDS);
     }
 
     public void stopAll() {
@@ -72,15 +77,16 @@ public class ThreadPoolDebugParameter {
         stopSet();
         stopReadX();
         stopReadY();
+        stopReadM10();
     }
 
 
-    public void setReceive1(boolean receive1) {
-        isReceive1 = receive1;
-    }
 
     private boolean isReceive1 = false;
     private boolean isReceive2 = false;
+    private boolean isReceive3 = false;
+
+
 
     public boolean isReceive2() {
         return isReceive2;
@@ -94,7 +100,18 @@ public class ThreadPoolDebugParameter {
         return isReceive1;
     }
 
-    //-------------------------------------------stop read-----------------------------------------------------
+    public void setReceive1(boolean receive1) {
+        isReceive1 = receive1;
+    }
+
+    public boolean isReceive3() {
+        return isReceive3;
+    }
+
+    public void setReceive3(boolean receive3) {
+        isReceive3 = receive3;
+    }
+
     public void stopReadM320() {
         stopRead(mTaskRunM320, mScheduledFutureM320);
     }
@@ -103,6 +120,10 @@ public class ThreadPoolDebugParameter {
         stopRead(mTaskRunM311, mScheduledFutureM311);
     }
 
+    public void stopReadM10() {
+        stopRead(mTaskRunM10, mScheduledFutureM10);
+    }
+
     public void stopReadM1411() {
         stopRead(mTaskRunM1411, mScheduledFutureM1411);
     }

+ 9 - 0
app/src/main/java/com/sunzee/thread/myservice/MyserviceTask.java

@@ -111,11 +111,20 @@ public class MyserviceTask implements Runnable {
             case MyserviceThreadType.runD2:
                 runD2();
                 break;
+            case MyserviceThreadType.runnMM3:
+                runnMM3();
+                break;
 
 
         }
     }
 
+    private void runnMM3() {
+        if (getIsRun()) {
+            SerialPortSendQueue.sendCommand(new SetCommandFrame(address), 33, "M"+address);
+        }
+    }
+
     private void runD2() {
         if (getIsRun()) {
             SerialPortSendQueue.sendCommand(new ReadCommandFrame("D2", 2), 1002, "D2");

+ 1 - 0
app/src/main/java/com/sunzee/thread/myservice/MyserviceThreadType.java

@@ -13,4 +13,5 @@ public interface MyserviceThreadType {
     int runDD120 = 121;
 
     int runD2= 22;
+    int runnMM3 = 33;
 }

+ 12 - 2
app/src/main/java/com/sunzee/thread/myservice/ThreadPoolMyservice.java

@@ -15,12 +15,12 @@ public class ThreadPoolMyservice {
             mScheduledFutureM600, mScheduledFutureM8, mScheduledFutureM17,
             mScheduledFutureSet, mScheduledFutureRst, mScheduledFutureWrite,
             mScheduledFutureD120, mScheduledFutureX12,mScheduledFutureDD120,
-            mScheduledFutureD2;
+            mScheduledFutureD2,mScheduledFutureM3;
     private MyserviceTask
             mTaskRunM600, MTaskRunM8, MTaskRunM17,
             mTaskRunMRst, mTaskRunMSet, mTaskRunWrite,
             mTaskRunD120, mTaskRunnX12,mTaskRunDD120,
-            mTaskRunD2;
+            mTaskRunD2,mTaskRunM3;
 
     public ThreadPoolMyservice() {
         scheduled = new ScheduledThreadPoolExecutor(6);
@@ -28,6 +28,16 @@ public class ThreadPoolMyservice {
         scheduled.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
     }
 
+    public void startWriteMM3(String address) {
+        mTaskRunM3 = new MyserviceTask(MyserviceThreadType.runnMM3, address);
+        mScheduledFutureM3 = scheduled.scheduleAtFixedRate(mTaskRunM3, 0, 1000, TimeUnit.MILLISECONDS);
+    }
+
+    public void stopWriteMM3() {
+        stopRead(mTaskRunM3, mScheduledFutureM3);
+    }
+
+
     public void startALLRead() {
         mTaskRunM600 = new MyserviceTask(MyserviceThreadType.runM600);
         mScheduledFutureM600 = scheduled.scheduleAtFixedRate(mTaskRunM600, 0, 1000, TimeUnit.MILLISECONDS);

+ 14 - 0
app/src/main/java/com/sunzee/ui/activity/HomeActivity.java

@@ -32,6 +32,7 @@ import com.sunzee.R;
 import com.sunzee.base.BaseFragment;
 import com.sunzee.base.MvpActivity;
 import com.sunzee.model.Heartbeat;
+import com.sunzee.model.HoleInformation;
 import com.sunzee.model.domain.ApkInfoBean;
 import com.sunzee.model.domain.Name;
 import com.sunzee.model.message.ApiMessageEvent;
@@ -40,6 +41,7 @@ import com.sunzee.mvp.home.HomePresenter;
 import com.sunzee.mvp.home.HomeView;
 import com.sunzee.service.DownPresenter;
 import com.sunzee.service.MyService;
+import com.sunzee.thread.myservice.MyserviceTask;
 import com.sunzee.ui.dialog.ManagementSystemDialog;
 import com.sunzee.ui.dialog.CheckUpdatesDialog;
 import com.sunzee.ui.dialog.ShutdownDialog;
@@ -433,6 +435,18 @@ public class HomeActivity extends MvpActivity<HomePresenter> implements HomeView
                         }
                         stopTimerSet();
                         startTimerSet("M3");
+                        //todo 清空数据
+                        synchronized (MyService.sCleaningLocationList) {//多线程操作需要加上同步锁
+                            MyService.sHoleInformationList.clear();
+                            MyService.sCleaningLocationList.clear();
+                            for (int i = 0; i < MyService.TOTAL_SUM; i++) {
+                                MyService.sHoleInformationList.add(new HoleInformation(2, 0));//初始化
+
+
+                                // sToiletList.add(i, 1);//初始化,一开始都是没上过厕所的。
+                            }
+                        }
+
                         break;
                 }
             }

+ 2 - 2
app/src/main/java/com/sunzee/ui/dialog/CheckUpdatesDialog.java

@@ -155,13 +155,13 @@ public class CheckUpdatesDialog extends Dialog implements View.OnClickListener {
     }
 
     public void setBtnEgState() {
-        int param = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, -1);
+     /*   int param = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, -1);
         if (param == 2) {
             btnCancel.setLines(1);
             TextViewCompat.setAutoSizeTextTypeWithDefaults(btnCancel, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
             btnConfirm.setLines(1);
             TextViewCompat.setAutoSizeTextTypeWithDefaults(btnConfirm, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
-        }
+        }*/
     }
 
     @Override

+ 2 - 2
app/src/main/java/com/sunzee/ui/dialog/ShutdownDialog.java

@@ -50,10 +50,10 @@ public class ShutdownDialog extends Dialog implements View.OnClickListener {
         IvQrCode = findViewById(R.id.iv_qr_code);
         btnConfirm.setOnClickListener(this);
 
-        int param = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, -1);
+       /* int param = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, -1);
         if (param != 1) {
             btnConfirm.setLines(1);
-        }
+        }*/
     }
 
     /**

+ 1 - 1
app/src/main/java/com/sunzee/ui/fragment/AdvanceParameterFragment.java

@@ -162,7 +162,7 @@ public class AdvanceParameterFragment extends MvpFragment<AdvanceParameterPresen
             case sendError:
                 break;
             case ack:
-                Log.d(TAG, "event: 入成功");
+                Log.d(TAG, "event: 入成功");
                 ToastUtil.showToast("更新成功");
                 Log.d(TAG, "event: 写入成功");
                 mPoolAdvanceParameter.stopWrite();

+ 3 - 1
app/src/main/java/com/sunzee/ui/fragment/DebugFragment.java

@@ -104,8 +104,9 @@ public class DebugFragment extends MvpFragment<DebugPresenter> implements DebugV
 
     private void initView(View inflate) {
         mRvDebugList = inflate.findViewById(R.id.rv_degbuglist);
+        mRvDebugList.setItemViewCacheSize(28);
         mDebugParameterAdapter = new DebugParameterAdapter();
-        GridLayoutManager layoutManager = new GridLayoutManager(BaseApplication.getContext(), 9, GridLayoutManager.HORIZONTAL, false);
+        GridLayoutManager layoutManager = new GridLayoutManager(BaseApplication.getContext(), 14, GridLayoutManager.HORIZONTAL, false);
         mRvDebugList.setAdapter(mDebugParameterAdapter);
         mRvDebugList.setLayoutManager(layoutManager);
         mRvDebugListX = inflate.findViewById(R.id.rv_x);
@@ -118,6 +119,7 @@ public class DebugFragment extends MvpFragment<DebugPresenter> implements DebugV
         mRvDebugListY.addItemDecoration(new CustomDecoration(BaseApplication.getContext(), LinearLayoutManager.VERTICAL, 2));
         mDebugParameterXAdapter = new DebugParameterXAdapter();
         mDebugParameterYAdapter = new DebugParameterYAdapter();
+        //缓存多少个才进行重新获取数据呢? 23,24,可以进行设置
         mRvDebugListX.setItemViewCacheSize(23);
         mRvDebugListY.setItemViewCacheSize(24);
         mRvDebugListX.setAdapter(mDebugParameterXAdapter);

+ 67 - 10
app/src/main/java/com/sunzee/ui/fragment/LanguageSetFragment.java

@@ -6,30 +6,70 @@ import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
 
 import com.sunzee.R;
 import com.sunzee.base.MvpFragment;
+import com.sunzee.model.domain.Name;
 import com.sunzee.mvp.languageset.LanguageSetPresenter;
 import com.sunzee.mvp.languageset.LanguageSetView;
+import com.sunzee.utils.LanguageUtils;
+import com.sunzee.utils.SharedPreferencesUtils;
+import com.sunzee.utils.ToastUtil;
+import com.sunzee.utils.UiUtil;
 
 import java.util.Locale;
 
 /**
  * 语言设置界面 fragment
  */
-public class LanguageSetFragment extends MvpFragment<LanguageSetPresenter> implements LanguageSetView {
+public class LanguageSetFragment extends MvpFragment<LanguageSetPresenter> implements LanguageSetView, RadioGroup.OnCheckedChangeListener, View.OnClickListener {
+
+    private RadioGroup rgLanguage1;
+    private static final String TAG = "LanguageSetFragment";
+    private Button btnReset;
+    private volatile String languageValue = "";
+    private RadioButton rbChinese;
+    private RadioButton rbEnglish;
 
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View inflate = inflater.inflate(R.layout.fragment_language, container, false);
-        set("en");
+        initView(inflate);
         return inflate;
     }
 
+    private void initView(View inflate) {
+        rgLanguage1 = inflate.findViewById(R.id.rg_language1);
+        btnReset = inflate.findViewById(R.id.btn_reset);
+        rbChinese = inflate.findViewById(R.id.rb_chinese);
+        rbEnglish = inflate.findViewById(R.id.rb_english);
+        rgLanguage1.setOnCheckedChangeListener(this);
+        btnReset.setOnClickListener(this);
+        //之前设置好的语言是哪个吗?
+        selectLanguage();
+
+    }
+
+    private void selectLanguage() {
+        String languageType = (String)SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE,"ch");
+        switch (languageType) {
+            case "ch":
+                rbChinese.setChecked(true);
+                break;
+            case "en":
+                rbEnglish.setChecked(true);
+                break;
+        }
+    }
+
     @Override
     protected LanguageSetPresenter createPresenter() {
         return new LanguageSetPresenter(this);
@@ -45,14 +85,31 @@ public class LanguageSetFragment extends MvpFragment<LanguageSetPresenter> imple
 
     }
 
+    @Override
+    public void onCheckedChanged(RadioGroup group, int checkedId) {
+        switch (checkedId) {
+            case R.id.rb_chinese:
+                Log.d(TAG, "onCheckedChanged: 中文");
+                languageValue = "ch";
+                break;
+            case R.id.rb_english:
+                Log.d(TAG, "onCheckedChanged: 英文");
+                languageValue = "en";
+                break;
+            default:
+                languageValue = "ch";
+                break;
+        }
+    }
 
-    private void set(String lauType) {
-        // 本地语言设置
-        Locale myLocale = new Locale(lauType);
-        Resources res = getResources();
-        DisplayMetrics dm = res.getDisplayMetrics();
-        Configuration conf = res.getConfiguration();
-        conf.locale = myLocale;
-        res.updateConfiguration(conf, dm);
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.btn_reset:
+                SharedPreferencesUtils.setParam(Name.LANGUAGE_TYPE,languageValue);
+                LanguageUtils.set(languageValue);
+                ToastUtil.showToast(UiUtil.getStringRes(R.string.modified_success));
+                break;
+        }
     }
 }

+ 16 - 0
app/src/main/java/com/sunzee/ui/fragment/OtherFragment.java

@@ -17,6 +17,7 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
 import android.widget.RadioButton;
 import android.widget.SeekBar;
 
@@ -295,4 +296,19 @@ public class OtherFragment extends MvpFragment<OtherPresenter> implements OtherV
                 break;
         }
     }
+    /**
+     * 隐藏软键盘
+     */
+    private void hideSoftInput() {
+        View v = getActivity().getCurrentFocus();
+        if (v != null && v.getWindowToken() != null) {
+            InputMethodManager manager = (InputMethodManager) getContext()
+                    .getSystemService(Context.INPUT_METHOD_SERVICE);
+            boolean isOpen = manager.isActive();
+            if (isOpen) {
+                manager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
+            }
+        }
+    }
+
 }

+ 13 - 0
app/src/main/java/com/sunzee/ui/fragment/StatisticsFragment.java

@@ -6,6 +6,8 @@ import android.support.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
 
 import com.sunzee.R;
 import com.sunzee.base.MvpFragment;
@@ -17,13 +19,24 @@ import com.sunzee.mvp.statistics.StatisticsView;
  */
 public class StatisticsFragment extends MvpFragment<StatisticsPresenter> implements StatisticsView {
 
+    private ArrayAdapter<String> stringArrayAdapter;
+    private Spinner spStatisticalType;
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View inflate = inflater.inflate(R.layout.fragment_statistics, container, false);
+        initView(inflate);
         return inflate;
     }
 
+    private void initView(View inflate) {
+        String[] curs = getResources().getStringArray(R.array.letter);
+        spStatisticalType = inflate.findViewById(R.id.sp_statistical_type);
+        stringArrayAdapter = new ArrayAdapter<>(this.getContext(), R.layout.spinner_text, curs);
+        spStatisticalType.setAdapter(stringArrayAdapter);
+    }
+
     @Override
     protected StatisticsPresenter createPresenter() {
         return null;

+ 29 - 0
app/src/main/java/com/sunzee/utils/LanguageUtils.java

@@ -0,0 +1,29 @@
+package com.sunzee.utils;
+
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.support.v4.app.Fragment;
+import android.util.DisplayMetrics;
+
+import com.sunzee.base.BaseApplication;
+
+import java.util.Locale;
+
+/**
+ * 语言设置类
+ */
+public class LanguageUtils {
+    /**
+     * 给一个国际化的字符串,那么他就会自动到res中选择对应的文件,例如string_en,string_ch
+     * @param lauType
+     */
+    public static  void set(String lauType) {
+        // 本地语言设置
+        Locale myLocale = new Locale(lauType);
+        Resources res = BaseApplication.getContext().getResources();
+        DisplayMetrics dm = res.getDisplayMetrics();
+        Configuration conf = res.getConfiguration();
+        conf.locale = myLocale;
+        res.updateConfiguration(conf, dm);
+    }
+}

+ 35 - 0
app/src/main/java/com/sunzee/utils/TimerUtil.java

@@ -0,0 +1,35 @@
+package com.sunzee.utils;
+
+
+import com.hboxs.serialport.SerialPortSendQueue;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.ScheduledFuture;
+
+public class TimerUtil {
+    /**
+     * 关闭定时器
+     *
+     * @param timer
+     * @param task
+     */
+    public static void stopTimerAndTimerTask(Timer timer, TimerTask task) {
+        SerialPortSendQueue.clear();
+        if (timer != null) {
+
+//            timer.purge();
+            timer.cancel();
+
+            timer = null;
+        }
+        if (task != null) {
+            task.cancel();
+            task = null;
+        }
+    }
+
+
+
+
+}

+ 1 - 1
app/src/main/res/layout/activity_login.xml

@@ -85,7 +85,7 @@
                 android:layout_height="@dimen/dp_20"
                 android:background="@drawable/shape_login_rounded_rectangle"
                 android:gravity="center"
-                android:text="返回上一级"
+                android:text="@string/goback"
                 android:textColor="@color/white"
                 android:textSize="@dimen/sp_6"
                 tools:ignore="NotSibling" />

+ 4 - 1
app/src/main/res/layout/fragment_change_password.xml

@@ -44,6 +44,7 @@
                         android:layout_height="wrap_content"
                         android:background="@drawable/shape_password_edit_rounded_rectangle"
                         android:hint="@string/input_older_password"
+                        android:inputType="textPassword"
                         android:padding="@dimen/dp_5"
                         android:textSize="@dimen/sp_7" />
                 </LinearLayout>
@@ -68,6 +69,7 @@
                         android:layout_height="wrap_content"
                         android:background="@drawable/shape_password_edit_rounded_rectangle"
                         android:hint="@string/input_new_password"
+                        android:inputType="textPassword"
                         android:padding="@dimen/dp_5"
                         android:textSize="@dimen/sp_7" />
                 </LinearLayout>
@@ -92,6 +94,7 @@
                         android:layout_height="wrap_content"
                         android:background="@drawable/shape_password_edit_rounded_rectangle"
                         android:hint="@string/input_confirm_password"
+                        android:inputType="textPassword"
                         android:padding="@dimen/dp_5"
                         android:textSize="@dimen/sp_7" />
                 </LinearLayout>
@@ -108,7 +111,7 @@
                         android:layout_marginTop="@dimen/dp_10"
                         android:background="@drawable/shape_password_bottom_rounded_rectangle"
                         android:gravity="center"
-                        android:text="@string/modify"
+                        android:text="@string/confirm_revision"
                         android:textColor="@color/white"
                         android:textSize="@dimen/sp_10" />
                 </LinearLayout>

+ 37 - 33
app/src/main/res/layout/fragment_debug.xml

@@ -6,47 +6,51 @@
     android:orientation="horizontal"
     android:padding="@dimen/dp_20">
 
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/rv_degbuglist"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginRight="@dimen/dp_20" />
 
-    <LinearLayout
-        android:orientation="vertical"
+    <ScrollView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
-        <TextView
-            android:text= "X信号"
-            android:layout_marginBottom="@dimen/dp_5"
-            android:textColor="@color/logo_blue"
-            android:textSize="@dimen/dp_6"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"/>
         <android.support.v7.widget.RecyclerView
-            android:id="@+id/rv_x"
-            android:layout_width="@dimen/dp_144"
+            android:id="@+id/rv_degbuglist"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="@dimen/dp_20" />
-    </LinearLayout>
+    </ScrollView>
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content">
+            <TextView
+                android:text= "X信号"
+                android:layout_marginBottom="@dimen/dp_5"
+                android:textColor="@color/logo_blue"
+                android:textSize="@dimen/dp_6"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"/>
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/rv_x"
+                android:layout_width="@dimen/dp_144"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="@dimen/dp_20" />
+        </LinearLayout>
 
 
-    <LinearLayout
-        android:orientation="vertical"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
-        <TextView
-            android:text= "Y信号"
-            android:layout_marginBottom="@dimen/dp_5"
-            android:textColor="@color/logo_blue"
-            android:textSize="@dimen/dp_6"
+        <LinearLayout
+            android:orientation="vertical"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"/>
-        <android.support.v7.widget.RecyclerView
-            android:id="@+id/rv_y"
-            android:layout_width="@dimen/dp_144"
-            android:layout_height="wrap_content"
-            android:layout_marginRight="@dimen/dp_20" />
-    </LinearLayout>
+            android:layout_height="wrap_content">
+            <TextView
+                android:text= "Y信号"
+                android:layout_marginBottom="@dimen/dp_5"
+                android:textColor="@color/logo_blue"
+                android:textSize="@dimen/dp_6"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"/>
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/rv_y"
+                android:layout_width="@dimen/dp_144"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="@dimen/dp_20" />
+        </LinearLayout>
 
 </LinearLayout>

+ 6 - 5
app/src/main/res/layout/fragment_language.xml

@@ -2,10 +2,10 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:background="@color/shallowblue"
     android:gravity="center"
-    android:padding="@dimen/dp_5"
     android:orientation="vertical"
-    android:background="@color/shallowblue">
+    android:padding="@dimen/dp_5">
 
     <RadioGroup
         android:id="@+id/rg_language1"
@@ -18,7 +18,7 @@
             android:layout_width="@dimen/dp_100"
             android:layout_height="@dimen/dp_100"
             android:layout_marginBottom="@dimen/dp_10"
-            android:background="@drawable/selector_language_bg"
+            android:background="@drawable/selector_net_bg"
             android:button="@null"
             android:gravity="center"
             android:text="中文"
@@ -31,7 +31,7 @@
             android:layout_height="@dimen/dp_100"
             android:layout_marginLeft="@dimen/dp_18"
             android:layout_marginBottom="@dimen/dp_10"
-            android:background="@drawable/selector_language_bg"
+            android:background="@drawable/selector_net_bg"
             android:button="@null"
             android:gravity="center"
             android:text="英语"
@@ -42,12 +42,13 @@
     </RadioGroup>
 
     <Button
-        android:layout_marginTop="@dimen/dp_40"
         android:id="@+id/btn_reset"
         android:layout_width="@dimen/dp_180"
         android:layout_height="@dimen/dp_25"
+        android:layout_marginTop="@dimen/dp_40"
         android:background="@drawable/shape_btn_back"
         android:text="@string/modify"
+        android:textAllCaps="false"
         android:textColor="@color/logo_blue"
         android:textSize="@dimen/dp_10" />
 </LinearLayout>

+ 30 - 29
app/src/main/res/layout/fragment_statistics.xml

@@ -17,18 +17,18 @@
         android:layout_marginBottom="@dimen/dp_15"
         android:orientation="horizontal">
 
-<!--        <com.jaredrummler.materialspinner.MaterialSpinner-->
-<!--            android:id="@+id/btn_view_mode"-->
-<!--            android:layout_width="0dp"-->
-<!--            android:layout_height="@dimen/dp_22"-->
-<!--            android:layout_marginLeft="@dimen/dp_6"-->
-<!--            android:layout_weight="2"-->
-<!--            android:textColor="@color/colorBg"-->
-<!--            android:textSize="@dimen/sp_6"-->
-<!--            app:ms_arrow_tint="@color/colorBg"-->
-<!--            app:ms_background_selector="@drawable/shape_btn_back"-->
-<!--            app:ms_hint_color="@color/colorBg"-->
-<!--            app:ms_text_color="@color/colorBg" />-->
+        <!--        <com.jaredrummler.materialspinner.MaterialSpinner-->
+        <!--            android:id="@+id/btn_view_mode"-->
+        <!--            android:layout_width="0dp"-->
+        <!--            android:layout_height="@dimen/dp_22"-->
+        <!--            android:layout_marginLeft="@dimen/dp_6"-->
+        <!--            android:layout_weight="2"-->
+        <!--            android:textColor="@color/colorBg"-->
+        <!--            android:textSize="@dimen/sp_6"-->
+        <!--            app:ms_arrow_tint="@color/colorBg"-->
+        <!--            app:ms_background_selector="@drawable/shape_btn_back"-->
+        <!--            app:ms_hint_color="@color/colorBg"-->
+        <!--            app:ms_text_color="@color/colorBg" />-->
 
 
         <Button
@@ -180,18 +180,19 @@
                 android:textSize="@dimen/sp_10" />
         </RadioGroup>
 
-<!--        <com.jaredrummler.materialspinner.MaterialSpinner-->
-<!--            android:id="@+id/spinner"-->
-<!--            android:layout_width="0dp"-->
-<!--            android:layout_height="@dimen/dp_22"-->
-<!--            android:layout_marginLeft="@dimen/dp_6"-->
-<!--            android:layout_weight="2"-->
-<!--            android:textColor="@color/colorBg"-->
-<!--            android:textSize="@dimen/sp_6"-->
-<!--            app:ms_arrow_tint="@color/colorBg"-->
-<!--            app:ms_background_selector="@drawable/shape_btn_back"-->
-<!--            app:ms_hint_color="@color/colorBg"-->
-<!--            app:ms_text_color="@color/colorBg" />-->
+
+        <Spinner
+            android:id="@+id/sp_statistical_type"
+            android:layout_width="0dp"
+            android:layout_height="@dimen/dp_22"
+            android:layout_marginLeft="@dimen/dp_6"
+            android:layout_weight="1"
+            android:background="@drawable/shape_btn_back"
+            android:entries="@array/letter"
+            android:gravity="center"
+            android:prompt="@string/spinner_title"
+            android:textColor="@color/logo_blue"
+            android:textSize="@dimen/sp_8" />
 
         <Button
             android:id="@+id/btn_contrast"
@@ -216,11 +217,11 @@
         android:layout_weight="1"
         android:background="@color/white">
 
-<!--        <com.github.mikephil.charting.charts.BarChart-->
-<!--            android:id="@+id/bar_char1"-->
-<!--            android:layout_width="match_parent"-->
-<!--            android:layout_height="match_parent"-->
-<!--            android:visibility="invisible" />-->
+        <!--        <com.github.mikephil.charting.charts.BarChart-->
+        <!--            android:id="@+id/bar_char1"-->
+        <!--            android:layout_width="match_parent"-->
+        <!--            android:layout_height="match_parent"-->
+        <!--            android:visibility="invisible" />-->
 
         <TextView
             android:id="@+id/tv_placeholder"

+ 10 - 0
app/src/main/res/layout/spinner_text.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/text1"
+    android:textColor="@color/logo_blue"
+    android:textSize="@dimen/sp_8"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="@dimen/dp_8"
+    android:paddingLeft="@dimen/dp_8"
+    android:paddingRight="@dimen/dp_8"/>

+ 12 - 10
app/src/main/res/menu/my_navigation_items.xml

@@ -3,41 +3,43 @@
     <item
         android:id="@+id/home"
         android:icon="@drawable/home_icon"
-        android:title="首页" />
+        android:title="@string/home" />
+    <!--暂时不使用数据统计的功能-->
     <item
         android:id="@+id/data"
         android:icon="@drawable/data_icon"
-        android:title="数据统计" />
+        android:title="@string/data"
+        android:visible="false"/>
     <item
         android:id="@+id/debug"
         android:icon="@drawable/debug_icon"
-        android:title="调试页" />
+        android:title="@string/debug" />
     <item
         android:id="@+id/parameter1"
         android:icon="@drawable/parameter1_icon"
-        android:title="通用参数" />
+        android:title="@string/parameter1" />
     <item
         android:id="@+id/parameter2"
         android:icon="@drawable/parameter2_icon"
-        android:title="进阶参数" />
+        android:title="@string/parameter2" />
     <item
         android:id="@+id/warring"
         android:icon="@drawable/warring_icon"
-        android:title="报警记录" />
+        android:title="@string/warring" />
     <item
         android:id="@+id/language"
         android:icon="@drawable/language_icon"
-        android:title="语言设置" />
+        android:title="@string/language" />
     <item
         android:id="@+id/password"
         android:icon="@drawable/password_icon"
-        android:title="重置密码" />
+        android:title="@string/password" />
     <item
         android:id="@+id/other"
         android:icon="@drawable/other_icon"
-        android:title="其他" />
+        android:title="@string/other" />
     <item
         android:id="@+id/material"
         android:icon="@drawable/material_icon"
-        android:title="查看物料" />
+        android:title="@string/material" />
 </menu>

+ 28 - 8
app/src/main/res/values-en/strings.xml

@@ -17,14 +17,13 @@
     <string name="screening"> screening</string>
     <string name="Input_time"> please enter the time and date</string>
     <string name="show_material"> view materials</string>
-    <string name="debug"> debugging page</string>
     <string name="alarm_record"> alarm record</string>
     <string name="general_parameter"> general parameters</string>
     <string name="advance_parameter"> advanced parameters</string>
     <string name="network_selection"> network selection</string>
     <string name="bright"> brightness </string>
     <string name="volume"> volume</string>
-    <string name="modify"> confirm the modification</string>
+    <string name="modify">Modify (return to the superior effective)</string>
     <string name="contact">Machine contact person</string>
     <string name="contact1">Contact person</string>
     <string name="black">Return to the client</string>
@@ -80,7 +79,6 @@
     <string name="language_setting"> language settings</string>
     <string name="pay_type"> payment method</string>
     <string name="data_statistics"> data statistics </string>
-    <string name="other"> other</string>
     <string name="parameter_adjustment"> parameter adjustment</string>
     <string name="check_thing"> view materials</string>
     <string name="ad_man"> advertising management </string>
@@ -424,10 +422,6 @@
     <string name="advance_parameter_14"> furnace head first section temperature (%) </string>
     <string name="advance_parameter_15"> The second section temperature of the furnace head (%) </string>
     <string name="advance_parameter_16">X-axis zero compensation</string>
-    <string name="advance_parameter_17">Y axis zero compensation</string>
-    <string name="advance_parameter_18">Z-axis zero compensation</string>
-    <string name="advance_parameter_25"> add water to the water tank</string>
-    <string name="advance_parameter_26"> the multiplier of the number of coins</string>
     <string name="edit_no_null"> input box cannot be empty</string>
     <string name="pro_motioncode"> online/discount code payment</string>
     <string name="role"> Authority management </string>
@@ -458,5 +452,31 @@
     <string name="hole_lamp5"> squatting position 5 work lights </string>
     <string name="hole_lamp6"> squatting 6 working lights </string>
     <string name="ioy27">Z axis solenoid valve</string>
-
+    <string name="goback">Back to previous</string>
+
+    <string name="home">Home </string>
+    <string name="data"> data statistics</string>
+    <string name="debug">debug page</string>
+    <string name="parameter1">General parameters</string>
+    <string name="parameter2"> advanced parameters</string>
+    <string name="warring">Alarm record</string>
+    <string name="language"> language settings</string>
+    <string name="password"> reset password</string>
+    <string name="other"> other</string>
+    <string name="material">View materials</string>
+    <string name="spinner_title">统计分类</string>
+    <string name="x_add">X+</string>
+    <string name="x_subtract">X-</string>
+    <string name="y_add">Y+</string>
+    <string name="y_subtract">Y-</string>
+    <string name="z_top">Z↑</string>
+    <string name="z_bottom">Z↓</string>
+    <string name="e_add">E+</string>
+    <string name="e_subtract">E-</string>
+    <string name="a_bottom">A↓</string>
+    <string name="x_back_zero">X回零</string>
+    <string name="z_back_zero">Z回零</string>
+    <string name="y_back_zero">Y回零</string>
+    <string name="e_back_zero">E回零</string>
+    <string name="a_back_zero">A回零</string>
 </resources>

+ 10 - 0
app/src/main/res/values/arrays.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string-array name="letter">
+        <item>清洗次数</item>
+        <item>人流量</item>
+        <item>电量</item>
+        <item>水量</item>
+    </string-array>
+
+</resources>

+ 40 - 17
app/src/main/res/values/strings.xml

@@ -17,14 +17,13 @@
     <string name="screening">筛选</string>
     <string name="Input_time">请输入时间和日期</string>
     <string name="show_material">查看物料</string>
-    <string name="debug">调试页</string>
     <string name="alarm_record">报警记录</string>
     <string name="general_parameter">通用参数</string>
     <string name="advance_parameter">进阶参数</string>
     <string name="network_selection">网络选择</string>
     <string name="bright">亮度</string>
     <string name="volume">音量</string>
-    <string name="modify">确认修改</string>
+    <string name="modify">确认修改(返回到广告页面后生效)</string>
     <string name="contact">机器联系人</string>
     <string name="contact1">联系人</string>
     <string name="black">返回客户端</string>
@@ -80,7 +79,6 @@
     <string name="language_setting">语言设置</string>
     <string name="pay_type">支付方式</string>
     <string name="data_statistics">数据统计</string>
-    <string name="other">其他</string>
     <string name="parameter_adjustment">参数调整</string>
     <string name="check_thing">查看物料</string>
     <string name="ad_man">广告管理</string>
@@ -414,20 +412,16 @@
     <string name="advance_parameter_4">Y轴爬行速度</string>
     <string name="advance_parameter_5">E轴回零速度</string>
     <string name="advance_parameter_6">E轴爬行速度</string>
-    <string name="advance_parameter_7">X轴加速度</string>
-    <string name="advance_parameter_8">X轴减速度</string>
-    <string name="advance_parameter_9">Y轴加速度</string>
-    <string name="advance_parameter_10">Y轴减速度</string>
-    <string name="advance_parameter_11">E轴加速度</string>
-    <string name="advance_parameter_12">E轴减速度</string>
-    <string name="advance_parameter_13">炉头第三段停止时间</string>
-    <string name="advance_parameter_14">炉头第一段温度(%)</string>
-    <string name="advance_parameter_15">炉头第二段温度(%)</string>
-    <string name="advance_parameter_16">X轴零点补偿</string>
-    <string name="advance_parameter_17">Y轴零点补偿</string>
-    <string name="advance_parameter_18">Z轴零点补偿</string>
-    <string name="advance_parameter_25">水箱加水</string>
-    <string name="advance_parameter_26">币数的倍率</string>
+    <string name="advance_parameter_7">A轴回零速度</string>
+    <string name="advance_parameter_8">A轴爬行速度</string>
+    <string name="advance_parameter_9">X轴加速度</string>
+    <string name="advance_parameter_10">X轴减速度</string>
+    <string name="advance_parameter_11">Y轴加速度</string>
+    <string name="advance_parameter_12">Y轴减速度</string>
+    <string name="advance_parameter_13">E轴加速度</string>
+    <string name="advance_parameter_14">E轴减速度</string>
+    <string name="advance_parameter_15">A轴加速度</string>
+    <string name="advance_parameter_16">A轴减速度</string>
     <string name="edit_no_null">输入框不能为空</string>
     <string name="pro_motioncode">线上/优惠码支付</string>
     <string name="role">权限管理</string>
@@ -458,5 +452,34 @@
     <string name="hole_lamp5">蹲位5工作灯</string>
     <string name="hole_lamp6">蹲位6工作灯</string>
     <string name="ioy27">Z轴电磁阀</string>
+    <string name="goback">返回上一级</string>
+
+    <string name="home">首頁</string>
+    <string name="data">数据统计</string>
+    <string name="debug">调试页</string>
+    <string name="parameter1">通用参数</string>
+    <string name="parameter2">进阶参数</string>
+    <string name="warring">报警记录</string>
+    <string name="language">语言设置</string>
+    <string name="password">重置密码</string>
+    <string name="other">其他</string>
+    <string name="material">查看物料</string>
+    <string name="spinner_title">统计分类</string>
+    <string name="x_add">X+</string>
+    <string name="x_subtract">X-</string>
+    <string name="y_add">Y+</string>
+    <string name="y_subtract">Y-</string>
+    <string name="z_top">Z↑</string>
+    <string name="z_bottom">Z↓</string>
+    <string name="e_add">E+</string>
+    <string name="e_subtract">E-</string>
+    <string name="a_top">A↑</string>
+    <string name="a_bottom">A↓</string>
+    <string name="x_back_zero">X回零</string>
+    <string name="z_back_zero">Z回零</string>
+    <string name="y_back_zero">Y回零</string>
+    <string name="e_back_zero">E回零</string>
+    <string name="a_back_zero">A回零</string>
+
 
 </resources>

+ 2 - 0
app/src/test/java/com/sunzee/ExampleUnitTest.java

@@ -82,4 +82,6 @@ public class ExampleUnitTest {
         ArrayList<String> result = new ArrayList(lis);
         System.out.println(result.get(0));
     }
+
+
 }

BIN
serialportlib/.cxx/cmake/debug/arm64-v8a/.ninja_deps


+ 3 - 0
serialportlib/.cxx/cmake/debug/arm64-v8a/.ninja_log

@@ -0,0 +1,3 @@
+# ninja log v5
+1	304	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	d24236b731f1b8e1
+305	514	0	../../../../build/intermediates/cmake/debug/obj/arm64-v8a/libhboxs_serial_port.so	d20dbd2ebde41a9c

+ 8 - 0
serialportlib/.cxx/cmake/debug/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.command.txt

@@ -0,0 +1,8 @@
+Executable : D:\androidSDK\cmake\3.6.4111459\bin\cmake.exe
+arguments : 
+--build
+D:\cleanMachine_android\serialportlib\.cxx\cmake\debug\arm64-v8a
+--target
+hboxs_serial_port
+jvmArgs : 
+

+ 0 - 0
serialportlib/.cxx/cmake/debug/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stderr.txt


+ 1 - 0
serialportlib/.cxx/cmake/debug/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stdout.txt

@@ -0,0 +1 @@
+ninja: no work to do.

BIN
serialportlib/.cxx/cmake/debug/x86_64/.ninja_deps


+ 3 - 0
serialportlib/.cxx/cmake/debug/x86_64/.ninja_log

@@ -0,0 +1,3 @@
+# ninja log v5
+1	149	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	3f529584c6904c2e
+150	354	0	../../../../build/intermediates/cmake/debug/obj/x86_64/libhboxs_serial_port.so	f5955cf0605a414c

+ 8 - 0
serialportlib/.cxx/cmake/debug/x86_64/android_gradle_build_hboxs_serial_port_x86_64.command.txt

@@ -0,0 +1,8 @@
+Executable : D:\androidSDK\cmake\3.6.4111459\bin\cmake.exe
+arguments : 
+--build
+D:\cleanMachine_android\serialportlib\.cxx\cmake\debug\x86_64
+--target
+hboxs_serial_port
+jvmArgs : 
+

+ 0 - 0
serialportlib/.cxx/cmake/debug/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stderr.txt


+ 1 - 0
serialportlib/.cxx/cmake/debug/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stdout.txt

@@ -0,0 +1 @@
+ninja: no work to do.

BIN
serialportlib/.cxx/cmake/release/arm64-v8a/.ninja_deps


+ 5 - 0
serialportlib/.cxx/cmake/release/arm64-v8a/.ninja_log

@@ -0,0 +1,5 @@
+# ninja log v5
+1	158	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	865297f2e5092b5c
+159	419	0	../../../../build/intermediates/cmake/release/obj/arm64-v8a/libhboxs_serial_port.so	3aac7eb8d6f147b1
+2	170	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	865297f2e5092b5c
+170	272	0	../../../../build/intermediates/cmake/release/obj/arm64-v8a/libhboxs_serial_port.so	3aac7eb8d6f147b1

BIN
serialportlib/.cxx/cmake/release/arm64-v8a/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o


+ 8 - 0
serialportlib/.cxx/cmake/release/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.command.txt

@@ -0,0 +1,8 @@
+Executable : D:\androidSDK\cmake\3.6.4111459\bin\cmake.exe
+arguments : 
+--build
+D:\cleanMachine_android\serialportlib\.cxx\cmake\release\arm64-v8a
+--target
+hboxs_serial_port
+jvmArgs : 
+

+ 0 - 0
serialportlib/.cxx/cmake/release/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stderr.txt


+ 2 - 0
serialportlib/.cxx/cmake/release/arm64-v8a/android_gradle_build_hboxs_serial_port_arm64-v8a.stdout.txt

@@ -0,0 +1,2 @@
+[1/2] Building C object CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o
+[2/2] Linking C shared library ..\..\..\..\build\intermediates\cmake\release\obj\arm64-v8a\libhboxs_serial_port.so

BIN
serialportlib/.cxx/cmake/release/armeabi-v7a/.ninja_deps


+ 5 - 0
serialportlib/.cxx/cmake/release/armeabi-v7a/.ninja_log

@@ -0,0 +1,5 @@
+# ninja log v5
+1	597	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	f7f8a7420ff02725
+599	1496	0	../../../../build/intermediates/cmake/release/obj/armeabi-v7a/libhboxs_serial_port.so	e7c2d72c5c4f666d
+2	437	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	f7f8a7420ff02725
+437	768	0	../../../../build/intermediates/cmake/release/obj/armeabi-v7a/libhboxs_serial_port.so	e7c2d72c5c4f666d

BIN
serialportlib/.cxx/cmake/release/armeabi-v7a/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o


+ 8 - 0
serialportlib/.cxx/cmake/release/armeabi-v7a/android_gradle_build_hboxs_serial_port_armeabi-v7a.command.txt

@@ -0,0 +1,8 @@
+Executable : D:\androidSDK\cmake\3.6.4111459\bin\cmake.exe
+arguments : 
+--build
+D:\cleanMachine_android\serialportlib\.cxx\cmake\release\armeabi-v7a
+--target
+hboxs_serial_port
+jvmArgs : 
+

+ 0 - 0
serialportlib/.cxx/cmake/release/armeabi-v7a/android_gradle_build_hboxs_serial_port_armeabi-v7a.stderr.txt


+ 1 - 0
serialportlib/.cxx/cmake/release/armeabi-v7a/android_gradle_build_hboxs_serial_port_armeabi-v7a.stdout.txt

@@ -0,0 +1 @@
+ninja: no work to do.

BIN
serialportlib/.cxx/cmake/release/x86/.ninja_deps


+ 5 - 0
serialportlib/.cxx/cmake/release/x86/.ninja_log

@@ -0,0 +1,5 @@
+# ninja log v5
+1	176	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	50958b5b040d5927
+177	635	0	../../../../build/intermediates/cmake/release/obj/x86/libhboxs_serial_port.so	c3977ba046d2c474
+2	179	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	50958b5b040d5927
+179	303	0	../../../../build/intermediates/cmake/release/obj/x86/libhboxs_serial_port.so	c3977ba046d2c474

BIN
serialportlib/.cxx/cmake/release/x86/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o


+ 8 - 0
serialportlib/.cxx/cmake/release/x86/android_gradle_build_hboxs_serial_port_x86.command.txt

@@ -0,0 +1,8 @@
+Executable : D:\androidSDK\cmake\3.6.4111459\bin\cmake.exe
+arguments : 
+--build
+D:\cleanMachine_android\serialportlib\.cxx\cmake\release\x86
+--target
+hboxs_serial_port
+jvmArgs : 
+

+ 0 - 0
serialportlib/.cxx/cmake/release/x86/android_gradle_build_hboxs_serial_port_x86.stderr.txt


+ 2 - 0
serialportlib/.cxx/cmake/release/x86/android_gradle_build_hboxs_serial_port_x86.stdout.txt

@@ -0,0 +1,2 @@
+[1/2] Building C object CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o
+[2/2] Linking C shared library ..\..\..\..\build\intermediates\cmake\release\obj\x86\libhboxs_serial_port.so

BIN
serialportlib/.cxx/cmake/release/x86_64/.ninja_deps


+ 5 - 0
serialportlib/.cxx/cmake/release/x86_64/.ninja_log

@@ -0,0 +1,5 @@
+# ninja log v5
+1	149	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	eca70d0f992d9dfd
+150	303	0	../../../../build/intermediates/cmake/release/obj/x86_64/libhboxs_serial_port.so	12c5b1e593d8c824
+3	173	0	CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o	eca70d0f992d9dfd
+173	305	0	../../../../build/intermediates/cmake/release/obj/x86_64/libhboxs_serial_port.so	12c5b1e593d8c824

BIN
serialportlib/.cxx/cmake/release/x86_64/CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o


+ 8 - 0
serialportlib/.cxx/cmake/release/x86_64/android_gradle_build_hboxs_serial_port_x86_64.command.txt

@@ -0,0 +1,8 @@
+Executable : D:\androidSDK\cmake\3.6.4111459\bin\cmake.exe
+arguments : 
+--build
+D:\cleanMachine_android\serialportlib\.cxx\cmake\release\x86_64
+--target
+hboxs_serial_port
+jvmArgs : 
+

+ 0 - 0
serialportlib/.cxx/cmake/release/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stderr.txt


+ 2 - 0
serialportlib/.cxx/cmake/release/x86_64/android_gradle_build_hboxs_serial_port_x86_64.stdout.txt

@@ -0,0 +1,2 @@
+[1/2] Building C object CMakeFiles/hboxs_serial_port.dir/src/main/cpp/SerialPort.c.o
+[2/2] Linking C shared library ..\..\..\..\build\intermediates\cmake\release\obj\x86_64\libhboxs_serial_port.so