Przeglądaj źródła

二代超声波,使用侧边485口连接称

渣渣宝 4 lat temu
rodzic
commit
dcbfc14661
37 zmienionych plików z 1651 dodań i 1083 usunięć
  1. 2 1
      app/build.gradle
  2. 35 32
      app/src/main/AndroidManifest.xml
  3. 7 7
      app/src/main/java/com/siwei/recyclebox/application/AppApplication.java
  4. 0 1
      app/src/main/java/com/siwei/recyclebox/deviceUtils/BaseDeviceEntity.java
  5. 22 0
      app/src/main/java/com/siwei/recyclebox/deviceUtils/ByteUtil.java
  6. 7 5
      app/src/main/java/com/siwei/recyclebox/deviceUtils/ManyDevices.java
  7. 81 328
      app/src/main/java/com/siwei/recyclebox/deviceUtils/OtherDevice.java
  8. 56 104
      app/src/main/java/com/siwei/recyclebox/deviceUtils/SerialPortUtil.java
  9. 3 5
      app/src/main/java/com/siwei/recyclebox/deviceUtils/WeightDevice.java
  10. 197 0
      app/src/main/java/com/siwei/recyclebox/rs485/ComUltrasonic.java
  11. 324 0
      app/src/main/java/com/siwei/recyclebox/rs485/ComWeight.java
  12. 82 0
      app/src/main/java/com/siwei/recyclebox/rs485/Control.java
  13. 1 0
      app/src/main/java/com/siwei/recyclebox/ui/main/MainActivity.java
  14. 449 294
      app/src/main/java/com/siwei/recyclebox/ui/main/MainViewModel.java
  15. BIN
      app/src/main/jniLibs/arm64-v8a/libBugly.so
  16. BIN
      app/src/main/jniLibs/arm64-v8a/libandroid_id2.so
  17. BIN
      app/src/main/jniLibs/arm64-v8a/libcoap.so
  18. BIN
      app/src/main/jniLibs/arm64-v8a/libitls.so
  19. BIN
      app/src/main/jniLibs/arm64-v8a/libserialport.so
  20. BIN
      app/src/main/jniLibs/armeabi-v7a/libBugly.so
  21. BIN
      app/src/main/jniLibs/armeabi-v7a/libandroid_id2.so
  22. BIN
      app/src/main/jniLibs/armeabi-v7a/libcoap.so
  23. BIN
      app/src/main/jniLibs/armeabi-v7a/libitls.so
  24. BIN
      app/src/main/jniLibs/armeabi-v7a/libserialport.so
  25. BIN
      app/src/main/jniLibs/armeabi/libBugly.so
  26. BIN
      app/src/main/jniLibs/armeabi/libandroid_id2.so
  27. BIN
      app/src/main/jniLibs/armeabi/libcoap.so
  28. BIN
      app/src/main/jniLibs/armeabi/libitls.so
  29. BIN
      app/src/main/jniLibs/armeabi/libserialport.so
  30. BIN
      app/src/main/jniLibs/x86/libBugly.so
  31. BIN
      app/src/main/jniLibs/x86/libcoap.so
  32. BIN
      app/src/main/jniLibs/x86/libserialport.so
  33. BIN
      app/src/main/jniLibs/x86_64/libBugly.so
  34. BIN
      app/src/main/jniLibs/x86_64/libserialport.so
  35. 381 304
      app/src/main/res/layout/activity_main.xml
  36. 3 1
      build.gradle
  37. 1 1
      gradle.properties

+ 2 - 1
app/build.gradle

