Ver Fonte

三色灯代码

zhenghao há 1 ano atrás
pai
commit
f8ce1a9323

+ 28 - 7
app/src/main/java/com/naz/sdkdemo/MainActivity.java

@@ -13,7 +13,6 @@ import android.content.pm.PackageManager;
 import android.location.LocationManager;
 import android.os.Build;
 import android.os.Environment;
-import android.os.Handler;
 import android.provider.MediaStore;
 import android.text.TextUtils;
 import android.util.Log;
@@ -35,7 +34,6 @@ import com.clj.fastble.utils.HexUtil;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
-import com.naz.sdkdemo.activity.UpTrademarkActivity;
 import com.naz.sdkdemo.activity.ble.comm.ObserverManager;
 import com.naz.sdkdemo.base.BaseActivity;
 import com.naz.sdkdemo.bean.PrintModule;
@@ -44,7 +42,6 @@ import com.naz.sdkdemo.bean.PrintModule3;
 import com.naz.sdkdemo.helper.SerialPortManager;
 import com.naz.sdkdemo.http.ApiHelper;
 import com.naz.sdkdemo.utils.MyTools;
-import com.naz.sdkdemo.utils.SerialUtil;
 import com.naz.sdkdemo.weight.UserCache;
 import com.tencent.smtt.export.external.interfaces.WebResourceError;
 import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
@@ -67,8 +64,6 @@ import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
 
 import androidx.annotation.NonNull;
 import androidx.camera.core.CameraSelector;
@@ -267,7 +262,7 @@ public class MainActivity extends BaseActivity {
         connectLight.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                connectLight();
+                toConnectLight();
             }
         });
         turnOnLight.setOnClickListener(new View.OnClickListener() {
@@ -420,6 +415,29 @@ public class MainActivity extends BaseActivity {
             Log.e(TAG, "closePrinter");
             closeUSB();
         }
+
+        @JavascriptInterface
+        public void connectLight() {
+            Log.e(TAG, "connectLight");
+            toConnectLight();
+        }
+
+        @JavascriptInterface
+        public void controlLight(int address, int type) {
+            Log.e(TAG, "openLight"+"address="+address+",type="+type);
+            if (serialPortManager != null){
+                serialPortManager.turnOnLight(address, type);
+            }
+        }
+
+        @JavascriptInterface
+        public void disConnectLight() {
+            Log.e(TAG, "closeLight");
+            if (serialPortManager!=null){
+                serialPortManager.close();
+                serialPortManager = null;
+            }
+        }
     }
 
     private void toCloseCamera() {
@@ -1123,7 +1141,7 @@ public class MainActivity extends BaseActivity {
 
     private SerialPortManager serialPortManager;
 
-    private void connectLight(){
+    private void toConnectLight(){
         if (serialPortManager == null){
             serialPortManager = new SerialPortManager();
             serialPortManager.init(MainActivity.this, UserCache.getSerialName(), UserCache.getSerialRate(), new SerialPortManager.SerialCallBack() {
@@ -1135,6 +1153,7 @@ public class MainActivity extends BaseActivity {
                 @Override
                 public void openCallBack(int code) {
                     Log.e("--------->","------->openCallBack code="+code);
+                    mWebView.loadUrl("javascript:responseLightCode('"+code+"')");
                     if (code == 1){
 
                     }else {
@@ -1147,6 +1166,8 @@ public class MainActivity extends BaseActivity {
 
                 }
             });
+        }else {
+            serialPortManager.open();
         }
     }
 

+ 68 - 1
app/src/main/java/com/naz/sdkdemo/helper/SerialPortManager.java

@@ -224,8 +224,67 @@ public class SerialPortManager {
 
         serialHelper.send(SerialUtil.hexStringToByteArray(hexStr+SerialUtil.getCRC(Objects.requireNonNull(SerialUtil.hexStringToByteArray(hexStr)))));
     }
+
+    //address地址码(0x01为黄灯;0x02为绿灯;0x03为红灯;0x04为蜂鸣;
+    //0x05为黄灯+蜂鸣;0x06为绿灯+蜂鸣;0x07为红灯+蜂鸣;0x00为所有灯+蜂鸣)
+    //type操作数据(0x00为关闭,0x01为打开,0x02为闪烁)
+    //address 0,1,2,3,4,5,6,7
+    //type 0,1,2
+    public void turnOnLight(int address, int type){
+        if (context == null){
+            return;
+        }
+        if (!serialHelper.isOpen()) {
+            Toast.makeText(context, "串口未打开", Toast.LENGTH_SHORT).show();
+            return;
+        }
+        String addressStr = "";
+        switch (address){
+            case 0:
+                addressStr = "00";
+                break;
+            case 1:
+                addressStr = "01";
+                break;
+            case 2:
+                addressStr = "02";
+                break;
+            case 3:
+                addressStr = "03";
+                break;
+            case 4:
+                addressStr = "04";
+                break;
+            case 5:
+                addressStr = "05";
+                break;
+            case 6:
+                addressStr = "06";
+                break;
+            case 7:
+                addressStr = "07";
+                break;
+        }
+        String typeStr = "";
+        switch (type){
+            case 0:
+                typeStr = "00";
+                break;
+            case 1:
+                typeStr = "01";
+                break;
+            case 2:
+                typeStr = "02";
+                break;
+        }
+        String hexStr = "A0"+addressStr+typeStr+hexAdd("A0", addressStr, typeStr);
+        Log.e("--------->","--------->hexstr="+hexStr);
+
+        serialHelper.send(SerialUtil.hexStringToByteArray(hexStr+SerialUtil.getCRC(Objects.requireNonNull(SerialUtil.hexStringToByteArray(hexStr)))));
+    }
+
     //打开串口
-    private void open(){
+    public void open(){
         if (serialHelper.isOpen()) {
             return;
         }
@@ -260,4 +319,12 @@ public class SerialPortManager {
         void openCallBack(int code);//1成功,0失败
         void closeCallBack(int code);//1成功, 0失败
     }
+
+    public static String hexAdd(String hex, String hex1, String hex2) {
+        int decimal = Integer.parseInt(hex, 16);
+        int decimal1 = Integer.parseInt(hex1, 16);
+        int decimal2 = Integer.parseInt(hex2, 16);
+        int sum = decimal + decimal1 + decimal2;
+        return Integer.toHexString(sum).toUpperCase();
+    }
 }