Quellcode durchsuchen

1、新增鱼跃血压计

guanxinyi vor 1 Jahr
Ursprung
Commit
a056ac0504

BIN
app/libs/analysis-release.jar


+ 6 - 0
app/src/main/java/vinno/sportinspect/config/Constant.java

@@ -40,6 +40,12 @@ public class Constant {
     public static final String YUWELL_TEP_SERVER_UUID = "00001809-0000-1000-8000-00805f9b34fb";
     public static final String YUWELL_TEP_CHARACTERISTICS_UUID = "00002a1c-0000-1000-8000-00805f9b34fb";
 
+    //鱼跃 血压计
+    public static final String YUWELL_YE620C_SERVER_UUID = "00001810-0000-1000-8000-00805f9b34fb"; //serverid
+    public static final String YUWELL_YE620C_CHARACTERISTICS_WRITE_UUID = "00002A35-0000-1000-8000-00805f9b34fb"; // 血压写入
+    public static final String YUWELL_YE620C_CHARACTERISTICS_WRITE_ICP_UUID = "00002A36-0000-1000-8000-00805f9b34fb"; // 血压中间袖带压icp写入
+    public static final String YUWELL_YE620C_CHARACTERISTICS_READ_UUID = "00002A35-0000-1000-8000-00805f9b34fb"; //通知
+
     //恩普生尿液分析仪
     public static final String EMP_SERVER_UUID = "0000ffe0-0000-1000-8000-00805f9b34fb";
     public static final String EMP_CHARACTERISTICS_UUID = "0000ffe1-0000-1000-8000-00805f9b34fb";

+ 2 - 0
app/src/main/java/vinno/sportinspect/config/DevicesConstant.java

@@ -25,6 +25,8 @@ public class DevicesConstant {
                     "750X-", "NibpByBP750X", true, "血压测量", "xueyaceliang", false, EnumDevicesType.BLE.value()));
             add(new Device(3, EnumDeviceTypes.NIBP.typeName(), "BP700B", "血压", "血压(威宝龙)", "00:00:00:00:00:00",
                     "700B-00150307", "NibpByBP750X", true, "血压测量", "xueyaceliang", false, EnumDevicesType.BLE.value()));
+            add(new Device(3, EnumDeviceTypes.NIBP.typeName(), "YE620C", "血压", "血压(鱼跃)", "00:00:00:00:00:00",
+                    "YE620C", "NibpByYE620C", true, "血压测量", "xueyaceliang", false, EnumDevicesType.BLE.value()));
             // 700B-00150307
             add(new Device(4, EnumDeviceTypes.TEMP.typeName(), "DT-8836", "体温计", "体温计(家测宝)", "00:00:00:00:00:00",
                     "IR Thermo", "TempByDT", true, "额温枪", "temp", false, EnumDevicesType.BLE.value()));

+ 187 - 0
app/src/main/java/vinno/sportinspect/devices/NibpByYE620C.java

