问题描述
我有一台配备蓝牙 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 (将#修改为@)