xqd xqd
@@ -79,7 +79,7 @@ dependencies {
     //内存泄漏测试
     debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.2'
     debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.2'
-    implementation 'com.github.maybesix:Android-XHLibrary:v1.0.0'
+//    implementation 'com.github.maybesix:Android-XHLibrary:v1.0.0'
     implementation 'com.tencent.bugly:crashreport:3.1.0'
     implementation 'com.tencent.bugly:nativecrashreport:latest.release'
     implementation 'com.aliyun:aliyun-java-sdk-core:4.0.6'
@@ -93,4 +93,5 @@ dependencies {
     //    implementation files('src/main/libs//aliyun-java-sdk-core-4.1.0.jar')
     //    implementation files('src/main/libs/aliyun-java-sdk-dysmsapi-1.0.0.jar')
     implementation files('libs/AMap.jar')
+    implementation ('tp.xmaihh:serialport:2.1')
 }

+ 35 - 32
app/src/main/AndroidManifest.xml

xqd xqd xqd xqd xqd
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="com.siwei.recyclebox"
-    >
-<!--    android:sharedUserId="android.uid.system"--><!--    系统签名需要配置-->
+    package="com.siwei.recyclebox">
+
+
+    <uses-permission android:name="android.permission.HARDWARE_TEST" />
+    <!--    android:sharedUserId="android.uid.system"--><!--    系统签名需要配置-->
 
     <!--用于进行网络定位-->
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
@@ -38,11 +40,11 @@
     <uses-permission android:name="android.permission.WAKE_LOCK" />
 
 
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"> </uses-permission>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
 
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"> </uses-permission>
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
 
-    <uses-permission android:name="android.permission.WAKE_LOCK"> </uses-permission>
+    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
@@ -52,12 +54,13 @@
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
     <!--读权限-->
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permisssion.READ_LOGS"/>
-<!--    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>-->
-    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
+    <uses-permission android:name="android.permisssion.READ_LOGS" />
+    <!--    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>-->
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
     <!--写权限-->
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
     <uses-feature
         android:name="android.hardware.bluetooth_le"
         android:required="true" />
@@ -79,19 +82,18 @@
     <uses-permission android:name="android.hardware.usb.host" />
 
 
-
     <application
-        android:hardwareAccelerated="false"
-        android:largeHeap="true"
-        android:persistent="true"
         android:name=".application.AppApplication"
         android:allowBackup="true"
-        tools:replace="android:allowBackup"
+        android:hardwareAccelerated="false"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
+        android:largeHeap="true"
+        android:persistent="true"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
-        android:theme="@style/AppTheme">
+        android:theme="@style/AppTheme"
+        tools:replace="android:allowBackup">
 
         <meta-data
             android:name="com.amap.api.v2.apikey"
@@ -105,41 +107,42 @@
             android:grantUriPermissions="true">
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
-                android:resource="@xml/filepaths"
-                />
+                android:resource="@xml/filepaths" />
         </provider>
         <activity android:name=".ui.main.MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <action android:name="android.intent.action.MAIN" />
+
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
             </intent-filter>
-<!--            <intent-filter>-->
-<!--                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />-->
-<!--            </intent-filter>-->
-<!--            <meta-data-->
-<!--                android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"-->
-<!--                android:resource="@xml/device_filter" />-->
+<!--                        <intent-filter>-->
+<!--                            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />-->
+<!--                        </intent-filter>-->
+<!--                        <meta-data-->
+<!--                            android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"-->
+<!--                            android:resource="@xml/device_filter" />-->
         </activity>
 
 
-        <service android:name=".service.MyService"
-            android:permission="android.permission.BIND_JOB_SERVICE"
-        />
+        <service
+            android:name=".service.MyService"
+            android:permission="android.permission.BIND_JOB_SERVICE" />
 
-        <receiver android:name=".receiver.BootReceiver"  android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
+        <receiver
+            android:name=".receiver.BootReceiver"
+            android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
             </intent-filter>
         </receiver>
-        <receiver android:name=".receiver.BCRUpgradeApk"
-            >
+        <receiver android:name=".receiver.BCRUpgradeApk">
             <intent-filter>
-                <action android:name="android.intent.action.PACKAGE_REPLACED"/>
-                <data android:scheme="package"/>
+                <action android:name="android.intent.action.PACKAGE_REPLACED" />
+                <data android:scheme="package" />
             </intent-filter>
         </receiver>
 

+ 7 - 7
app/src/main/java/com/siwei/recyclebox/application/AppApplication.java

xqd xqd xqd
@@ -84,7 +84,7 @@ public class AppApplication extends BaseApplication implements CustomActivityOnC
         CrashReport.initCrashReport(getApplicationContext(), "40c3954b93", true);//测试阶段为true  发布时改成false
         CrashReport.setUserId(this,MainViewModel.getDeviceId(this));
         //是否开启打印日志
-        KLog.init(BuildConfig.DEBUG);
+//        KLog.init(BuildConfig.DEBUG);
         //初始化全局异常崩溃
         initCrash();
         //内存泄漏检测
@@ -170,11 +170,11 @@ public class AppApplication extends BaseApplication implements CustomActivityOnC
          *   调用动态注册接口去获取deviceSecret
          */
         DeviceInfo myDeviceInfo = new DeviceInfo();
-//        myDeviceInfo.productKey = "a1EtqHmfpNk";//正式服
-        myDeviceInfo.productKey = "a13H8L6bDyf";//测试服
+        myDeviceInfo.productKey = "a1EtqHmfpNk";//正式服
+//        myDeviceInfo.productKey = "a13H8L6bDyf";//测试服
 
-//        myDeviceInfo.productSecret = "x6wHbrbXUMFYtvLl";//正式服
-        myDeviceInfo.productSecret = "Nc4Y4KsjofejCy27";//测试服
+        myDeviceInfo.productSecret = "x6wHbrbXUMFYtvLl";//正式服
+//        myDeviceInfo.productSecret = "Nc4Y4KsjofejCy27";//测试服
 
         System.out.println(MainViewModel.getDeviceId(this)+"----------------------------+");
         myDeviceInfo.deviceName = MainViewModel.getDeviceId(this);
@@ -182,8 +182,8 @@ public class AppApplication extends BaseApplication implements CustomActivityOnC
         SPUtils.getInstance().put("IMEI",MainViewModel.getDeviceId(this));
 //        myDeviceInfo.deviceName="123456";
 
-        SPUtils.getInstance().put("deviceSecret2","e5e50e77141d3e54f8bebfc6d56469cb");//存
-//        SPUtils.getInstance().put("deviceSecret2","WMClVkIJipSunIY4fOSd2Be3xo42TfVs");//测试服
+        SPUtils.getInstance().put("deviceSecret2","11f2faa277c2bc1c5fa768a1e754f6c1");//存
+//        SPUtils.getInstance().put("deviceSecret2","9d489e8ec5feb8f79fd8f7e68cb7c10b");//测试服
         String secret = SPUtils.getInstance().getString("deviceSecret2");//读
 //        String secret ="WMClVkIJipSunIY4fOSd2Be3xo42TfVs";
         Log.i(TAG,"secret=="+secret);

+ 0 - 1
app/src/main/java/com/siwei/recyclebox/deviceUtils/BaseDeviceEntity.java

xqd
@@ -69,7 +69,6 @@ public abstract class BaseDeviceEntity {
         UsbDeviceConnection connection = usbManager.openDevice(port.getDriver().getDevice());
         port.open(connection);
         port.setParameters(getBaudRate(), getDataBits(), getStopBits(), getParity());//连接参数
-
         /*SerialInputOutputManager inputOutputManager = new SerialInputOutputManager(port, new SerialInputOutputManager.Listener() {
             @Override
             public void onNewData(byte[] data) {

+ 22 - 0
app/src/main/java/com/siwei/recyclebox/deviceUtils/ByteUtil.java

xqd
@@ -15,6 +15,28 @@ public class ByteUtil {
         return temp;
     }
 
+    /**
+     * 字节数组依次异或生成校验码
+     */
+    public static int getCRC(byte[] bytes) {
+        int CRC = 0x0000ffff;
+        int POLYNOMIAL = 0x0000a001;
+
+        int i, j;
+        for (i = 0; i < bytes.length; i++) {
+            CRC ^= ((int) bytes[i] & 0x000000ff);
+            for (j = 0; j < 8; j++) {
+                if ((CRC & 0x00000001) != 0) {
+                    CRC >>= 1;
+                    CRC ^= POLYNOMIAL;
+                } else {
+                    CRC >>= 1;
+                }
+            }
+        }
+        return CRC;
+    }
+
     public static String bytesToString(byte[] bytes){
         if (bytes == null) {
             return null;

+ 7 - 5
app/src/main/java/com/siwei/recyclebox/deviceUtils/ManyDevices.java

xqd xqd xqd
@@ -24,7 +24,9 @@ public class ManyDevices extends BaseDeviceEntity{
         try {
             Log.i(TAG,"openpush");
             //伸杆 66 后面 01代表杆 01伸 05代表时间1-60s  02 1C表示电流报警阈值 默认540
-            port.write(new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A,0x01,0x66,0x01, 0x01, 0x05, 0x02,0x1C, (byte) 0xCC, (byte) 0xDD},150);
+            //02 58调为600阈值,解决门重复开关问题
+            //03 20 -- 800阈值还是重复开关门
+            port.write(new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A,0x01,0x66,0x01, 0x01, 0x05, 0x03,0x20, (byte) 0xCC, (byte) 0xDD},150);
 //            port.write(new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A,0x01,0x66,0x01, 0x01, 0x05, 0x02,0x1C, (byte) 0xCC, (byte) 0xDD},150);//
 //            port.write(new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A,0x01,0x66,0x01, 0x02, 0x05, 0x02,0x1C, (byte) 0xCC, (byte) 0xDD},150);//
 //            Thread.sleep(100);
@@ -41,9 +43,9 @@ public class ManyDevices extends BaseDeviceEntity{
                     //    AA,BB,0A,01,55,03,01,FF,FF,FF,CC,DD 有障碍
 //                    controlPushOff();
                     //杆停止
-                    Log.i(TAG,"伸杆停止:1秒");
+                    Log.i(TAG,"伸杆停止:3秒");
                     port.write(new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A,0x01,0x66,0x01, 0x03, 0x05, 0x02,0x1C, (byte) 0xCC, (byte) 0xDD},150);
-                    Thread.sleep(1000);
+                    Thread.sleep(3000);
             }
 //                else if(ByteUtil.bytesToString(response)=="AA BB 0A 01 55 03 02 FF FF FF CC DD"){//红外线  02无障碍
 //                    //缩杆
@@ -71,9 +73,9 @@ public class ManyDevices extends BaseDeviceEntity{
                 Log.i(TAG,ByteUtil.bytesToString(response)+"len hongwaix:"+len);
                 if (ByteUtil.bytesToString(response)=="AA BB 0A 01 55 03 01 FF FF FF CC DD "){//红外线有障碍 03红外线  01 有障碍
                     //杆停止
-                    Log.i(TAG,"伸杆停止:1秒");
+                    Log.i(TAG,"伸杆停止:3秒");
                     port.write(new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A,0x01,0x66,0x01, 0x03, 0x05, 0x02,0x1C, (byte) 0xCC, (byte) 0xDD},150);
-                    Thread.sleep(1000);
+                    Thread.sleep(3000);
                 }
             }
 

+ 81 - 328
app/src/main/java/com/siwei/recyclebox/deviceUtils/OtherDevice.java

xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd
@@ -38,7 +38,6 @@ public class OtherDevice extends BaseDeviceEntity {
      */
     @Override
     int getBaudRate() {
-//        return 9600;
         return 115200;
     }
 
@@ -75,7 +74,7 @@ public class OtherDevice extends BaseDeviceEntity {
                 case 0x0A://电控锁
 
                     break;
-                case 0x01://距离/温度
+                case 0x0C://距离/温度
             }
         }
     }
@@ -142,7 +141,7 @@ public class OtherDevice extends BaseDeviceEntity {
     /*
     * 查询电流过大标志 00 没有 01 有
     * */
-    public Integer queryCurrent(){
+    public String queryCurrent(){
         try{
 //            AA BB 0A 01 55 05 FF FF FF FF CC DD  查询电流过大标志  回复00 没有 01 有
             port.write(new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A, 0x01, 0x55, 0x05, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD}, 150);//
@@ -150,16 +149,18 @@ public class OtherDevice extends BaseDeviceEntity {
             int readLen=port.read(response,200);
             if(readLen == 12&&response[5]==5){
                 Log.i(TAG,"电流过大返回值response[6]========"+response[6]);
-                return (int) response[6];
+                if (response[6] == 00){
+                    return "电流正常";
+                }else{
+                    return "电流过大";
+                }
             }
-//            MainViewModel.reportDeviceEvent("queryCurrent");
-            return 0;
+            return "查询失败";
         }catch (Exception e){
             e.printStackTrace();
 //            MainViewModel.reportDeviceEvent("queryCurrent");
-
             Log.e(TAG,"查询电流过大失败");
-            return 3;
+            return "查询失败";
         }
     }
 
@@ -210,23 +211,22 @@ public class OtherDevice extends BaseDeviceEntity {
     * */
     public void setPower(){
         try {
-//            byte[] setPower = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A, 0x01, 0x66, 0x0A, 0x02, 0x60, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-            byte[] setPower = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A, 0x01, 0x66, 0x0A, 0x02, 0x44, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-
+            byte[] setPower = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A, 0x01, 0x66, 0x0A, 0x02, (byte)0x8A, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};//650电流阈值
             port.write(setPower, 500);
             byte[] response = new byte[12];
             port.read(response,500);
-            Log.i(TAG,ByteUtil.bytesToString(response)+"设置电流");
+            Log.i(TAG,setPower[6]+setPower[7]+"设置电流");
         }catch(Exception e){
             e.printStackTrace();
         }
     }
 
+    /**
+     * 设置更大电流阈值
+     * */
     public void setPowerBigger(){
         try {
-//            byte[] setPower = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A, 0x01, 0x66, 0x0A, 0x02, 0x60, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-            byte[] setPower = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A, 0x01, 0x66, 0x0A, 0x03, 0x60, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-
+            byte[] setPower = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x0A, 0x01, 0x66, 0x0A, 0x03, 0x60, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};//864电流阈值
             port.write(setPower, 500);
             byte[] response = new byte[12];
             port.read(response,500);
@@ -242,6 +242,7 @@ public class OtherDevice extends BaseDeviceEntity {
             port.write(readPushOrderBytes, 100);
             byte[] responseRead = new byte[ 12];
             port.read(responseRead,200);
+            Log.i(TAG, "queryPower: "+ ByteUtil.bytesToString(responseRead));
             System.out.println("Read response:"+ByteUtil.bytesToString(responseRead));
         }catch (Exception e){
             e.printStackTrace();
@@ -282,6 +283,7 @@ public class OtherDevice extends BaseDeviceEntity {
                                 System.out.println("pushRead response:"+ByteUtil.bytesToString(responseRead));
                             } catch (IOException e) {
                                 e.printStackTrace();
+
                             }
                         }
                     },1000);
@@ -399,7 +401,7 @@ public class OtherDevice extends BaseDeviceEntity {
             getLockOpenNumber();
             Log.i(TAG,ByteUtil.bytesToString(response)+"开收运门");
             if(response[4]==102&&response[5]==2&&response[6]==1){
-                return 1;
+                return 0;
             }else {
                 return 0;
             }
@@ -440,76 +442,70 @@ public class OtherDevice extends BaseDeviceEntity {
      * 距离
      * @return
      */
-//    public  Integer getDistance(){
-//        try {
-////            byte[] bytes = new byte[]{(byte)0xAA ,(byte)0xBB ,(byte)0x0C ,(byte)0x01 ,(byte)0x55 ,(byte)0x01 ,(byte)0xFF ,(byte)0xFF,(byte)0xFF ,(byte)0xFF ,(byte)0xCC ,(byte)0xDD};
-//            //新超声波 01 03 01 02 00 01 24 36
-//            byte[] bytes = new byte[]{(byte)0xAA ,(byte)0xBB ,(byte)0x01 ,(byte)0x03 ,(byte)0x01 ,(byte)0x02 ,(byte)0x00 ,(byte)0x01,(byte)0x24 ,(byte)0x36 ,(byte)0xCC ,(byte)0xDD};
-////            byte[] bytes = new byte[]{(byte)0x01 ,(byte)0x03 ,(byte)0x01 ,(byte)0x02 ,(byte)0x00 ,(byte)0x01 ,(byte)0x24 ,(byte)0x36};
-//            port.write(bytes,100);
-//            byte[] response = new byte[12];
-//            int len = port.read(response,100);
-//            Log.i(TAG,ByteUtil.bytesToString(response)+len+"距离");
-//            for (int i:response) {
-//                Log.i("超声波", ""+response[i]);
-//            }
-//            Log.i("超声波", ""+response.toString());
-//            byte[] disBytes = new byte[4];
-//            disBytes[2] = response[3];
-//            disBytes[3] = response[4];
-//            Log.i(TAG,ByteUtil.bytesToString(disBytes)+"juli");
-//            int disInt = ByteUtil.bytes2Int(disBytes);
-//            if(response[4]==85&&response[5]==1){
-//                return disInt;
-//            }else {
-//                SPUtils.getInstance().put("RunningState",5);
-//                MainViewModel.SendSmsResponse("温度超声波失灵");
-//                return 0;
-//            }
-//        }catch ( Exception e ){
-//            e.printStackTrace();
-//            SPUtils.getInstance().put("RunningState",1);
-//            MainViewModel.SendSmsResponse("其他设备未检测到");
-//            return 0;
-//        }
-//    }
-//    /**
-//     * 温度
-//     * @return
-//     */
-//    public Integer geTemperature(){//获取温度
-//        try{
-//            byte[] bytes = new byte[]{(byte)0xAA ,(byte)0xBB ,(byte)0x0C ,(byte)0x01 ,(byte)0x55 ,(byte)0x02 ,(byte)0xFF ,(byte)0xFF,(byte)0xFF ,(byte)0xFF ,(byte)0xCC ,(byte)0xDD};
-//            port.write(bytes,200);
-//            byte[] response=new byte[12];
-//            int len=port.read(response,200);
-//            Log.i(TAG,ByteUtil.bytesToString(response)+len+"温度"+response[4]+response[5]);
-//            byte[] temBytes=new byte[4];
-////            temBytes[2]=response[5];
-//            temBytes[3]=response[6];
-//            Integer temInt=ByteUtil.bytes2Int(temBytes);
-////            double temDouble=0;
-////            if(temInt<65536){
-////                temDouble=temInt/10;
-////                return temDouble;
-////            }
-////            temDouble=-(temInt-65536)/10;
-////            return temDouble;
-//            if(response[4]==85&&response[5]==2){
-//                return temInt;
-//            }else {
-//                SPUtils.getInstance().put("RunningState",5);
-//                MainViewModel.SendSmsResponse("温度超声波失灵");
-//                return 0;
+    public  Integer getDistance(){
+        try {
+            byte[] bytes = new byte[]{(byte)0xAA ,(byte)0xBB ,(byte)0x0C ,(byte)0x01 ,(byte)0x55 ,(byte)0x01 ,(byte)0xFF ,(byte)0xFF,(byte)0xFF ,(byte)0xFF ,(byte)0xCC ,(byte)0xDD};
+            port.write(bytes,100);
+            byte[] response = new byte[12];
+            int len = port.read(response,100);
+            Log.i(TAG,ByteUtil.bytesToString(response)+len+"距离");
+            byte[] disBytes = new byte[4];
+            disBytes[2] = response[6];
+            disBytes[3] = response[7];
+            Log.i(TAG,ByteUtil.bytesToString(disBytes)+"juli");
+            int disInt = ByteUtil.bytes2Int(disBytes);
+            if(response[4]==85&&response[5]==1){
+                return disInt;
+            }else {
+                SPUtils.getInstance().put("RunningState",5);
+                MainViewModel.SendSmsResponse("温度超声波失灵");
+                return 0;
+            }
+        }catch ( Exception e ){
+            e.printStackTrace();
+            SPUtils.getInstance().put("RunningState",1);
+            MainViewModel.SendSmsResponse("其他设备未检测到");
+            return 0;
+        }
+    }
+    /**
+     * 温度
+     * @return
+     */
+    public Integer geTemperature(){//获取温度
+        try{
+            byte[] bytes = new byte[]{(byte)0xAA ,(byte)0xBB ,(byte)0x0C ,(byte)0x01 ,(byte)0x55 ,(byte)0x02 ,(byte)0xFF ,(byte)0xFF,(byte)0xFF ,(byte)0xFF ,(byte)0xCC ,(byte)0xDD};
+            port.write(bytes,200);
+            byte[] response=new byte[12];
+            int len=port.read(response,200);
+            Log.i(TAG, "读到的数组"+len);
+            Log.i(TAG,ByteUtil.bytesToString(response)+len+"温度"+response[4]+response[5]);
+            byte[] temBytes=new byte[4];
+//            temBytes[2]=response[5];
+            temBytes[3]=response[6];
+            Integer temInt=ByteUtil.bytes2Int(temBytes);
+//            double temDouble=0;
+//            if(temInt<65536){
+//                temDouble=temInt/10;
+//                return temDouble;
 //            }
-//        }catch ( Exception e ){
-//            e.printStackTrace();
-//            SPUtils.getInstance().put("RunningState",1);
-//            MainViewModel.SendSmsResponse("其他设备未检测到");
-//            Log.i(TAG,"测温度失败");
-//            return 0;
-//        }
-//    }
+//            temDouble=-(temInt-65536)/10;
+//            return temDouble;
+            if(response[4]==85&&response[5]==2){
+                return temInt;
+            }else {
+                SPUtils.getInstance().put("RunningState",5);
+                MainViewModel.SendSmsResponse("温度超声波失灵");
+                return 0;
+            }
+        }catch ( Exception e ){
+            e.printStackTrace();
+            SPUtils.getInstance().put("RunningState",1);
+            MainViewModel.SendSmsResponse("其他设备未检测到");
+            Log.i(TAG,"测温度失败");
+            return 0;
+        }
+    }
     /*
      * 开灯关灯
      * */
@@ -611,247 +607,4 @@ public class OtherDevice extends BaseDeviceEntity {
         }
     }
 
-    /*
-    * 称重
-    * *//*
-    public Integer readWeight(){
-        try{
-//            主机发送 : AA BB 0B 01 55 FF FF FF FF FF CC DD
-//            设备回复: AA BB 0B 01 55 00 00 C9 FF FF CC DD
-//            00 00 C9 为数据
-            byte[] bytes=new byte[]{(byte) 0xAA, (byte) 0xBB,0x0B,0x01,0x55,(byte) 0xFF,(byte) 0xFF,(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-            port.write(bytes,200);
-            byte[] response=new byte[12];
-            int len=port.read(response,200);
-            Log.i(TAG,"返回称重"+ByteUtil.bytesToString(response));
-            if(response[4]==85) {
-                byte[] weightBytes = new byte[4];
-                weightBytes[1] = response[5];
-                weightBytes[2] = response[6];
-                weightBytes[3] = response[7];
-                int weightInt = ByteUtil.bytes2Int(weightBytes);
-                Log.i(TAG,"称重数为:"+weightInt);
-                if(weightInt>=16711680){
-                    weightInt=0;
-                }
-                return weightInt;
-            }else {
-                SPUtils.getInstance().put("RunningState",4);
-                MainViewModel.SendSmsResponse("readWeight称重失灵");
-                return 0;
-            }
-        }catch(Exception e){
-            SPUtils.getInstance().put("RunningState",1);
-            MainViewModel.SendSmsResponse("其他设备未检测到");
-            e.printStackTrace();
-            Log.i(TAG,"称重失败");
-            return 0;
-        }
-    }
-    *//*校准流程:1.设置分度值 2.去皮 3.零度校准 4.放砝码5.砝码校准*//*
-    *//*
-    * 设置分度值(几克起跳 精度)
-    * *//*
-    public void setScale(){
-//        主机发送 : AA BB 0B 01 66 01 61 XX FF FF CC DD   XX是分度值 只能是10 20 50 A0 分别是1g 2g 5g 和10g  (常规:100kg 误差10g ;200kg误差20g )
-//        设备回复:  AA BB 0B 01 66 01 61 00 60 FF CC DD
-        try{
-            byte[] bytes=new byte[]{(byte) 0xAA,0x0B ,0x01 ,0x66 ,0x01 ,0x61 ,0x10 , (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-            port.write(bytes,200);
-            byte[] response=new byte[12];
-            port.read(response,200);
-            Log.i(TAG,"返回设置刻度"+ByteUtil.bytesToString(response));
-            if(response[8]==96){
-                Log.i(TAG,"设置分度成功");
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            Log.i(TAG,"设置刻度失败");
-        }
-
-    }
-
-    *//*
-    * 称重清零去皮
-    * *//*
-    public void clearWeight(){
-//        主机发送 : AA BB 0B 01 66 01 62 63 FF FF CC DD
-//        设备回复:  AA BB 0B 01 66 01 62 00 63 FF CC DD
-        try{
-            byte[] bytes=new byte[]{(byte) 0xAA, (byte) 0xBB,0x0B,0x01,0x66,0x01,0x62,0x63, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-            port.write(bytes,200);
-            byte[] response=new byte[12];
-            port.read(response,200);
-            Log.i(TAG,"返回清零"+ByteUtil.bytesToString(response));
-            if(response[8]==99){
-                Log.i(TAG,"称重清零成功");
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            Log.i(TAG,"称重清零去皮失败");
-        }
-    }
-
-    *//*
-    * 零度校准
-    * *//*
-    public void zeroCalibration(){
-//        主机发送 : AA BB 0B 01 66 01 64 65 FF FF CC DD
-//        设备回复: AA BB 0B 01 66 01 64 00 65 FF CC DD
-        try{
-            byte[] bytes=new byte[]{(byte) 0xAA, (byte) 0xBB,0x0B,01,66,01,64,65, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};
-            port.write(bytes,200);
-            byte[] response=new byte[12];
-            port.read(response,200);
-            Log.i(TAG,"返回零度校准"+ByteUtil.bytesToString(response));
-            if (response[8]==101){
-                Log.i(TAG,"零度校准成功");
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            Log.i(TAG,"零度校准失败");
-        }
-    }
-
-    *//*
-    * 砝码校准
-    * *//*
-    public void weightCalibration(){
-        try{
-//            主机发送 : AA BB 0B 01 66 01 65 XX XX FF CC DD  XX是校准的砝码 只能是单位g 防8kg 就是8000g 十六进制就是1F40
-//            设备回复:  AA BB 0B 01 66 01 65 00 64 FF CC DD
-            byte[] bytes=new byte[]{(byte) 0xAA, (byte) 0xBB,0x0B ,0x01 ,0x66 ,0x01 ,0x65 ,0x00 ,0x64 , (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};//64  100g
-//            byte[] bytes=new byte[]{(byte) 0xAA, (byte) 0xBB,0x0B ,0x01 ,0x66 ,0x01 ,0x65 ,0x27 ,0x10 , (byte) 0xFF, (byte) 0xCC, (byte) 0xDD};//2710 10000g
-            port.write(bytes,200);
-            byte[] response=new byte[12];
-            port.read(response,200);
-            Log.i(TAG,"返回砝码校准"+ByteUtil.bytesToString(response));
-            if(response[8]==100){
-                Log.i(TAG,"砝码校准成功");
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            Log.i(TAG,"砝码校准失败");
-        }
-    }
-*/
-    public synchronized Integer readWeight(){
-        try {
-//            SPUtils.getInstance().put("RunningState","0");//1F 03 00 2A 00 01 A6 7C
-            port.write(new byte[]{0x1F, 0x03, 0x00, 0x2A,0x00, 0x01, (byte) 0xA6, 0x7C},150);//称重器读取数值的请求
-//            port.write(new byte[]{(byte) 0xAA, (byte) 0xBB,0x0C ,0x01 ,0x55 , (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD},150);//称重器读取数值的请求
-//            port.write(new byte[]{(byte) 0xAA, (byte) 0xBB,0x0C ,0x02 ,0x55 , (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xCC, (byte) 0xDD},150);//超声波读取数值的请求
-//            Thread.sleep(100);
-            byte[] response = new byte[7];
-            port.read(response,200);
-            Log.i(TAG,"返回称重"+ByteUtil.bytesToString(response));
-
-            if(response[1]==3) {
-                long curTimeMiles = System.currentTimeMillis();
-                int num=0,a=0;
-                while (System.currentTimeMillis()-curTimeMiles<200){
-                    port.read(response,10);
-                    byte[] weightBytes = new byte[4];
-                    weightBytes[2] = response[3];
-                    weightBytes[3] = response[4];
-                    int weightInt = ByteUtil.bytes2Int(weightBytes);
-//                    weightInt=weightInt*5*2;
-                    num += (weightInt * 5 * 2);
-                    a++;
-                    Log.i("while","********"+a);
-                }
-                Log.i("num",num+"****"+a+"");
-                byte[] weightBytes = new byte[4];
-                weightBytes[2] = response[3];
-                weightBytes[3] = response[4];
-                int weightInt = ByteUtil.bytes2Int(weightBytes);
-                weightInt=weightInt*5*2;
-                System.out.println("称重读数:"+weightInt);
-                int weightNumber=num/a++;
-                if(weightInt>=327670){
-                    weightNumber=0;
-                }
-                return (int) weightNumber;
-            }else {
-                Log.i("返回称重","错误");
-                SPUtils.getInstance().put("RunningState",1);
-                MainViewModel.SendSmsResponse("readWeight称重失灵");
-                return 1;
-            }
-//            int readLen = port.read(response,200);
-//            System.out.println("readweight len:"+readLen+"  bytes;"+ByteUtil.bytesToString(response));
-
-//            return 1;
-//
-        }catch ( Exception e ){
-            e.printStackTrace();
-            SPUtils.getInstance().put("RunningState",1);
-            MainViewModel.SendSmsResponse("readWeight称重设备未检测到");
-
-            Log.e(TAG,"读取称重器读数错误",e);
-            return 1;
-        }
-
-    }
-  /*  *
-     * 读数清零
-     */
-    public synchronized void weightClear(){
-        byte[] cleanOrderBytes = new byte[]{0x1F,0x06 ,0x00 ,0x24,0x00 ,0x00, (byte) 0xCA,0x7F};
-        System.out.println("称重器读数清零!!!!!");
-        try {
-            port.write(cleanOrderBytes,150);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-     /** 设置分度值
-     * */
-    public synchronized void setScale(){
-        byte[] cleanOrderBytes = new byte[]{0x1F, 0x06 ,0x00 ,0x04 ,0x00 ,0x01 ,0x0A ,0x75};
-        try {
-            port.write(cleanOrderBytes,150);
-            Log.i(TAG,"设置分度值");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-   /*  * 空载
-     * */
-    public synchronized void zeroCalibration(){
-        byte[] cleanOrderBytes = new byte[]{0x1F ,0x10 ,0x00 ,0x08 ,0x00 ,0x02 ,0x04 ,0x00 ,0x00 ,0x00 ,0x00 , (byte) 0x92,0x21 };
-        try {
-            port.write(cleanOrderBytes,150);
-            Log.i(TAG,"空载");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /* * 量程设定
-     * */
-    public synchronized void weightSet(){
-        byte[] cleanOrderBytes = new byte[]{0x1F ,0x10 ,0x00 ,0x00 ,0x00 ,0x02 ,0x04 , 0x27, 0x10,0x00 ,0x00 , (byte) 0x98, (byte) 0xF6};
-        try {
-            port.write(cleanOrderBytes,150);
-
-            Log.i(TAG,"l量程设定");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-     /** 砝码校准
-     * */
-    public synchronized void weightCalibration(){
-        byte[] cleanOrderBytes = new byte[]{0x1F ,0x10 ,0x00 ,0x10 ,0x00 ,0x02 ,0x04 ,0x27 ,0x10 ,0x00 ,0x00, (byte) 0x96, (byte) 0xE4};
-        try {
-            port.write(cleanOrderBytes,150);
-            Log.i(TAG,"砝码校准kg");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
 }

+ 56 - 104
app/src/main/java/com/siwei/recyclebox/deviceUtils/SerialPortUtil.java

xqd xqd xqd xqd xqd xqd xqd xqd xqd
@@ -26,19 +26,17 @@ import me.goldze.mvvmhabit.utils.SPUtils;
  * 串口读写工具。
  */
 public class SerialPortUtil {
-    private Context mContext;
+    private Context mContext ;
 
 
     private static final String TAG = "SerialPortUtil";
     private static final String INTENT_ACTION_GRANT_USB = "com.siwei.recyclebox.GRANT_USB";
-
-    private SerialPortUtil() {
+    private SerialPortUtil(){
     }
-
     private static SerialPortUtil instance;
 
-    public static SerialPortUtil getInstance() {
-        if (instance == null) {
+    public static SerialPortUtil getInstance(){
+        if(instance == null){
             instance = new SerialPortUtil();
         }
         return instance;
@@ -48,31 +46,26 @@ public class SerialPortUtil {
     private List<UsbSerialPort> availablePorts = new ArrayList<>();
 
     private List<BaseDeviceEntity> deviceList = new ArrayList<>();
-
-    public void init(Context context) {
+    public void init(Context context){
         mContext = context;
         mUsbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
-        boolean addWeight = true;
-        boolean addOther = true;
-        boolean addUltasonic = true;
 
         final List<UsbSerialDriver> drivers =
                 UsbSerialProber.getDefaultProber().findAllDrivers(mUsbManager);
-        Log.i("drivers=====", drivers.toString());
+        Log.i("drivers=====",drivers.toString());
 
         for (final UsbSerialDriver driver : drivers) {
-            System.out.println("SerialPortUtil:" + driver.toString());
-            System.out.println("device:" + driver.getDevice().toString());
-            UsbSerialPort port = driver.getPorts().get(0);
-            if (driver instanceof Ch34xSerialDriver) {
-                BaseDeviceEntity weightDevice = isWeightDevice(driver);
-                if (weightDevice != null && addWeight) {
-                    addWeight = false;
-                    SPUtils.getInstance().put("RunningState", 1);
-                    Log.i(TAG, "添加称重设备");
-                    deviceList.add(weightDevice);
-                    continue;
-                }
+                   System.out.println("SerialPortUtil:"+driver.toString());
+                   System.out.println("device:"+driver.getDevice().toString());
+                   UsbSerialPort port = driver.getPorts().get(0);
+                   if (driver instanceof Ch34xSerialDriver){
+                       BaseDeviceEntity weightDevice= isWeightDevice(driver);
+                       if( weightDevice!= null){
+                           SPUtils.getInstance().put("RunningState",1);
+                           System.out.println("是称重设备");
+                           deviceList.add(weightDevice);
+                           continue;
+                       }
 //               else{
 //                   try {
 //                       SPUtils.getInstance().put("RunningState","1");
@@ -81,27 +74,15 @@ public class SerialPortUtil {
 //                       ex.printStackTrace();
 //                   }
 //               }
-                BaseDeviceEntity otherDevicde = isOtherDevice(driver);
-                if (otherDevicde != null && addOther) {
-                    addOther = false;
-                    System.out.println("是otherDevice");
-                    Log.i(TAG, "添加其他设备");
-
-                    deviceList.add(otherDevicde);
-//                   SerialPortUtil.getInstance().getOtherDevice().setPower();//设置电量阈值
-                    continue;
-                }
-
-                BaseDeviceEntity ultrasonicDevice = isultrasonicDevice(driver);
-                if (ultrasonicDevice != null && addUltasonic) {
-                    addUltasonic = false;
-                    deviceList.add(ultrasonicDevice);
-                    Log.i(TAG, "添加超声波设备");
-                    continue;
-                }
+               BaseDeviceEntity otherDevicde = isOtherDevice(driver);
+               if(otherDevicde != null ){
+                   System.out.println("是otherDevice");
+                   deviceList.add(otherDevicde);
+                   SerialPortUtil.getInstance().getOtherDevice().setPower();//设置电量阈值
+               }
 //               else {
 //                   try {
-//                       WarnActivity.SendSmsResponse("杆、门磁、锁、、红外、超声波设备未检测到");
+//                       WarnActivity.SendSmsResponse("杆、门磁、锁、温度、红外、超声波设备未检测到");
 //                   } catch (ClientException ex) {
 //                       ex.printStackTrace();
 //                   }
@@ -110,9 +91,9 @@ public class SerialPortUtil {
 
 //               deviceList.add(new PushRodDevice(mUsbManager,driver));
 //               deviceList.add(new WeightDevice(mUsbManager,driver));
-            } else if (driver instanceof ProlificSerialDriver) {
-                deviceList.add(new RelayControllerDevice(mUsbManager, driver));
-            }
+           }else if(driver instanceof ProlificSerialDriver){
+               deviceList.add(new RelayControllerDevice(mUsbManager,driver));
+           }
 /*
             final List<UsbSerialPort> ports = driver.getPorts();
             UsbDevice device= driver.getDevice();
@@ -132,7 +113,7 @@ public class SerialPortUtil {
         BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
             @Override
             public void onReceive(Context context, Intent intent) {
-                if (intent.getAction().equals(INTENT_ACTION_GRANT_USB)) {
+                if(intent.getAction().equals(INTENT_ACTION_GRANT_USB)) {
                     if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                         System.out.println("granted extra permission");
 //                        writeAndReadPort(port);
@@ -147,30 +128,30 @@ public class SerialPortUtil {
         mContext.registerReceiver(mUsbReceiver, new IntentFilter(INTENT_ACTION_GRANT_USB));
 
         System.out.println("ports size:" + availablePorts.size());
-        if (availablePorts.size() == 0) {
-            Log.e(TAG, "没有RS232 或 RS485 设备");
+        if(availablePorts.size() == 0) {
+            Log.e(TAG,"没有RS232 或 RS485 设备");
             return;
         }
         PendingIntent usbPermissionIntent = PendingIntent.getBroadcast(context, 12, new Intent(INTENT_ACTION_GRANT_USB), 0);
-        for (UsbSerialPort port : availablePorts) {
-            if (!mUsbManager.hasPermission(port.getDriver().getDevice())) {
-                mUsbManager.requestPermission(port.getDriver().getDevice(), usbPermissionIntent);
+        for(UsbSerialPort port: availablePorts){
+            if(!mUsbManager.hasPermission(port.getDriver().getDevice())){
+                mUsbManager.requestPermission(port.getDriver().getDevice(),usbPermissionIntent);
             }
         }
     }
 
 
-    public WeightDevice getWeightDevice() {
-        for (BaseDeviceEntity deviceEntity : deviceList) {
-            if (deviceEntity instanceof WeightDevice)//用来测试一个对象是否为一个类的实例
+    public WeightDevice getWeightDevice(){
+        for(BaseDeviceEntity deviceEntity  : deviceList){
+            if(deviceEntity instanceof WeightDevice)//用来测试一个对象是否为一个类的实例
                 return (WeightDevice) deviceEntity;
         }
         return null;
     }
 
-    public PushRodDevice getPushRodDevice() {
-        for (BaseDeviceEntity deviceEntity : deviceList) {
-            if (deviceEntity instanceof PushRodDevice) {
+    public PushRodDevice getPushRodDevice(){
+        for(BaseDeviceEntity deviceEntity : deviceList){
+            if(deviceEntity instanceof PushRodDevice){
                 return (PushRodDevice) deviceEntity;
             }
 
@@ -178,31 +159,18 @@ public class SerialPortUtil {
         return null;
     }
 
-    //超声波
-    public UltrasonicDevice getUltrasonicDevice() {
-        for (BaseDeviceEntity deviceEntity : deviceList) {
-            Log.i(TAG, "getUltrasonicDevice: " + deviceEntity);
-            if (deviceEntity instanceof UltrasonicDevice) {
-                return (UltrasonicDevice) deviceEntity;
-            }
-
-        }
-        return null;
-    }
-
-
-    public RelayControllerDevice getRelayControllerDevive() {
-        for (BaseDeviceEntity deviceEntity : deviceList) {
-            if (deviceEntity instanceof RelayControllerDevice) {
+    public RelayControllerDevice getRelayControllerDevive(){
+        for(BaseDeviceEntity deviceEntity : deviceList){
+            if(deviceEntity instanceof RelayControllerDevice){
                 return (RelayControllerDevice) deviceEntity;
             }
         }
         return null;
     }
 
-    public OtherDevice getOtherDevice() {
-        for (BaseDeviceEntity deviceEntity : deviceList) {
-            if (deviceEntity instanceof OtherDevice) {
+    public OtherDevice getOtherDevice(){
+        for(BaseDeviceEntity deviceEntity : deviceList ){
+            if(deviceEntity instanceof OtherDevice){
                 return (OtherDevice) deviceEntity;
             }
         }
@@ -210,14 +178,14 @@ public class SerialPortUtil {
     }
 
 
-    private BaseDeviceEntity isOtherDevice(UsbSerialDriver driver) {
-        OtherDevice otherDevice = new OtherDevice(mUsbManager, driver);
-        Integer infrared = otherDevice.openLock();
+    private BaseDeviceEntity isOtherDevice( UsbSerialDriver driver ){
+        OtherDevice otherDevice = new OtherDevice(mUsbManager,driver);
+        Integer infrared = otherDevice.queryInfrared();
 //        Integer  magDoor = otherDevice.queryMagDoor();
-        Log.i("otherDevice", "---------------------------------------");
-        if (infrared == 0) {
+        Log.i("otherDevice","---------------------------------------");
+        if(infrared == 0) {
             otherDevice.close();
-            Log.i("otherDevice", "==null");
+            Log.i("otherDevice","==null");
             return null;
         }
 //        if(magDoor == 3) {
@@ -228,28 +196,12 @@ public class SerialPortUtil {
         return otherDevice;
     }
 
-    //超声波
-    private BaseDeviceEntity isultrasonicDevice(UsbSerialDriver driver) {
-        UltrasonicDevice ultrasonicDevice = new UltrasonicDevice(mUsbManager, driver);
-        Integer infrared = ultrasonicDevice.ultRead();
-        if (infrared == 0) {
-            ultrasonicDevice.close();
-            return null;
-        }
-//        if(magDoor == 3) {
-//            otherDevice.close();
-//            Log.i("otherDevice","==null");
-//            return null;
-//        }
-        return ultrasonicDevice;
-    }
-
-    private BaseDeviceEntity isWeightDevice(UsbSerialDriver driver) {
-        WeightDevice weightDevice = new WeightDevice(mUsbManager, driver);
+    private BaseDeviceEntity isWeightDevice(UsbSerialDriver driver){
+        WeightDevice weightDevice = new WeightDevice(mUsbManager,driver);
         Integer weight = weightDevice.readIsWeight();
-        Log.i("weightDevice", "---------------------------------------");
-        if (weight == 1) {
-            Log.i("weightDevice", "==NULL");
+        Log.i("weightDevice","---------------------------------------");
+        if(weight== 1){
+            Log.i("weightDevice","==NULL");
             weightDevice.close();
             return null;
         }

+ 3 - 5
app/src/main/java/com/siwei/recyclebox/deviceUtils/WeightDevice.java

xqd
@@ -203,12 +203,10 @@ public class WeightDevice extends BaseDeviceEntity {
     /*
      * 量程设定
      * */
-    public synchronized void weightSet(){//1F 10 00 00 00 02 04 27 10 00 00 98 F6
-        byte[] cleanOrderBytes = new byte[]{0x1F ,0x10 ,0x00 ,0x00 ,0x00 ,0x02 ,0x04 , 0x27, 0x10,0x00 ,0x00 , (byte) 0x98, (byte) 0xF6};
-//        byte[] cleanOrderBytes = new byte[]{0x1F ,0x10 ,0x00 ,0x00 ,0x00 ,0x02 ,0x04 , 0x4E, 0x20,0x00 ,0x00 , (byte) 0x98, (byte) 0xF6};
-
+    public synchronized void weightSet(){//1F 10 00 x00 ,0x02 ,0x04 , 0x27, 0x10,0x00 ,0x00 , (byte) 0x98, (byte) 0xF6};
+        byte[] cleanOrderBytes = new byte[]{0x1F ,0x10 ,0x00 ,0x00 ,0x00 ,0x02 ,0x04 , 0x27, 0x20,0x00 ,0x00 , (byte) 0x98, (byte) 0xF6};
         try {
-            port.write(cleanOrderBytes,150);
+            port.write(cleanOrderBytes,150);//00 00 02 04 27 10 00 00 98 F6
             byte[] response=new byte[8];
             port.read(response,200);
             Log.i(TAG,"l0000量程设定:"+ByteUtil.bytesToString(response));

+ 197 - 0
app/src/main/java/com/siwei/recyclebox/rs485/ComUltrasonic.java

xqd
@@ -0,0 +1,197 @@
+package com.siwei.recyclebox.rs485;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.siwei.recyclebox.deviceUtils.ByteUtil;
+
+import java.io.IOException;
+
+import tp.xmaihh.serialport.SerialHelper;
+import tp.xmaihh.serialport.bean.ComBean;
+
+/**
+ * *************
+ * 项目名称ai-garbage-box18
+ * com.siwei.recyclebox.rs485
+ * 2020/12/1015:45
+ */
+public class ComUltrasonic {
+
+    private static ComUltrasonic instance;
+    private SerialHelper mHelper;
+    boolean receivingData = false;    //接收数据
+    private byte[] readArray;    //接收数据的数组
+    /**
+     *     * 超声波的配置
+     *     * 厂家 电应普
+     *     * baudRate: 波特率    9600
+     *     * dataBits: 数据位    8         UsbSerialPort.DATABITS_8
+     *     * stopBits: 停止位    1         UsbSerialPort.STOPBITS_1
+     *     * parity:   校验位    无校验    UsbSerialPort.PARITY_NONE
+     *     * vendorId: 供应商ID  6790
+     *     * onDataReceived:  接口提供的数据监听,不知道怎么用
+     *    
+     */
+    private final String TAG = "COM口";
+    public static String port = "";
+    private static final int btl = 9600;//波特率
+    private static final int jyw = 0;//无校验
+    private static final int sjw = 8;//校验位
+    private static final int tzw = 1;//停止位
+    private static final int lk = 0;//流控
+
+    /**
+     * 单例模式
+     *
+     * @return
+     * @author ltb
+     * @date 2020/12/08 18:02
+     */
+    public static ComUltrasonic getInstance() {
+        if (instance == null) {
+            instance = new ComUltrasonic();
+        }
+        return instance;
+    }
+
+
+    /**
+     * 连接称并配置
+     *
+     * @return
+     * @author ltb
+     * @date 2020/12/08 18:18
+     */
+    public void init() {
+        //实例化SerialHelper对象,放入串口号和波特率
+        mHelper = new SerialHelper(port, btl) {
+            //监听传回数据
+            @Override
+            protected void onDataReceived(ComBean paramComBean) {
+                if (receivingData) {
+                    readArray = paramComBean.bRec;
+                }
+            }
+        };
+        //开始连接串口
+        try {
+            mHelper.setPort(port);
+            mHelper.setBaudRate(btl);
+            mHelper.setStopBits(tzw);  //设置停止位
+            mHelper.setDataBits(sjw);  //设置数据位
+            mHelper.setParity(jyw);      //设置校验位
+            mHelper.setFlowCon(lk);    //设置流控
+            mHelper.open();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public int readDistance() {
+        Log.i(TAG, "readDistance: 给" + port + "发信息");
+        mHelper.sendHex("0103010200012436");//发送指令
+        //发送数据后开始可以执行监听
+        receivingData = true;
+        int bytes1 = 0;
+        //堵塞监听
+        for (int times = 0; times < 10; times++) {
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+                bytes1 = -4;
+                Log.d(TAG, "readDistance: 不是吧阿sir,休眠也能报错");
+            }
+            if (readArray != null) {
+                //用bytes接收数据
+                Log.i(TAG, "readDistance: " + ByteUtil.bytesToString(readArray));
+                Log.i(TAG, "readDistance: 校验码" + ByteUtil.getCRC(readArray));
+                if (readArray[1] == 3 && ByteUtil.getCRC(readArray) == 0 && readArray[0] == 1) {
+                    byte[] weightBytes = new byte[4];
+                    weightBytes[2] = readArray[3];
+                    weightBytes[3] = readArray[4];
+                    bytes1 = ByteUtil.bytes2Int(weightBytes);
+                    Log.i(TAG, "readDistance: 读到了,距离为" + bytes1);
+                    readArray = null;
+                    receivingData = false;
+
+                    return bytes1;
+
+                } else {
+                    mHelper.sendHex("0103010200012436");//发送指令
+                    bytes1 = -3;
+                    Log.i(TAG, "readWeight: 数据验证错误,重新发送");
+                    readArray = null;
+                    continue;
+                }
+            } else {
+                mHelper.sendHex("0103010200012436");//发送指令
+                bytes1 = -3;
+                Log.i(TAG, "readWeight: 收不到数据,重新发送");
+            }
+        }
+
+
+        readArray = null;
+        receivingData = false;
+        return bytes1;
+//
+//        mHelper.sendHex("0103010200012436");//发送指令
+//        //发送数据后开始可以执行监听
+//        receivingData = true;
+//        int bytes1 = 0;
+//
+//        while (true) {
+//            //堵塞监听
+//            for (int times = 0; times < 2; times++) {
+//                mHelper.sendHex("0103010200012436");//发送指令
+//                try {
+//                    Thread.sleep(200);
+//                } catch (InterruptedException e) {
+//                    e.printStackTrace();
+//                    bytes1 = -4;
+//                    Log.d(TAG, "readDistance: 不是吧阿sir,休眠也能报错");
+//                }
+//                Log.d(TAG, port + "    readDistance: 第" + times + "次查询");
+//                if (readArray != null) {
+//                    //用bytes接收数据
+//                    Log.i(TAG, "readDistance: " + ByteUtil.bytesToString(readArray));
+//                    Log.i(TAG, "readDistance: 校验码" + ByteUtil.getCRC(readArray));
+//                    if (readArray[1] == 3 && ByteUtil.getCRC(readArray) == 0) {
+//                        byte[] weightBytes = new byte[4];
+//                        weightBytes[2] = readArray[3];
+//                        weightBytes[3] = readArray[4];
+//
+//                            bytes1 = ByteUtil.bytes2Int(weightBytes);
+//                            Log.i(TAG, "readDistance: 读到了,距离为" + bytes1);
+//                        readArray = null;
+//                        receivingData = false;
+//                            return bytes1;
+//
+//                    }
+//                }
+//            }
+//            break;
+//        }
+//        readArray = null;
+//        receivingData = false;
+//        return -3;
+
+    }
+
+
+    /**
+     * 关闭端口,必须要关闭串口状态下
+     *
+     * @return
+     * @author ltb
+     * @date 2020/12/09 13:20
+     */
+    public void close() {
+        if (mHelper.isOpen()) {
+            mHelper.close();
+        }
+    }
+
+}

+ 324 - 0
app/src/main/java/com/siwei/recyclebox/rs485/ComWeight.java

xqd
@@ -0,0 +1,324 @@
+package com.siwei.recyclebox.rs485;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.siwei.recyclebox.deviceUtils.ByteUtil;
+
+import java.io.IOException;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import tp.xmaihh.serialport.SerialHelper;
+import tp.xmaihh.serialport.bean.ComBean;
+
+/**
+ * *************
+ * 项目名称ai-garbage-box18
+ * com.siwei.recyclebox.rs485
+ * 2020/12/0818:00
+ */
+public class ComWeight {
+    private static ComWeight instance;
+    private SerialHelper mHelper;
+    boolean receivingData = false;    //接收数据
+    private  byte[] readWeightArray;    //接收称重数据的数组
+    public int num = 0;
+    /**
+     * 称的配置
+     * 厂家 深圳博途
+     * baudRate: 波特率    19200
+     * dataBits: 数据位    8         UsbSerialPort.DATABITS_8
+     * stopBits: 停止位    1         UsbSerialPort.STOPBITS_1
+     * parity:   校验位    偶校验    UsbSerialPort.PARITY_EVEN
+     * vendorId: 供应商ID  6790
+     * onDataReceived:  接口提供的数据监听,不知道怎么用
+     */
+    private final String TAG = "COM口";
+    public static String port = "";
+    private static final int btl = 19200;//波特率
+    private static final int jyw = 2;//偶校验
+    private static final int sjw = 8;//校验位
+    private static final int tzw = 1;//停止位
+    private static final int lk = 0;//流控
+
+    /**
+     * 单例模式
+     *
+     * @return
+     * @author ltb
+     * @date 2020/12/08 18:02
+     */
+    public static ComWeight getInstance() {
+        if (instance == null) {
+            instance = new ComWeight();
+        }
+        return instance;
+
+    }
+
+    /**
+     * 连接称并配置
+     *
+     * @return
+     * @author ltb
+     * @date 2020/12/08 18:18
+     */
+    public void init() {
+        //实例化SerialHelper对象,放入串口号和波特率
+        mHelper = new SerialHelper(port, btl) {
+            //监听传回数据
+            @Override
+            protected void onDataReceived(ComBean paramComBean) {
+                if (receivingData) {
+                    readWeightArray = paramComBean.bRec;
+
+                }
+            }
+        };
+        //开始连接串口
+        try {
+            num = 0 ;
+            mHelper.setPort(port);
+            mHelper.setBaudRate(btl);
+            mHelper.setStopBits(tzw);  //设置停止位
+            mHelper.setDataBits(sjw);  //设置数据位
+            mHelper.setParity(jyw);      //设置校验位
+            mHelper.setFlowCon(lk);    //设置流控
+            mHelper.open();
+        } catch (Exception e) {
+            Log.e(TAG, "init: 打开串口失败", e.fillInStackTrace());
+            e.printStackTrace();
+        }
+    }
+
+    public int readWeight() {
+        Log.i(TAG, "readWeight: 给" + port + "发信息");
+        mHelper.sendHex("1F03002A0001A67C");//发送指令
+        //发送数据后开始可以执行监听
+        receivingData = true;
+        int bytes1 = 0;
+        for (int times = 0; times < 5; times++) {
+//                mHelper.sendHex("1F03002A0001A67C");//发送指令
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+                bytes1 = -4;
+                Log.d(TAG, "readWeight: 不是吧阿sir,休眠也能报错");
+            }
+            Log.i(TAG, "readWeight: " + ByteUtil.bytesToString(readWeightArray));
+
+            if (readWeightArray != null) {
+                //用bytes接收数据
+                Log.i(TAG, "readWeight: 校验码" + ByteUtil.getCRC(readWeightArray));
+                if (readWeightArray[1] == 3 && ByteUtil.getCRC(readWeightArray) == 0 && readWeightArray[0] == 31) {
+                    byte[] weightBytes = new byte[4];
+                    weightBytes[2] = readWeightArray[3];
+                    weightBytes[3] = readWeightArray[4];
+                    int b = ByteUtil.bytes2Int(weightBytes) * 10;
+                    if (b > 327670) {
+                        Log.i(TAG, "readWeight: 读到了,重量为" + -(b - 655360) + "超重!!!");
+                        b = -(b - 655360);
+                    } else {
+                        Log.i(TAG, "readWeight: 读到了,重量为" + b);
+                    }
+                    readWeightArray = null;
+                    receivingData = false;
+                    return b;
+                } else {
+                    mHelper.sendHex("1F03002A0001A67C");//发送指令
+                    Log.i(TAG, "readWeight: 返回数据不对,重新发送");
+                    bytes1 = -3;
+                }
+
+            } else {
+                num ++;
+                bytes1 = -3;
+                mHelper.sendHex("1F03002A0001A67C");//发送指令
+                Log.i(TAG, "readWeight: 收不到数据,重新发送");
+            }
+        }
+
+        readWeightArray = null;
+        receivingData = false;
+        return bytes1;
+    }
+
+
+    /**
+     * 关闭串口
+     *
+     * @return
+     * @author ltb
+     * @date 2020/12/09 13:20
+     */
+    public void close() {
+
+        if (mHelper.isOpen()) {
+            mHelper.close();
+            Log.i(TAG, "close: 串口关闭");
+        }
+    }
+
+    /**
+     * @param * @param null
+     * @return
+     * @method
+     * @description 设置分度值
+     * @date: 2020/12/11 17:49
+     * @author: ltb
+     */
+    public String setAccuracy() {
+        mHelper.sendHex("1F1000000002042710000098F6");//发送指令
+        receivingData = true;        //发送数据后开始可以执行监听
+        while (true) {//循环监听数据
+            a:
+            for (int times = 1; times < 3; times++) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                    Log.d(TAG, "setAccuracy: 不是吧阿sir,休眠也能报错");
+                }
+                Log.d(TAG, "setAccuracy:  第" + times + "次查询");
+                if (readWeightArray != null) {
+                    Log.i(TAG, "setAccuracy: " + ByteUtil.bytesToString(readWeightArray));
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "设置成功";
+                } else {
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "设置失败";
+                }
+            }
+            break;
+        }
+
+        readWeightArray = null;
+        receivingData = false;
+        return "没有读到数据";
+    }
+
+    /**
+     * @param * @param null
+     * @return
+     * @method
+     * @description 清零
+     * @date: 2020/12/11 17:49
+     * @author: ltb
+     */
+    public String setZero() {
+        mHelper.sendHex("1F0600240000CA7F");//发送指令
+        receivingData = true;        //发送数据后开始可以执行监听
+        while (true) {//循环监听数据
+            a:
+            for (int times = 1; times < 3; times++) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                    Log.d(TAG, "setAccuracy: 不是吧阿sir,休眠也能报错");
+                }
+                Log.d(TAG, "setAccuracy:  第" + times + "次查询");
+                if (readWeightArray != null) {
+                    Log.i(TAG, "setZero: " + ByteUtil.bytesToString(readWeightArray));
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "清零成功";
+                } else {
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "清零失败";
+                }
+            }
+            break;
+        }
+        readWeightArray = null;
+        receivingData = false;
+        return "没有读到数据";
+    }
+
+
+    /***  两点标记法 ****/
+
+    /**
+     * @param * @param null
+     * @return
+     * @method
+     * @description 零校准/设置起点
+     * @date: 2020/12/11 17:49
+     * @author: ltb
+     */
+    public String setZeroCalibration() {
+        mHelper.sendHex("1F100008000204000000009221");//发送指令
+        receivingData = true;        //发送数据后开始可以执行监听
+        while (true) {//循环监听数据
+            a:
+            for (int times = 1; times < 3; times++) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                    Log.d(TAG, "setAccuracy: 不是吧阿sir,休眠也能报错");
+                }
+                Log.d(TAG, "setAccuracy:  第" + times + "次查询");
+                if (readWeightArray != null) {
+                    Log.i(TAG, "setZerocalibration: " + ByteUtil.bytesToString(readWeightArray));
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "校准成功";
+                } else {
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "校准失败";
+                }
+            }
+            break;
+        }
+        readWeightArray = null;
+        receivingData = false;
+        return "没有读到数据";
+    }
+
+    /**
+     * @param * @param null
+     * @return
+     * @method
+     * @description 零校准/设置起点
+     * @date: 2020/12/11 17:49
+     * @author: ltb
+     */
+    public String setWeightsCalibration() {
+        mHelper.sendHex("1F10001000020403E8000012FB");//发送指令
+        receivingData = true;        //发送数据后开始可以执行监听
+        while (true) {//循环监听数据
+            a:
+            for (int times = 1; times < 3; times++) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                    Log.d(TAG, "setAccuracy: 不是吧阿sir,休眠也能报错");
+                }
+                Log.d(TAG, "setAccuracy:  第" + times + "次查询");
+                if (readWeightArray != null) {
+                    Log.i(TAG, "setWeightsCalibration: " + ByteUtil.bytesToString(readWeightArray));
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "校准成功";
+                } else {
+                    readWeightArray = null;
+                    receivingData = false;
+                    return "校准失败";
+                }
+            }
+            break;
+        }
+        readWeightArray = null;
+        receivingData = false;
+        return "没有读到数据";
+    }
+
+}

+ 82 - 0
app/src/main/java/com/siwei/recyclebox/rs485/Control.java

xqd
@@ -0,0 +1,82 @@
+package com.siwei.recyclebox.rs485;
+
+import android.content.Context;
+import android.databinding.ObservableField;
+import android.util.Log;
+import android.widget.TextView;
+import android.widget.Toast;
+
+/**
+ * 控制Rs485类运行
+ * *************
+ * 项目名称ai-garbage-box18
+ * com.siwei.recyclebox.rs485
+ * 2020/12/0910:31
+ */
+public class Control extends Thread {
+    private String TAG = "COM口";
+    private static ObservableField text;
+    public static String[] port = new String[]{"/dev/ttyS4","/dev/ttymxc0", "/dev/ttymxc1", "/dev/ttymxc2", "/dev/ttymxc3"};
+//    public static String[] port = new String[]{"/dev/ttyS0", "/dev/ttyS1"};
+    public static String foundPort = "";
+
+    public Control(ObservableField text) {
+        this.text = text;
+    }
+
+    /**
+     * @param * @param null
+     * @return
+     * @method
+     * @description 开启线程读取数据, 循环给串口发消息,找到回复的串口就保存(一个)
+     * @date: 2020/12/09 15:02
+     * @author: ltb
+     */
+    @Override
+    public void run() {
+        /**
+         * 称的状态
+         * -3  没收到数据/异常报错
+         * -2  收到的数据不是称的
+         * -1  称读数超重,可能是接触不良
+         * */
+        for (int x=0;x<=port.length;x++) {
+            Log.i(TAG, "checkPort: 设置端口" + port[x]);
+            ComWeight.getInstance().port = port[x];//设置端口
+            Log.i(TAG, "checkPort: 打开端串口" + ComWeight.getInstance().port);
+            ComWeight.getInstance().init();//打开串口
+            int a = -2;
+            a = ComWeight.getInstance().readWeight();
+            Log.i(TAG, "run: 读到了"+ a);
+            ComWeight.getInstance().close();
+            if (a > -2) {
+                Log.i(TAG, "checkPort: 找到" + port[x]);
+                foundPort = port[x];
+                break ;
+            }
+
+        }
+        switch (foundPort) {
+            case "/dev/ttymxc0":
+                text.set("COM1");
+                break;
+            case "/dev/ttymxc1":
+                text.set("COM2");
+                break;
+            case "/dev/ttymxc2":
+                text.set("COM3");
+                break;
+            case "/dev/ttymxc3":
+                text.set("COM4");
+                break;
+            case "/dev/ttyS4":
+                text.set("侧边绿口");
+                break;
+            default:
+                text.set("没找到,正在重新查找,请检查是否接触不良");
+        }
+
+    }
+
+
+}

+ 1 - 0
app/src/main/java/com/siwei/recyclebox/ui/main/MainActivity.java

xqd
@@ -228,6 +228,7 @@ public class MainActivity extends BaseActivity<ViewDataBinding,MainViewModel> {
             Log.i("白名单","已经添加白名单");
         }
         return isIgnoring;
+//        return true;
     }
     @RequiresApi(api = Build.VERSION_CODES.M)
     public void requestIgnoreBatteryOptimizations() {

Plik diff jest za duży
+ 449 - 294
app/src/main/java/com/siwei/recyclebox/ui/main/MainViewModel.java


BIN
app/src/main/jniLibs/arm64-v8a/libBugly.so


BIN
app/src/main/jniLibs/arm64-v8a/libandroid_id2.so


BIN
app/src/main/jniLibs/arm64-v8a/libcoap.so


BIN
app/src/main/jniLibs/arm64-v8a/libitls.so


BIN
app/src/main/jniLibs/arm64-v8a/libserialport.so


BIN
app/src/main/jniLibs/armeabi-v7a/libBugly.so


BIN
app/src/main/jniLibs/armeabi-v7a/libandroid_id2.so


BIN
app/src/main/jniLibs/armeabi-v7a/libcoap.so


BIN
app/src/main/jniLibs/armeabi-v7a/libitls.so


BIN
app/src/main/jniLibs/armeabi-v7a/libserialport.so


BIN
app/src/main/jniLibs/armeabi/libBugly.so


BIN
app/src/main/jniLibs/armeabi/libandroid_id2.so


BIN
app/src/main/jniLibs/armeabi/libcoap.so


BIN
app/src/main/jniLibs/armeabi/libitls.so


BIN
app/src/main/jniLibs/armeabi/libserialport.so


BIN
app/src/main/jniLibs/x86/libBugly.so


BIN
app/src/main/jniLibs/x86/libcoap.so


BIN
app/src/main/jniLibs/x86/libserialport.so


BIN
app/src/main/jniLibs/x86_64/libBugly.so


BIN
app/src/main/jniLibs/x86_64/libserialport.so


+ 381 - 304
app/src/main/res/layout/activity_main.xml

xqd
@@ -1,354 +1,431 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout xmlns:tools="http://schemas.android.com/tools"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:binding="http://schemas.android.com/apk/res-auto">
+
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <data>
+
         <variable
             name="viewModal"
-            type="com.siwei.recyclebox.ui.main.MainViewModel"/>
-<!--        关联view model-->
+            type="com.siwei.recyclebox.ui.main.MainViewModel" />
+        <!--        关联view model-->
     </data>
 
-    <LinearLayout
+    <ScrollView
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-        <TableLayout
-            android:layout_width="match_parent"
-            android:collapseColumns="1"
-            android:layout_height="wrap_content">
-                <android.support.constraint.ConstraintLayout
+        android:layout_height="match_parent">
+
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="1040dp"
+                android:background="#FAFAD2"
+                android:orientation="vertical"
+                android:padding="10dp">
+                <!--IMEI-->
+                <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="130dp"
-                    android:padding="16dp">
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="10dp">
+
+                    <Button
+                        android:id="@+id/btn1"
+                        android:layout_width="150dp"
+                        android:layout_height="80dp"
+                        android:onClick="@{viewModal.btnQeryIMEI}"
+                        android:text="查询IMEI"
+                        android:textSize="24sp"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/textView"
+                        android:layout_width="400dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="1dp"
+                        android:text="@={viewModal.textIMEI}"
+                        android:textSize="30dp"
+                        app:layout_constraintLeft_toRightOf="@+id/btn1"
+                        app:layout_constraintTop_toTopOf="parent" />
+                </LinearLayout>
+                <!--设备接口按钮-->
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="10dp">
+
+                    <Button
+                        android:id="@+id/test_but"
+                        android:layout_width="150dp"
+                        android:layout_height="80dp"
+                        android:onClick="@{viewModal.test}"
+                        android:text="设备接口"
+                        android:textSize="24sp" />
+
+                    <TextView
+                        android:id="@+id/textView3"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@={viewModal.textTest}"
+                        android:textSize="30dp" />
+
+
+                </LinearLayout>
+                <!--数据上报按钮-->
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="10dp">
+
+                    <Button
+                        android:layout_width="150dp"
+                        android:layout_height="80dp"
+                        android:onClick="@{viewModal.btnClickReport}"
+                        android:text="数据上报"
+                        android:textSize="24sp" />
+
+
+                </LinearLayout>
+                <!--数据上报信息-->
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:padding="10dp">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="30dp"
+                        android:lineSpacingMultiplier="1.5"
+                        android:text="@={viewModal.textReportData}"
+                        android:textColor="#FF0000"
+                        android:textSize="30dp" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="1040dp"
+                android:orientation="vertical">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="#a0ffc0"
+                    android:orientation="vertical"
+                    android:padding="20dp">
+
+                    <!--                    开关门-->
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
 
                         <Button
-                            app:layout_constraintTop_toTopOf="parent"
-                            app:layout_constraintLeft_toLeftOf="parent"
-                            android:layout_width="120dp"
-                            android:layout_height="96dp"
-                            android:onClick="@{viewModal.btnQeryIMEI}"
-                            android:text="查询IMEI:**"
-                            android:textSize="24sp"
-                            android:id="@+id/btn1"/>
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickPullRod}"
+                            android:text="开投递门"
+                            android:textSize="24sp" />
+
+                        <Button
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickPushRod}"
+                            android:text="关投递门"
+                            android:textSize="24sp" />
+                    </LinearLayout>
+
+                    <!--                    开锁语音-->
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <Button
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickOpenLock}"
+                            android:text="开收运锁"
+                            android:textSize="24sp" />
+
+                        <Button
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickSpeech}"
+                            android:text="播放语音"
+                            android:textSize="24sp" />
+                    </LinearLayout>
+                    <!-- 电流阈值-->
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+                        <!--查询电流值-->
+                        <Button
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickqueryCurrent}"
+                            android:text="查询电流是否过大"
+                            android:layout_marginRight="30dp"
+                            android:textSize="24sp" />
+
                         <TextView
-                            app:layout_constraintLeft_toRightOf="@+id/btn1"
-                            app:layout_constraintTop_toTopOf="parent"
-                            android:layout_width="400dp"
-                            android:layout_height="77dp"
-                            android:layout_marginStart="1dp"
-                            android:layout_marginTop="1dp"
-                            android:layout_marginEnd="2dp"
-                            android:text="@={viewModal.textIMEI}"
-                            android:textSize="30dp" />
+                            android:layout_width="wrap_content"
+                            android:layout_height="match_parent"
+                            android:text="@={viewModal.textqueryCurrentData}"
+                            android:textSize="28sp" />
+
+                    </LinearLayout>
                     <LinearLayout
-                        app:layout_constraintRight_toRightOf="parent"
                         android:layout_width="wrap_content"
-                        android:layout_height="match_parent">
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+                        <!--查询电流值-->
                         <Button
                             android:layout_width="150dp"
-                            android:layout_height="100dp"
-                            android:onClick="@{viewModal.btnClickrestartApp}"
-                            android:text="重启"
-                            android:textSize="24sp"
-                            />
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickSetPowerBigger}"
+                            android:text="增加电流阈值"
+                            android:layout_marginRight="30dp"
+                            android:textSize="24sp" />
+
+                    </LinearLayout>
+
+
+                    <!--                    读距离-->
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
                         <Button
                             android:layout_width="150dp"
-                            android:layout_height="100dp"
-                            android:onClick="@{viewModal.btnClickfinishApp}"
-                            android:text="关闭"
-                            android:textSize="24sp"
-                            />
+                            android:layout_height="80dp"
+                            android:layout_marginRight="30dp"
+                            android:onClick="@{viewModal.btnReadDistance}"
+                            android:text="读取距离"
+                            android:textSize="24sp" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="match_parent"
+                            android:text="@={viewModal.textDistance}"
+                            android:textSize="42sp" />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
                         <Button
                             android:layout_width="150dp"
-                            android:layout_height="100dp"
-                            android:onClick="@{viewModal.btnClickrestartAndroid}"
-                            android:text="重启系统"
-                            android:textSize="24sp"
-                            />
+                            android:layout_height="80dp"
+                            android:layout_marginRight="30dp"
+                            android:onClick="@{viewModal.btnInfrared}"
+                            android:text="读取红外线"
+                            android:textSize="24sp" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="match_parent"
+                            android:text="@={viewModal.textInfrared}"
+                            android:textSize="42sp" />
                     </LinearLayout>
-                </android.support.constraint.ConstraintLayout>
-        </TableLayout>
-        <TableLayout
-            android:layout_width="match_parent"
-            android:collapseColumns="2"
-            android:layout_height="wrap_content">
-            <TableRow>
+
+                </LinearLayout>
+
                 <LinearLayout
-                    android:id="@+id/linearLayout"
                     android:layout_width="match_parent"
-                    android:layout_height="130dp"
-                    android:padding="16dp">
+                    android:layout_height="match_parent"
+                    android:background="#CCCCFF"
+                    android:orientation="vertical"
+                    android:padding="20dp">
+
+                    <Button
+                        android:layout_width="150dp"
+                        android:layout_height="80dp"
+                        android:onClick="@{viewModal.btnClicksetScale}"
+                        android:text="设置分度值"
+                        android:textSize="24sp" />
 
 
                     <LinearLayout
-                        android:layout_width="120dp"
-                        android:layout_height="match_parent">
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
                         <Button
-                            android:layout_width="120dp"
-                            android:layout_height="96dp"
-                            android:onClick="@{viewModal.btnClickReport}"
-                            android:text="数据上报1.0"
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickzeroCalibration}"
+                            android:text="零度校准"
                             android:textSize="24sp" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="match_parent"
+                            android:text="称盘无物且稳定,放10KG的砝码\n等8秒稳定后,点击下一个按钮"
+                            android:textSize="25sp" />
+
                     </LinearLayout>
+
+
                     <LinearLayout
                         android:layout_width="wrap_content"
-                        android:layout_height="match_parent">
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <Button
+                            android:id="@+id/button"
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickweightCalibration}"
+                            android:text="砝码校准"
+                            android:textSize="24sp" />
+
                         <TextView
                             android:layout_width="wrap_content"
-                            android:layout_height="77dp"
-                            android:layout_marginStart="1dp"
-                            android:layout_marginTop="1dp"
-                            android:layout_marginEnd="2dp"
-                            android:text="@={viewModal.textReportData}"
-                            android:textSize="30dp" />
+                            android:layout_height="match_parent"
+                            android:text="取走砝码"
+                            android:textSize="30sp" />
+                    </LinearLayout>
+
+                    <Button
+                        android:layout_width="150dp"
+                        android:layout_height="80dp"
+                        android:onClick="@{viewModal.btnClickclearWeight}"
+                        android:text="称重清零去皮"
+                        android:textSize="24sp" />
+
+                    <!--        称重区  -->
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:orientation="horizontal">
+
+                        <Button
+                            android:layout_width="150dp"
+                            android:layout_height="80dp"
+                            android:onClick="@{viewModal.btnClickreadWeight}"
+                            android:text="称重"
+                            android:textSize="24sp" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@={viewModal.textReadWeightData}"
+                            android:textAlignment="center"
+                            android:textSize="42sp" />
+
                     </LinearLayout>
 
                 </LinearLayout>
-            </TableRow>
-            <TableRow>
-
-            </TableRow>
-        </TableLayout>
-        <TableLayout
-            android:layout_width="match_parent"
-            android:shrinkColumns="3"
-            android:layout_height="wrap_content">
-            <TableRow>
-                <Button
-                    android:layout_width="161dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickPullRod}"
-                    android:text="开门"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="154dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickPushRod}"
-                    android:text="关门"
-                    android:textSize="24sp"
-                    />
 
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickOpenLock}"
-                    android:text="开锁"
-                    android:textSize="24sp"
-                    />
+
+            </LinearLayout>
+            <!--        系统设置-->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="1040dp"
+                android:background="#CCCCCC"
+                android:orientation="vertical"
+                android:padding="20dp">
+
                 <TextView
-                    android:layout_width="wrap_content"
+                    android:layout_width="200dp"
                     android:layout_height="wrap_content"
-                    android:text="开锁 3秒后 关锁"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickRodRepeat}"
-                    android:text="连续伸缩杆"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:id="@+id/button2"
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickLockRepeat}"
-                    android:text="连续开锁"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="wrap_content"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickqueryCurrent}"
-                    android:text="电流过大查询"
-                    android:textSize="24sp"
-                    />
-                <TextView
-                    android:layout_width="50dp"
-                    android:layout_height="100dp"
-                    android:text="@={viewModal.textqueryCurrentData}"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickclearCurrent}"
-                android:text="清除"
-                    android:textSize="24sp"
-                    />
-
-            </TableRow>
-        </TableLayout>
-
-        <TableLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:shrinkColumns="4">
-            <TableRow>
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickSpeech}"
-                    android:text="播放语音"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickOpenLight1234}"
-                    android:text="开灯1234"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickSendMsg}"
-                    android:text="事件测试"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickGetDeviceValue}"
-                    android:text="获取属性"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickOpenLight1}"
-                    android:text="开灯1"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickOpenLight2}"
-                    android:text="开灯2"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickOpenLight3}"
-                    android:text="开灯3"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickOpenLight4}"
-                    android:text="开灯4"
-                    android:textSize="24sp"
-                    />
-            </TableRow>
-        </TableLayout>
-        <TableLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:shrinkColumns="5">
-            <TableRow>
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickSetPowerBigger}"
-                    android:text="设置更大的电流阈值"
-                    android:textSize="24sp"
-                    />
-                <Button
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickQueryPower}"
-                    android:text="查询电流值"
-                    android:textSize="24sp"
-                    />
-            </TableRow>
-        </TableLayout>
-        <TableLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:shrinkColumns="6">
-            <TableRow>
+                    android:layout_marginTop="1dp"
+                    android:text="@={viewModal.Time}"
+                    android:textSize="24dp" />
+
                 <Button
                     android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClicksetScale}"
