mobile CCTV,mobile surveillance,police body worn cameras

标题: 调试蓝牙手环配套智能安全帽的通信代码 [打印本页]

author: mdm    time: 2024-7-19 09:41
标题: 调试蓝牙手环配套智能安全帽的通信代码
我们在调试蓝牙手环配套智能安全帽的通信代码,您好,我消息可以发送成功但是收不到返回的包信息
byte[] requestRealTimeHeartRateData = new byte[]{
        0x68, // 包头
        0x06, // 功能码:获取实时数据
        0x01, 0x00, // 载荷长度
        0x00, // 请求实时心率数据
        0x6F,// 校验码
        0x16 // 包尾
};

这是我发送的消息,获取实时心率的,不知道有没有问题,我上午再试下别的消息

author: Arthur    time: 2024-7-19 10:31
命令是对的,你写入的uuid是多少,读取的uuid又是多少? 读取和写入的uuid是不同的。

author: mdm    time: 2024-7-19 10:44
Arthur post on2024-7-19 10:31
命令是对的,你写入的uuid是多少,读取的uuid又是多少? 读取和写入的uuid是不同的。

我在onCharacteristicChanged里监听的的代码是if (characteristic.getUuid().equals(UUID.fromString("0000FFF1-0000-1000-8000-00805F9B34FB"))) {
    // 处理来自FFF1的数据
    byte[] data = characteristic.getValue();
    String ddata = Arrays.toString(data);
    Log.d(TAG, "onCharacteristicChanged: data " + ddata);
} else if (characteristic.getUuid().equals(UUID.fromString("00002A37-0000-1000-8000-00805F9B34FB"))) {
    // 处理心率数据
    byte[] heartRateData = characteristic.getValue();
    // 解析心率数据
    int heartRate = heartRateData[0]; // 假设心率数据就是第一个字节
    Log.d(TAG, "onCharacteristicChanged: heartRate " + heartRate);
}

author: mdm    time: 2024-7-19 10:45
这是发送的: BluetoothGattService communicationService = bluetoothGatt.getService(SERVICE_UUID_COMMUNICATION);
            if (communicationService != null) {
                BluetoothGattCharacteristic sendCharacteristic = communicationService.getCharacteristic(CHAR_UUID_SEND);
                if (sendCharacteristic != null) {
                    sendCharacteristic.setValue(data);
                    String stada = Arrays.toString(data);
                    @SuppressLint("MissingPermission")
                    boolean status = bluetoothGatt.writeCharacteristic(sendCharacteristic);
                    // Handle write status
                    if (status) {
                        Log.d(TAG, "数据发送成功 " + stada);
//                        parseRealTimeHeartRateData(heartRateData);
                    } else {
                        Log.e(TAG, "数据发送失败");
                    }
                }else
                    Log.d(TAG, "writeDataToDevice: shibaile");
            }发送是可以成功发送的

author: Arthur    time: 2024-7-19 11:24
new byte[]{0x68, 0x03, 0x00, 0x00, 0x6b, 0x16}

看看获取电量能不能成功。
author: Arthur    time: 2024-7-19 11:47
  1. BluetoothGattCharacteristic characteristic = xxx;
  2.         bluetoothGatt.setCharacteristicNotification(characteristic, true);
  3.         BluetoothGattDescriptor bluetoothGattDescriptor = characteristic.getDescriptor(UUID.fromString("xxx"));
  4.         bluetoothGattDescriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
  5.         bluetoothGatt.writeDescriptor(bluetoothGattDescriptor);
copycode

这个调下试试
author: mdm    time: 2024-7-21 18:14
Arthur post on2024-7-19 11:24
new byte[]{0x68, 0x03, 0x00, 0x00, 0x6b, 0x16}

看看获取电量能不能成功。

试了,还是只能发送收不到消息,发送都是成功的
author: mdm    time: 2024-7-21 18:14
Arthur post on2024-7-19 11:47
这个调下试试

获取不到描述符,描述符为空,加了这段代码也没啥用
author: mdm    time: 2024-7-21 18:32
日志里打印BluetoothGatt: setCharacteristicNotification() - uuid: 0000fff1-0000-1000-8000-00805f9b34fb enable: true,就是我能接受到消息的意思吧?
author: mdm    time: 2024-7-21 18:53
Arthur post on2024-7-19 11:47
这个调下试试

BluetoothGattService heartRateService = gatt.getService(SERVICE_UUID_COMMUNICATION);
                if (heartRateService != null) {
                    BluetoothGattCharacteristic heartRateCharacteristic = heartRateService.getCharacteristic(CHAR_UUID_RECEIVE);
                    gatt.setCharacteristicNotification(heartRateCharacteristic, true);
                    BluetoothGattDescriptor bluetoothGattDescriptor = heartRateCharacteristic.getDescriptor(CHAR_UUID_RECEIVE);
                    if (bluetoothGattDescriptor != null) {
                        bluetoothGattDescriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
                        bluetoothGatt.writeDescriptor(bluetoothGattDescriptor);
                    } else {
                        // 处理bluetoothGattDescriptor为null的情况
                        Log.e(TAG, "Descriptor not found for characteristic");
                    }
//private static final UUID SERVICE_UUID_COMMUNICATION = UUID.fromString("0000FFF0-0000-1000-8000-00805F9B34FB");
   //private static final UUID CHAR_UUID_RECEIVE = UUID.fromString("0000FFF1-0000-1000-8000-00805F9B34FB");
author: besovideo    time: 2024-7-22 10:10
手环是C5
author: mdm    time: 2024-7-22 10:13
besovideo post on2024-7-22 10:10
手环是C5

是,设备是c5
author: besovideo    time: 2024-7-22 10:21
可参考这个代码,https://imyfit.github.io/imyfit

author: mdm    time: 2024-7-22 10:25
besovideo post on2024-7-22 10:21
可参考这个代码,https://imyfit.github.io/imyfit

这上面没找到代码,之前已经看过了。这就是api开发文档,还是我没找对吗?
author: mdm    time: 2024-7-22 10:53
我的几个服务id和特征值的uuid没有写错吧?现在就是一点点在排查了
author: Arthur    time: 2024-7-22 16:11
写了一个demo,你测试下。

author: mdm    time: 2024-7-24 19:42
请问下data: 68 AA 0A 00 00 1E 02 04 00 76 44 4B 61 00 A6 16
在测血压的时候传回这串数据,但是没找到功能码是0XAA的,请问下这是什么原因
author: coldflame    time: 2024-7-26 21:25
C5不支持血压




欢迎光临 mobile CCTV,mobile surveillance,police body worn cameras (http://bbs.besovideo.com:8067/) Powered by Discuz! X3.2