Shangyp 2 hónapja
szülő
commit
4cf52a7102

+ 15 - 3
SeriaApp/src/main/java/com/silencefun/comtest/SerialHelper.java

@@ -14,6 +14,7 @@ import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 import java.security.InvalidParameterException;
 import java.util.Arrays;
+import java.util.logging.Handler;
 
 
 import com.silencefun.comtest.serialport.SerialPort;
@@ -160,6 +161,13 @@ public abstract class SerialHelper {
     }
 
     //----------------------------------------------------
+    android.os.Handler handler = new android.os.Handler();
+    Runnable runnable = new Runnable() {
+        @Override
+        public void run() {
+            DoQueue();
+        }
+    };
     private class ReadThread extends Thread {
         @Override
         public void run() {
@@ -176,10 +184,14 @@ public abstract class SerialHelper {
                     if (size > 0) {
                         ComBean ComRecData = new ComBean(sPort, buffer, size);
                         onDataReceived(ComRecData);//添加QueueList内容
-                    } else {
-                        //当数据为空或传输数据结束后
-                        DoQueue();
+                        handler.removeCallbacks(runnable);
+                        handler.postDelayed(runnable,400);
                     }
+//                    else {
+//                        //当数据为空或传输数据结束后
+//                        Log.e("串口数据返回 "," 二维码ComRecData3    ");
+//                        DoQueue();
+//                    }
                 } catch (Throwable e) {
                     e.printStackTrace();
                     return;

+ 35 - 22
app/src/main/java/com/hanghui/senic/controller/SerialController.java

@@ -2,7 +2,9 @@ package com.hanghui.senic.controller;
 
 import android.app.Activity;
 import android.os.Build;
+import android.util.Log;
 
+import com.google.gson.Gson;
 import com.hanghui.senic.common.AppHandler;
 import com.hanghui.senic.common.Constants;
 import com.hanghui.senic.common.DeviceInitManager;
@@ -154,39 +156,50 @@ public class SerialController extends BaseController {
     }
 
     public String data = "";
-
+    List<ComBean> comBeanList = new ArrayList<>();
     public class SerialControl extends SerialHelper {
         public SerialControl() {
         }
 
         @Override
         protected void onDataReceived(final ComBean ComRecData) {
-            AppLogUtils.i(true, "二维码数据返回", "onDataReceived, 二维码数据返回:  " + ConfigManager.getGson().toJson(ComRecData));
-//            if (ConfigManager.getAuthenticationBean().getData().get(0).isUseQrcode() && (Build.MODEL.contains("F2") || Build.MODEL.contains("TPS980") || Build.MODEL.contains("A10") ||
-//                    ConfigManager.getAuthenticationBean().getData().get(0).getQrCodeReaderCommunicationMode() == 2))
-            if (ConfigManager.getAuthenticationBean().getData().get(0).isUseQrcode() && ConfigManager.getAuthenticationBean().getData().get(0).getQrCodeReaderCommunicationMode() == 2 &&
-                    ComRecData.sComPort.equals(ConfigManager.getAuthenticationBean().getData().get(0).getQrCodeReaderSerialPort())) {
-                try {
-                    String data = new String(ConfigManager.DeleteElement(ComRecData.bRec), "UTF-8");
-                    AppLogUtils.i(true, "二维码数据返回", "二维码数据返回:  " + data);
-                    AppHandler.getHandler().post(new Runnable() {
-                        @Override
-                        public void run() {
-                            QRCodeController.getInstance().qrCodeDataReceived(data);
-                        }
-                    });
-                } catch (Exception e) {
-                    AppLogUtils.e(true, "二维码数据返回", "二维码数据异常  " + e.toString());
-                    e.printStackTrace();
-                }
-            } else {
-                AppLogUtils.e(true, "二维码数据返回", "二维码串口配置未开启或地址不对 串口地址  " + ComRecData.sComPort);
-            }
+            comBeanList.add(ComRecData);
         }
 
         //尝试进行转换
         @Override
         protected void DoQueue() {
+
+            if (comBeanList.size() > 0){
+
+                AppLogUtils.i(true, "二维码数据返回", "onDataReceived, 二维码数据返回:  " + ConfigManager.getGson().toJson(comBeanList));
+                if (ConfigManager.getAuthenticationBean().getData().get(0).isUseQrcode() && ConfigManager.getAuthenticationBean().getData().get(0).getQrCodeReaderCommunicationMode() == 2 &&
+                        comBeanList.get(0).sComPort.equals(ConfigManager.getAuthenticationBean().getData().get(0).getQrCodeReaderSerialPort())) {
+                    try {
+                        String dataString = "";
+                        for (int i = 0; i < comBeanList.size(); i++) {
+                            String data = new String(ConfigManager.DeleteElement(comBeanList.get(i).bRec), "UTF-8");
+                            dataString += data;
+                        }
+                        AppLogUtils.i(true, "二维码数据返回", "二维码数据返回:  " + dataString);
+                        String finalDataString = dataString;
+                        AppHandler.getHandler().post(new Runnable() {
+                            @Override
+                            public void run() {
+                                QRCodeController.getInstance().qrCodeDataReceived(finalDataString);
+                                comBeanList.clear();
+                            }
+                        });
+                    } catch (Exception e) {
+                        AppLogUtils.e(true, "二维码数据返回", "二维码数据异常  " + e.toString());
+                        e.printStackTrace();
+                    }
+                } else {
+                    AppLogUtils.e(true, "二维码数据返回", "二维码串口配置未开启或地址不对 串口地址  " + comBeanList.get(0).sComPort);
+                }
+
+            }
+
         }
 
     }