-                    android:text="设置分度值"
-                    android:textSize="24sp"
-                    />
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="100dp"
-                    android:text="→"
-                    android:textSize="42sp"
-                    android:textAlignment="center"
-                    />
+                    android:layout_height="80dp"
+                    android:onClick="@{viewModal.btnClickrestartApp}"
+                    android:text="重启"
+                    android:textSize="24sp" />
+
                 <Button
                     android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickzeroCalibration}"
-                    android:text="零度校准"
-                    android:textSize="24sp"
-                    />
-                <TextView
-                    android:layout_width="500dp"
-                    android:layout_height="100dp"
-                    android:text="称盘无物且稳定,放10KG的砝码,等8秒稳定后,点击下一个按钮"
-                    android:textSize="30sp"
-                    />
+                    android:layout_height="80dp"
+                    android:onClick="@{viewModal.btnClickfinishApp}"
+                    android:text="关闭"
+                    android:textSize="24sp" />
+
                 <Button
-                    android:id="@+id/button"
-                    android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickweightCalibration}"
-                    android:text="砝码校准"
-                    android:textSize="24sp"
-                    />
-                <TextView
                     android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:text="取走砝码"
-                    android:textSize="30sp"
-                    />
+                    android:layout_height="80dp"
+                    android:onClick="@{viewModal.btnClickrestartAndroid}"
+                    android:text="重启系统"
+                    android:textSize="24sp" />
+
                 <Button
                     android:layout_width="150dp"
