Qt蓝牙:获取电池电量值通知

Qt蓝牙:获取电池电量值通知,qt,bluetooth-lowenergy,qt-creator,uuid,qtbluetooth,Qt,Bluetooth Lowenergy,Qt Creator,Uuid,Qtbluetooth,我正在开发一个程序来读取智能手表的一些特性(心率、电池电量、湿度和温度)。 为了做到这一点,我遵循心率游戏的例子。从这个例子中,我可以从智能手机上的模拟器中获取心率通知,但对于其他参数,我无法获取值。 例如,对于心率,我正在为stateChanged执行此操作:(connect(m_服务,&QLowEnergyService::stateChanged,this,&DeviceHandler::serviceStateChanged);) 这是更新值:(connect(m_服务,&QLowEne

我正在开发一个程序来读取智能手表的一些特性(心率、电池电量、湿度和温度)。 为了做到这一点,我遵循心率游戏的例子。从这个例子中,我可以从智能手机上的模拟器中获取心率通知,但对于其他参数,我无法获取值。 例如,对于心率,我正在为stateChanged执行此操作:(
connect(m_服务,&QLowEnergyService::stateChanged,this,&DeviceHandler::serviceStateChanged);

这是更新值:(
connect(m_服务,&QLowEnergyService::characteristicChanged,this,&DeviceHandler::updateValue);

auto data=reinterpret_cast(value.constData());
quint8标志=*数据;
if(标志&0x1)//HR 16位?否则为8位
hrvalue=静态(qFromLittleEndian(数据[1]);
其他的
hrvalue=静态_-cast(数据[1]);
qCDebug(BLELog)
if (uuid == QBluetoothUuid(QBluetoothUuid::HeartRate)) {
        const QLowEnergyCharacteristic hrChar = m_service->characteristic(QBluetoothUuid(QBluetoothUuid::HeartRateMeasurement));
        m_notificationDesc = hrChar.descriptor(QBluetoothUuid::ClientCharacteristicConfiguration);
        m_service->writeDescriptor(m_notificationDesc, QByteArray::fromHex("0100"));
auto data = reinterpret_cast<const quint8 *>(value.constData());
quint8 flags = *data;


 if (flags & 0x1) // HR 16 bit? otherwise 8 bit
     hrvalue = static_cast<int>(qFromLittleEndian<quint16>(data[1]));
 else
     hrvalue = static_cast<int>(data[1]);
qCDebug(BLELog) << hrvalue;