浏览代码

增加护理灯控制

weizhengliang 3 年之前
父节点
当前提交
8c7cd92f2c

+ 15 - 0
bedlib/src/main/java/serialporttest/utils/StringUtils.java

@@ -976,6 +976,21 @@ public class StringUtils {
     }
     }
 
 
     /**
     /**
+     * 16进制字符串转成一个int类型的
+     *
+     * @param str
+     * @return
+     */
+    public static int parseHex2Int(String str) {
+        try {
+            return Integer.decode("0x"+str);
+        } catch (Exception e) {
+            //
+        }
+        return 0;
+    }
+
+    /**
      * 判断一个字符串 能否转成一个Double类型的
      * 判断一个字符串 能否转成一个Double类型的
      *
      *
      * @param str
      * @param str

+ 19 - 0
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -94,6 +94,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
     private var sipServiceRunning :Boolean = false
     private var sipServiceRunning :Boolean = false
     private var initialized :Boolean = false
     private var initialized :Boolean = false
     private var updating :Boolean = false
     private var updating :Boolean = false
+    private var hasNurseValue :Boolean = false
 
 
     //通话界面fragment
     //通话界面fragment
     private var skyCallFragment: Fragment? = null
     private var skyCallFragment: Fragment? = null
@@ -210,6 +211,9 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
         nurseConfigAdpter = NurseConfigAdpter(activity, configList)
         nurseConfigAdpter = NurseConfigAdpter(activity, configList)
         rv_left_list.layoutManager = linearLayout
         rv_left_list.layoutManager = linearLayout
         rv_left_list.adapter = nurseConfigAdpter
         rv_left_list.adapter = nurseConfigAdpter
+
+        //初始化灭掉护理灯
+        SerialPortHelper.dismissNurseLedLight()
     }
     }
 
 
     //数据加载错误
     //数据加载错误
@@ -346,6 +350,13 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
                 configList.set(index, e)
                 configList.set(index, e)
             }
             }
             nurseConfigAdpter.updateData(configList)
             nurseConfigAdpter.updateData(configList)
+            //护理灯刷新
+            hasNurseValue = true
+            if (Constant.day_state == 0) {
+                SerialPortHelper.setNurseLedLight2(SettingConfig.getExtensionDaytimeLEDBrightness(activity), configList)
+            } else {
+                SerialPortHelper.setNurseLedLight2(SettingConfig.getExtensionNightLEDBrightness(activity), configList)
+            }
         }
         }
     }
     }
 
 
@@ -531,6 +542,10 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
                     SettingConfig.getExtensionDaytimeSystemVolume(this)
                     SettingConfig.getExtensionDaytimeSystemVolume(this)
                 )
                 )
                 view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_daylight)
                 view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_daylight)
+
+                if (hasNurseValue) {
+                    SerialPortHelper.setNurseLedLight2(SettingConfig.getExtensionDaytimeLEDBrightness(activity), configList)
+                }
             }
             }
             Constant.day_state = 0
             Constant.day_state = 0
         } else {
         } else {
@@ -551,6 +566,10 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
                     SettingConfig.getExtensionNightSystemVolume(this)
                     SettingConfig.getExtensionNightSystemVolume(this)
                 )
                 )
                 view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_night)
                 view_title_layout_iv_day_night.setImageResource(R.mipmap.ic_night)
+
+                if (hasNurseValue) {
+                    SerialPortHelper.setNurseLedLight2(SettingConfig.getExtensionNightLEDBrightness(activity), configList)
+                }
             }
             }
             Constant.day_state = 1
             Constant.day_state = 1
         }
         }

+ 111 - 0
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/helper/SerialPortHelper.java

@@ -1,6 +1,11 @@
 package com.wdkl.app.ncs.callingbed.helper;
 package com.wdkl.app.ncs.callingbed.helper;
 
 
+import com.wdkl.ncs.android.middleware.model.dto.NurseConfigDto;
+
+import java.util.ArrayList;
+
 import serialporttest.utils.SerialPortUtil;
 import serialporttest.utils.SerialPortUtil;
+import serialporttest.utils.StringUtils;
 
 
 public class SerialPortHelper {
 public class SerialPortHelper {
 
 
@@ -26,4 +31,110 @@ public class SerialPortHelper {
     public static void resetDevice() {
     public static void resetDevice() {
         SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NET_STATUS , "1", "F");
         SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NET_STATUS , "1", "F");
     }
     }
+
+    /**
+     * 设置护理灯
+     */
+    public static void setNurseLedLight(final int brightnessPercent, final String oneColor, final String twoColor, final String threeColor, final String fourColor, final String fiveColor) {
+        //需要在子线程中设置
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    float p = (float) brightnessPercent / 100;
+                    if (StringUtils.notEmpty(oneColor)) {
+                        int rr = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(oneColor, 0, 2))) * p);
+                        int gg = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(oneColor, 2, 4))) * p);
+                        int bb = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(oneColor, 4, 6))) * p);
+                        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NURSELIGHT + "0", beComeDoubleStr(rr) + beComeDoubleStr(gg) + beComeDoubleStr(bb), "F");
+                    }
+                    Thread.sleep(300);
+                    if (StringUtils.notEmpty(twoColor)) {
+                        int rr = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(twoColor, 0, 2))) * p);
+                        int gg = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(twoColor, 2, 4))) * p);
+                        int bb = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(twoColor, 4, 6))) * p);
+                        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NURSELIGHT + "1", beComeDoubleStr(rr) + beComeDoubleStr(gg) + beComeDoubleStr(bb), "F");
+                    }
+                    Thread.sleep(300);
+                    if (StringUtils.notEmpty(threeColor)) {
+                        int rr = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(threeColor, 0, 2))) * p);
+                        int gg = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(threeColor, 2, 4))) * p);
+                        int bb = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(threeColor, 4, 6))) * p);
+                        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NURSELIGHT + "2", beComeDoubleStr(rr) + beComeDoubleStr(gg) + beComeDoubleStr(bb), "F");
+                    }
+                    Thread.sleep(300);
+                    if (StringUtils.notEmpty(fourColor)) {
+                        int rr = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(fourColor, 0, 2))) * p);
+                        int gg = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(fourColor, 2, 4))) * p);
+                        int bb = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(fourColor, 4, 6))) * p);
+                        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NURSELIGHT + "3", beComeDoubleStr(rr) + beComeDoubleStr(gg) + beComeDoubleStr(bb), "F");
+                    }
+                    Thread.sleep(300);
+                    if (StringUtils.notEmpty(fiveColor)) {
+                        int rr = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(fiveColor, 0, 2))) * p);
+                        int gg = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(fiveColor, 2, 4))) * p);
+                        int bb = (int) ((StringUtils.parseFloat(StringUtils.substringByLengh(fiveColor, 4, 6))) * p);
+                        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NURSELIGHT + "4", beComeDoubleStr(rr) + beComeDoubleStr(gg) + beComeDoubleStr(bb), "F");
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }).start();
+    }
+
+    /**
+     * 设置护理灯2
+     */
+    public static void setNurseLedLight2(final int brightnessPercent, final ArrayList<NurseConfigDto> nurseConfigs) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    float p = (float) brightnessPercent / 100;
+                    for (int i = 0; i < nurseConfigs.size(); i++) {
+                        String color = nurseConfigs.get(i).getNurseColorRbg();
+                        if (StringUtils.notEmpty(color)) {
+                            int rr = (int) ((StringUtils.parseHex2Int(StringUtils.substringByLengh(color, 0, 2))) * p);
+                            int gg = (int) ((StringUtils.parseHex2Int(StringUtils.substringByLengh(color, 2, 4))) * p);
+                            int bb = (int) ((StringUtils.parseHex2Int(StringUtils.substringByLengh(color, 4, 6))) * p);
+                            SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NURSELIGHT + i, beComeDoubleStr(rr) + beComeDoubleStr(gg) + beComeDoubleStr(bb), "F");
+                        }
+                        Thread.sleep(150);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }).start();
+    }
+
+    /**
+     * 熄灭护理灯
+     */
+    public static void dismissNurseLedLight() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    for (int i = 0; i < 5; i++) {
+                        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NURSELIGHT + i, "000000", "F");
+                        Thread.sleep(150);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }).start();
+    }
+
+    private static String beComeDoubleStr(int b) {
+        if (b >= 0 && b < 10) {
+            return "0" + b;
+        } else if (b >= 10 && b < 100) {
+            return "" + b;
+        } else {
+            return "99";
+        }
+    }
 }
 }