-                    android:layout_height="100dp"
-                    android:onClick="@{viewModal.btnClickclearWeight}"
-                    android:text="称重清零去皮"
-                    android:textSize="24sp"
-                    />
-            </TableRow>
-        </TableLayout>
-        <TableLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content">
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="100dp"
-                android:text="@={viewModal.textReadWeightData}"
-                android:textSize="42sp"
-                android:textAlignment="center"
-                />
-        </TableLayout>
-        <TableLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:shrinkColumns="7">
-            <Button
-                android:layout_width="130dp"
-                android:layout_height="100dp"
-                android:onClick="@{viewModal.btnClickreadWeight}"
-                android:text="称重"
-                android:textSize="24sp"
-                />
-        </TableLayout>
-
-    </LinearLayout>
+                    android:layout_height="80dp"
+                    android:onClick="@{viewModal.btnEmpty}"
+                    android:text="清空列表"
+                    android:textSize="24sp" />
+
+            </LinearLayout>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="1040dp"
+                android:background="#ccffff"
+                android:orientation="vertical"
+                android:padding="20dp">
+
+                <ScrollView
+                    android:layout_width="match_parent"
+                    android:layout_height="900dp"
+                    android:background="#ccffff">
+
+                    <FrameLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:focusable="true"
+                        android:focusableInTouchMode="true">
+                                            <TextView
+                                                android:id="@+id/list"
+                                                android:layout_width="400dp"
+                                                android:layout_height="wrap_content"
+                                                android:layout_marginTop="1dp"
+
+                                                android:text="@={viewModal.list}"
+                                                android:textColor="#a00000"
+                                                android:textSize="24dp"
+                                                app:layout_constraintLeft_toRightOf="@+id/btn1"
+                                                app:layout_constraintTop_toTopOf="parent" />
+
+<!--                        <ListView-->
+<!--                            android:id="@+id/list"-->
+<!--                            android:layout_width="match_parent"-->
+<!--                            android:layout_height="match_parent" />-->
+
+
+                    </FrameLayout>
+
+                </ScrollView>
+
 
+            </LinearLayout>
+        </LinearLayout>
+    </ScrollView>
 </layout>

+ 3 - 1
build.gradle

xqd
@@ -9,8 +9,10 @@ buildscript {
         jcenter()
     }
     dependencies {
+//        classpath 'com.android.tools.build:gradle:3.0.0'
         classpath 'com.android.tools.build:gradle:3.5.3'
-        
+
+
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }

+ 1 - 1
gradle.properties

xqd
@@ -11,6 +11,6 @@ org.gradle.jvmargs=-Xmx1536m
 # This option should only be used with decoupled projects. More details, visit
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # org.gradle.parallel=true
-android.useDeprecatedNdk=true
+#android.useDeprecatedNdk=true
 
 

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików