Browse Source

修改转换盒发送433数据格式,并且发送两次。给多个无线点阵屏发送时不再分次发送而是一次性发送,无线点阵屏收到数据后再解析数据中是否包含自己的数据,防止多次发送造成互相干扰

weizhengliang 2 years ago
parent
commit
30d1f7cfc9
1 changed files with 39 additions and 8 deletions
  1. 39 8
      app/src/main/java/com/wdkl/ncs/s433/transbox/MainActivity.java

+ 39 - 8
app/src/main/java/com/wdkl/ncs/s433/transbox/MainActivity.java

@@ -244,13 +244,13 @@ public class MainActivity extends SerialPortActivity  {
                         TcpClient.getInstance().sendMsg(tcpModel.toJson());
 
                         //收到ack回复同时清除重发缓存
-                        Iterator<Map.Entry<String, String>> iterator = s433Data.entrySet().iterator();
+                        /*Iterator<Map.Entry<String, String>> iterator = s433Data.entrySet().iterator();
                         while (iterator.hasNext()) {
                             if (iterator.next().getKey().equals(mac)) {
                                 Log.e(TAG, "收到ack回复,清除缓存mac: " + mac);
                                 iterator.remove();
                             }
-                        }
+                        }*/
                     }
                 }
             }
@@ -440,19 +440,22 @@ public class MainActivity extends SerialPortActivity  {
 
                             if (tcpData.getString("receiverMacs") != null) {
                                 //给多个点阵屏发送
-                                JSONArray macs = JSON.parseArray(tcpData.getString("receiverMacs"));
+                                /*JSONArray macs = JSON.parseArray(tcpData.getString("receiverMacs"));
                                 data.put("title", title);
                                 s433Send.put("data", data);
                                 for (int i = 0; i < macs.size(); i++) {
                                     send433DataByMac((String) macs.get(i), s433Send.toJSONString());
-                                }
+                                }*/
+
+                                send433Data(tcpModel.toJson());
                             } else if (tcpData.getString("receiverMac") != null) {
                                 //给单个点阵屏发送
                                 String mac = tcpData.getString("receiverMac");
                                 data.put("title", title);
                                 s433Send.put("data", data);
 
-                                send433DataByMac(mac, s433Send.toJSONString());
+                                //send433DataByMac(mac, s433Send.toJSONString());
+                                send433Data(tcpModel.toJson());
                             }
                         }
                     } else if (tcpModel.getAction() == TcpAction.S433Action.DATA) {
@@ -467,7 +470,8 @@ public class MainActivity extends SerialPortActivity  {
                                 String mac = tcpData.getString("receiverMac");
                                 s433Send.put("data", data);
 
-                                send433DataByMac(mac, s433Send.toJSONString());
+                                //send433DataByMac(mac, s433Send.toJSONString());
+                                send433Data(tcpModel.toJson());
                             }
                         }
                     } else if (tcpModel.getAction() == TcpAction.S433Action.SYNC_TIME) {
@@ -481,7 +485,8 @@ public class MainActivity extends SerialPortActivity  {
                                 String mac = tcpData.getString("receiverMac");
                                 s433Send.put("data", data);
 
-                                send433DataByMac(mac, s433Send.toJSONString());
+                                //send433DataByMac(mac, s433Send.toJSONString());
+                                send433Data(tcpModel.toJson());
                             }
                         }
                     } else if (tcpModel.getAction() == TcpAction.S433Action.EXIST) {
@@ -490,7 +495,8 @@ public class MainActivity extends SerialPortActivity  {
                                 //给单个点阵屏发送
                                 String mac = tcpData.getString("receiverMac");
 
-                                send433DataByMac(mac, s433Send.toJSONString());
+                                //send433DataByMac(mac, s433Send.toJSONString());
+                                send433Data(tcpModel.toJson());
                             }
                         }
                     }
@@ -507,6 +513,7 @@ public class MainActivity extends SerialPortActivity  {
             @Override
             public void run() {
                 try {
+                    //$8C:FC:A0:F0:01:3E{"action":"CALL","data":{"title":"你好世界"}}#
                     //拼接头尾
                     String msg = "$" + mac + data + "#";
                     Log.e(TAG, "send 433 msg ==>" + msg);
@@ -535,6 +542,28 @@ public class MainActivity extends SerialPortActivity  {
         }).start();
     }
 
+    private void send433Data(final String data) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    //$8C:FC:A0:F0:01:3E{"action":"CALL","data":{"title":"你好世界"}}#
+                    //{"action":"CANCEL","data":{"receiverMac":"8C:FC:A0:F0:01:7A"},"type":"S433"}
+                    //拼接头尾
+                    String msg = "$" + data + "#";
+                    //Log.e(TAG, "send 433 msg ==>" + msg);
+                    //433发送
+                    sendMsg(msg, mOutputStream, 120);
+                    Thread.sleep(1500);
+                    sendMsg(msg, mOutputStream, 120);
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }).start();
+    }
+
     /*private void send433Data() {
         if (send433Thread == null) {
             send433Thread = new Send433Thread();
@@ -594,6 +623,8 @@ public class MainActivity extends SerialPortActivity  {
             long msgId = crc32Msg.getValue();
 //            byte[] packageContent = new byte[packageContentLength];
             byte[] start = String2Byte("AA55");
+
+            Log.e(TAG, "send 433 msg ==>" + msg);
             for (int i = 0; i < packages; i++) {
                 ByteBuffer buffer = ByteBuffer.allocate(packageLength - 8); //校验数据之前的数据
                 buffer.put(start);