@@ -0,0 +1,187 @@
+package vinno.sportinspect.devices;
+
+
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattService;
+import android.util.Log;
+import android.view.View;
+import android.widget.Toast;
+
+import androidx.annotation.Keep;
+
+import com.clj.fastble.BleManager;
+import com.clj.fastble.callback.BleGattCallback;
+import com.clj.fastble.callback.BleIndicateCallback;
+import com.clj.fastble.callback.BleNotifyCallback;
+import com.clj.fastble.callback.BleWriteCallback;
+import com.clj.fastble.data.BleDevice;
+import com.clj.fastble.exception.BleException;
+
+import org.json.JSONObject;
+
+import java.util.Date;
+import java.util.UUID;
+
+import vinno.sportinspect.bean.NibpEntity;
+import vinno.sportinspect.config.Constant;
+import vinno.sportinspect.config.StatusConstant;
+import vinno.sportinspect.utils.LogUtil;
+import vinno.sportinspect.utils.vian.BTUtils;
+import vinno.sportinspect.utils.vian.DataList;
+import vinno.sportinspect.utils.vian.GlobalCache;
+import vinno.sportinspect.utils.vian.RecordList;
+import vinno.sportinspect.utils.vian.VianConstant;
+
+import com.yuwell.analysis.BPMAnalyst;
+import com.yuwell.analysis.data.bpm.BPMData;
+import com.yuwell.analysis.data.gls.CholesterolData;
+import com.yuwell.analysis.data.gls.GlucoseData;
+import com.yuwell.analysis.data.gls.HemoglobinData;
+import com.yuwell.analysis.data.gls.UrineData;
+
+
+/**
+ * @name: NibpByYE620C
+ * @author: baka
+ * @time: 2023/12/12 13:22
+ * @version: 1.0
+ * @description: 鱼跃血压计
+ */
+@Keep
+public class NibpByYE620C extends BaseDevices {
+    private boolean newMeasure = true;
+    private RecordList rec_n = new RecordList();
+    private BPMAnalyst bpmAnalyst;
+    private BluetoothGattService mBpmService;
+    private BluetoothGattCharacteristic mMeasurement;
+    private BluetoothGattCharacteristic mICPMeasurement;
+    private BluetoothGattService otaService;
+    private BluetoothGattCharacteristic otaCharacteristic;
+    @Override
+    public void BLE_CONNECT(JSONObject params) {
+        super.BLE_CONNECT(params);
+        connect(mac, (bleDevice, isFirst) -> {
+            if (isFirst == 0) connect(bleDevice);
+        });
+    }
+
+    @Override
+    public void parseData(byte[] data) {
+        bpmAnalyst.setBMPCallbacks(new BPMAnalyst.BMPCallback() {
+            @Override
+            public void onMeasureStart() {
+
+            }
+
+            @Override
+            public void onIntermediateCuffPressureRead(BluetoothDevice bluetoothDevice, BPMData bpmData) {
+                // sbp此时为中间袖带压力
+                LogUtil.d("ICP:" + bpmData.sbp);
+                NibpEntity entity = new NibpEntity();
+                entity.PRESSURE = bpmData.sbp;
+                entity.PULSE_STATUS = bpmData.sbp > 0 ? 1 : 0;
+                entity.PULSE = 0;
+                entity.SSY = 0;
+                entity.SZY = 0;
+                callBack(StatusConstant.BLE_ACTION_CMD_RUNTIME_DATA, entity);
+            }
+
+            @Override
+            public void onBloodPressureMeasurementRead(BluetoothDevice bluetoothDevice, BPMData bpmData) {
+                LogUtil.d( "血压测量值:" + bpmData.dbp + " " + bpmData.sbp);
+                NibpEntity entity = new NibpEntity();
+                entity.PULSE_STATUS = 0;
+                entity.PRESSURE = 0;
+                entity.PULSE = bpmData.pulseRate;
+                entity.SSY = (bpmData.sbp & 0x00FF);
+                entity.SZY = (bpmData.dbp & 0x00FF);
+                callBack(StatusConstant.BLE_ACTION_CMD_MEASURE_DATA, entity);
+            }
+        });
+    }
+
+    private void connect(final BleDevice bleDevice) {
+        BleManager.getInstance().connect(bleDevice, new BleGattCallback() {
+
+            @Override
+            public void onStartConnect() {
+                LogUtil.d("开始连接");
+            }
+
+            @Override
+            public void onConnectFail(BleDevice bleDevice, BleException exception) {
+                LogUtil.d("连接失败");
+            }
+
+            @Override
+            public void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status) {
+                // 连接血压计
+                mBpmService = gatt.getService(UUID.fromString(Constant.YUWELL_YE620C_SERVER_UUID));
+                if (mBpmService != null) {
+                    mMeasurement = mBpmService.getCharacteristic(UUID.fromString(Constant.YUWELL_YE620C_CHARACTERISTICS_WRITE_UUID));
+                    mICPMeasurement = mBpmService.getCharacteristic(UUID.fromString(Constant.YUWELL_YE620C_CHARACTERISTICS_WRITE_ICP_UUID));
+                }
+                notifyBPM(bleDevice);
+
+            }
+
+            @Override
+            public void onDisConnected(boolean isActiveDisConnected, BleDevice bleDevice, BluetoothGatt gatt, int status) {
+                if (isActiveDisConnected) {
+                } else {
+                }
+
+            }
+        });
+    }
+    private void notifyBPM(final BleDevice bleDevice) {
+        BleManager.getInstance().notify(bleDevice, mBpmService.getUuid().toString(), mICPMeasurement.getUuid().toString(),
+                new BleNotifyCallback() {
+                    @Override
+                    public void onNotifySuccess() {
+                        LogUtil.d("=============血压通知开启成功");
+                        indicateICP(bleDevice);
+                    }
+
+                    @Override
+                    public void onNotifyFailure(BleException exception) {
+                        LogUtil.d("=============onNotifyFailure" + exception.getDescription() + "==" + exception.toString());
+                        BleManager.getInstance().stopNotify(bleDeviceConnection, Constant.YUWELL_YE620C_SERVER_UUID, Constant.YUWELL_YE620C_CHARACTERISTICS_READ_UUID);
+                        disConnectDevice();
+                        callBack(StatusConstant.BLE_REGISTER_NOTIFY_FAIL);
+                    }
+
+                    @Override
+                    public void onCharacteristicChanged(byte[] data) {
+                        bpmAnalyst = BPMAnalyst.getInstance();
+                        bpmAnalyst.onICPnotifyValueChanged(bleDevice.getDevice(), data);
+                        parseData(data);
+                    }
+                });
+    }
+
+    private void indicateICP(final BleDevice bleDevice) {
+        BleManager.getInstance().indicate(bleDevice, mBpmService.getUuid().toString(), mMeasurement.getUuid().toString(),
+                new BleIndicateCallback() {
+                    @Override
+                    public void onIndicateSuccess() {
+                        LogUtil.d("=============ICP通知开启成功");
+                    }
+
+                    @Override
+                    public void onIndicateFailure(BleException exception) {
+                        LogUtil.d("=============ICP通知开启失败"+ exception.toString());
+
+                    }
+
+                    @Override
+                    public void onCharacteristicChanged(byte[] data) {
+                        LogUtil.d("=============onCharacteristicChanged changed");
+                        bpmAnalyst.onBpmNotifyValueChanged(bleDevice.getDevice(), data);
+                    }
+                });
+    }
+
+}