BLE Windows 连接的“信号量超时期限已过期”错误

问题描述

我有一台配备蓝牙 5.0 (BLE) 和 Windows 10 系统的设备,我想使用 C++ 与之连接,经典的蓝牙连接(使用串行或 COM 端口)对我不起作用,所以我必须使用 Gatt .我已经设法从蓝牙面板将所述设备与 Windows 配对,它的工作方式与 Windows 中的列表设备服务、功能和描述符相同;问题是,当我尝试修改描述符以便我可以使用以下代码获取通知时:

FileHandleWrapper hBleService(
    openBleInterfaceHandle(
        mapServiceUUID(&_pGattService->ServiceUuid),GENERIC_READ | GENERIC_WRITE));

HRESULT hr = BluetoothGATTSetDescriptorValue(
    hBleService.get(),_pGattDescriptor,newValue,BLUetoOTH_GATT_FLAG_NONE);

LPSTR messageBuffer = nullptr;
size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYstem | FORMAT_MESSAGE_IGnorE_INSERTS,NULL,errorMessageID,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&messageBuffer,NULL);

string message(messageBuffer,size);

LocalFree(messageBuffer);

if (S_OK != hr) {
    stringstream msg;
    msg << "Error is: ["
        << message.replace(message.end() - 3,message.end(),"") << "]";

    throw BleException(msg.str());
}

我收到 HRESULT ERROR_SEM_TIMEOUT 错误,设备与其他系统(如 Android)成功连接,有谁知道为什么会发生此错误以及如何处理?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)