瀏覽代碼

<解决一处可能出现的异常>

weizhengliang 4 年之前
父節點
當前提交
44d87d251f

+ 1 - 1
app/build.gradle

@@ -25,7 +25,7 @@ android {
         minSdkVersion 15
         targetSdkVersion 26
         versionCode 1
-        versionName "1.37"
+        versionName "1.38"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
         buildConfigField "String", "BUILD_TIME", getDate()

+ 9 - 2
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -134,7 +134,7 @@ import static com.wdkl.callingbed.util.sendcommand.CallingBedSendCommand.setWSHL
  * Created by 胡博文 on 2017/8/17.
  */
 
-public class CallingBedActivity extends BaseActivity implements ISerialPortBedOnclickEvent, IMediaPlayerVolume, IVvsipServiceListener
+public class CallingBedActivity extends BaseActivity implements ISerialPortBedOnclickEvent, SerialPortUtil.ISerialPortBedOnclickString, IMediaPlayerVolume, IVvsipServiceListener
         , SipCallBackI, MediaPlayerManger.PlayMusicCompleteListener {
 
     //初始化数据实体
@@ -593,6 +593,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         serialPortUtil = ((MyApplication) this.getApplication()).serialPortUtil;
         if (serialPortUtil != null) {
             serialPortUtil.setOnDataReceiveListener(this);
+            serialPortUtil.setOnDataReceiveStringListener(this);
             setDoorLight(serialPortUtil, "111");//初始化白色
         }
 
@@ -617,6 +618,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         super.onNewIntent(intent);
         if (serialPortUtil != null) {
             serialPortUtil.setOnDataReceiveListener(this);
+            serialPortUtil.setOnDataReceiveStringListener(this);
         }
 
         iMediaPlayerVolume = this;
@@ -1314,7 +1316,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     //---------------------------------------------串口点击事件监听----------------------------------------------------------
     @Override
     public void serialPortBedOnclick(byte[] buffer) {
-        LogUtil.e("serialPortBedOnclick", "buffer[0]:" + buffer[0] + "buffer[1]:" + buffer[1] + "buffer[2]:" + buffer[2] + "buffer[3]:" + buffer[3] + "buffer[4]:"
+        LogUtil.e("serialPortBedOnclick", "CallingBedActivity: buffer[0]:" + buffer[0] + "buffer[1]:" + buffer[1] + "buffer[2]:" + buffer[2] + "buffer[3]:" + buffer[3] + "buffer[4]:"
                 + buffer[4] + "buffer[5]:" + buffer[5]);
         if (buffer[7] == 1) { //卫生间短按松开
             CallingBedActivity.this.runOnUiThread(new Runnable() {
@@ -1540,6 +1542,11 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         }
     }
 
+    @Override
+    public void serialPortBedOnclickString(String str) {
+        //LogUtil.d("serialPortBedOnclickString", "CallingBedActivity: " + str);
+    }
+
     //---------------------------------------------串口点击事件监听----------------------------------------------------------
 
     private long localMillsCallNurse = 0;//呼叫护士拨打的时刻

+ 1 - 1
app/src/main/java/com/wdkl/callingbed/ui/InitActivity.java

@@ -427,7 +427,7 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
         try {
             String newStr = CutSerialPortUtil.delHeadAndEnd(str, "$", "#");
             String content[] = newStr.split(",");
-            LogUtil.d("serialPortBedOnclickString", "newStr==" + newStr);
+            LogUtil.d("serialPortBedOnclickString", "InitActivity newStr==" + newStr);
             switch (content[0]) {
                 case "V":
                     Constants.MCU_VERSION_NUMBER = content[1].substring(0, 14);

+ 12 - 7
bedlib/src/main/java/serialporttest/utils/SerialPortUtil.java

@@ -1,5 +1,6 @@
 package serialporttest.utils;
 
+import android.text.TextUtils;
 import android.util.Log;
 
 import java.io.File;
@@ -191,14 +192,18 @@ public class SerialPortUtil {
                     }
 
                     String str = data.substring(data.indexOf("$") + 1, data.indexOf("#"));
-                    DataIndex = Integer.parseInt(str.substring(3, 4));
-                    DataValue = Integer.parseInt(str.substring(5, 6));
-                    if (DataIndex < 8) {
-                        KeyValue[DataIndex] = (byte) DataValue;
-                    }
-                    if (null != onDataReceiveListener) {
-                        onDataReceiveListener.serialPortBedOnclick(KeyValue);
+                    if (TextUtils.isDigitsOnly(str.substring(3, 4)) && TextUtils.isDigitsOnly(str.substring(5, 6))) {
+                        DataIndex = Integer.parseInt(str.substring(3, 4));
+                        DataValue = Integer.parseInt(str.substring(5, 6));
+
+                        if (DataIndex < 8) {
+                            KeyValue[DataIndex] = (byte) DataValue;
+                        }
+                        if (null != onDataReceiveListener) {
+                            onDataReceiveListener.serialPortBedOnclick(KeyValue);
+                        }
                     }
+
                     //======================================
                     for (int i = 0; i < KeyValue.length; i++) {
                         if (KeyValue[i] > 0) KeyValue[i] = -1;