+ 2 - 2
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/settings/SettingConfig.java

@@ -31,10 +31,10 @@ public class SettingConfig {
     private static final String KEY_SP_EXTENSION_NIGHT_BRIGHTNESS = "KEY_SP_EXTENSION_NIGHT_BRIGHTNESS";
     private static final String KEY_SP_EXTENSION_NIGHT_BRIGHTNESS = "KEY_SP_EXTENSION_NIGHT_BRIGHTNESS";
     private static final int extension_night_brightness = 50;
     private static final int extension_night_brightness = 50;
 
 
-    //分机LED白天亮度
+    //分机护理灯白天亮度
     private static final String KEY_SP_EXTENSION_DAYTIME_LED_BRIGHTNESS = "KEY_SP_EXTENSION_DAYTIME_LED_BRIGHTNESS";
     private static final String KEY_SP_EXTENSION_DAYTIME_LED_BRIGHTNESS = "KEY_SP_EXTENSION_DAYTIME_LED_BRIGHTNESS";
     private static final int extension_daytime_led_brightness = 80;
     private static final int extension_daytime_led_brightness = 80;
-    //分机LED晚上亮度
+    //分机护理灯晚上亮度
     private static final String KEY_SP_EXTENSION_NIGHT_LED_BRIGHTNESS = "KEY_SP_EXTENSION_NIGHT_LED_BRIGHTNESS";
     private static final String KEY_SP_EXTENSION_NIGHT_LED_BRIGHTNESS = "KEY_SP_EXTENSION_NIGHT_LED_BRIGHTNESS";
     private static final int extension_night_led_brightness = 50;
     private static final int extension_night_led_brightness = 50;